futhark

A data-parallel functional programming language

ISC License

Stars
2.3K
Committers
67

Bot releases are visible (Hide)

futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • 1c921c3: Mention #2009. (Troels Henriksen)
  • 2666a6e: Fix #1993. (Troels Henriksen)
  • 1dc25af: Avoid duplication of existential sizes. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • c665832: Clarify. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • 8fc7e8f: Start on another useful section. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • a5e1700: Restore ISPC backend. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • 960968e: Define this centrally. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • cb567eb: Switch away from deprecated names. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • ef2387b: mapOnName is actually always on a QualName. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • 01a4f23: Do not astMap names in binding position. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • e17e260: Another #1997-related fix. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] about 1 year ago

Commits

  • 55a17e3: Add another small simplification rule. (Troels Henriksen)
futhark - nightly

Published by github-actions[bot] over 1 year ago

Commits

  • 3542b4a: Better prettyprinting of ModExp. (Troels Henriksen)
  • 79d4c74: Fix #1992. (Troels Henriksen)
futhark - 0.25.2

Published by github-actions[bot] over 1 year ago

Added

  • Flattening/unflattening as the final operation in an entry point no
    only forces a copy.

  • The opencl backend no longer always fails on platforms that do
    not support 64-bit integer atomics, although it will still fail if
    the program needs them.

  • Various performance improvements to the compiler itself;
    particularly the frontend. It should be moderately faster.

Fixed

  • Code generation for f16 literals in CUDA backend (#1979).

  • Branches that return arrays differing in sign of their stride
    (#1984).

futhark - 0.25.1

Published by github-actions[bot] over 1 year ago

Added

  • Arbitrary expressions of type i64 are now allowed as sizes. Work
    by Lubin Bailly.

  • New prelude function resize.

Removed

  • The prelude functions concat_to and flatten_to. They are often
    not necessary now, and otherwise resize is available.

Changed

  • The prelude functions flatten and unflatten (and their
    multidimensional variants), as well as split, now have more
    precise types.

  • Local and anonymous (lambda) functions that must return unique
    results (because they are passed to a higher order function that
    requires this) must now have an explicit return type ascription that
    declares this, using *. This is very rare (in practice
    unobserved) in real programs.

Fixed

  • futhark doc produced some invalid links.

  • flatten did not properly check for claimed negative array sizes.

  • Type checker crash on some ill-typed programs (#1926).

  • Some soundness bugs in memory short circuiting (#1927, #1930).

  • Another compiler crash in block tiling (#1933, #1940).

  • Global arrays with size parameters no longer have aliases.

  • futhark eval no longer crashes on ambiguously typed expressions (#1946).

  • A code motion pass was ignorant of consumption constraints, leading
    to compiler crash (#1947).

  • Type checker could get confused and think unknown sizes were
    available when they really weren't (#1950).

  • Some index optimisations removed certificates (#1952).

  • GPU backends can now transpose arrays whose size does not fit in a
    32-bit integer (#1953).

  • Bug in alias checking for the core language type checker (#1949).
    Actually (finally) a proper fix of #803.

  • Defunctionalisation duplicates less code (#1968).

futhark - 0.24.3

Published by github-actions[bot] over 1 year ago

Fixed

  • Certain cases of noninlined functions in multicore backend.

  • Defunctionalisation of match where the constructors carry
    functions (#1917).

  • Shape coercions involving sum types (#1918). This required
    tightening the rules a little bit, so some coercions involving
    anonymous sizes may now be rejected. Add expected sizes as needed.

  • Defunctionalisation somtimes forgot about sizes bound at top level
    (#1920).

futhark - 0.24.2

Published by github-actions[bot] over 1 year ago

Added

  • futhark literate (and FutharkScript in general) is now able to do
    a bit of type-coercion of constants.

Fixed

  • Accumulators (produced by AD) had defective code generation for
    intra-group GPU kernel versions. (#1895)

  • The header file generated by --library contained a prototype for
    an undefined function. (#1896)

  • Crashing bug in LSP caused by stray undefined (#1907).

  • Missing check for anonymous sizes in type abbreviations (#1903).

  • Defunctionalisation crashed on projection of holes.

  • Loop optimisation would sometimes remove holes.

  • A potential barrier divergence for certain GPU kernels that fail
    bounds checking.

  • A potential infinite loop when looking up aliases (#1915).

  • futhark literate: less extraneous whitespace.

futhark - 0.24.1

Published by github-actions[bot] over 1 year ago

Added

  • The manifest file now lists which tuning parameters are relevant for
    each entry point. (#1884)

  • A command tuning_params has been added to the server protocol.

Changed

  • If part of a function parameter is marked as consuming ("unique"),
    the entire parameter is now marked as consuming.

Fixed

  • A somewhat obscure simplification rule could mess up use of memory.

  • Corner case optimisation for mapping over iota (#1874).

  • AD for certain combinations of map and indexing (#1878).

  • Barrier divergence in generated code in some exotic cases (#1883).

  • Handling of higher-order holes (#1885).

futhark - 0.23.1

Published by github-actions[bot] over 1 year ago

Added

  • f16.log1p/f32.log1p/f64.log1p by nbos (#1820).

  • Better syntax errors for invalid use of !.

  • futhark literate now supports a $loadaudio builtin function for loading
    audio to Futhark programs (#1829).

  • You can now mix consumption and higher-order terms in slightly more
    cases (#1836).

  • futhark pkg now invokes Git directly rather than scraping
    GitHub/GitLab. This means package paths can now refer to any Git
    repository, as long as git clone works. In particular, you can
    use private and self-hosted repositories.

  • Significant reduction in compilation time by doing internal sanity
    checks in separate thread.

  • New command: futhark eval. Evaluates Futhark expressions
    provided as command line arguments, optionally allowing a file
    import (#1408).

  • script input now allows the use of $loaddata.

  • Datasets used in futhark test and futhark bench can now be named
    (#1859).

  • New command futhark benchcmp by William Due.

Changed

  • The C API function futhark_context_new_with_command_queue() for
    the OpenCL backend has been replaced with a configuration setting
    futhark_context_config_set_command_queue().

Fixed

  • Minor parser regression that mostly affects the REPL (#1822).

  • Parser did not recognise custom infix operators that did not have a
    builtin operator as prefix (#1824).

  • GPU backends: expansion of irregular nested allocations involving
    consumption (#1837, #1838).

  • CLI executables now handle entry points with names that are not
    valid C identifiers (#1841).

  • Various oversights in the type checking of uniqueness annotations
    for higher-order functions (#1842).

  • Invalid short-circuiting could cause compiler crashes (#1843).

  • Defunctionalisation could mess up sum types, leading to invalid code
    generation by internalisation, leading to a compiler crash (#1847).

  • The #[break] attribute now provides the right environment to
    futhark repl, allowing local variables to be inspected.

  • Simplification of concatenations (#1851).

  • Array payloads in sum types no longer need parens (#1853).

  • When a file is loaded with futhark repl, local declarations are
    now available.

  • Missing alias propagation when pattern matching incompletely known
    sum types (#1855).

  • reduce_by_index and hist were in some cases unable to handle
    input sizes that do not fit in a 32-bit integer.

  • A fusion bug related to fusing across transpositions could result in
    a compiler crash (#1858).

futhark - 0.22.7

Published by github-actions[bot] almost 2 years ago

Added

  • futhark literate now supports an :audio directive for producing audio
    files from arrays of i8 (#1810).

  • futhark multicore now parallelises copies (#1799).

  • futhark multicore now uses an allocator that better handles large
    allocations (#1768).

Fixed

  • Some record field names could cause generation of invalid C API names (#1806).

  • Memory block merging was extremely and unnecessarily slow for
    programs with many entry points.

  • Simplification mistake could lead to out-of-bounds reads (#1808).

  • futhark lsp now handles some bookkeeping messages sent by Eglot.

  • Parser can now handle arbitrarily complex chaining of indexing and
    projection.

  • Detect and complain about source files without .fut extension (#1813).

  • Overly conservative checking of whether a function parameter is
    allowed by be consumed - it was disallowed if it contained any
    scalars (#1816).

futhark - 0.22.6

Published by github-actions[bot] almost 2 years ago

Added

  • Slightly better type errors for sum types (#1792).

  • Better tracing output in interpreter (#1795).

  • Improved optimisation of code that uses zero-element arrays
    (sometimes used for type witnesses).

Fixed

  • Mishandling of bounds checks in parallel backends could cause
    compiler crashes (#1791).

  • Mis-simplification of certain sequentialised scatters into
    single-element arrays (#1793).

  • Invalid scatter fusion would cause an internal compiler error
    (#1794).

  • The code generator flipped the order of match cases.

  • Simpification of concatenations (#1796).

  • Defunctionalisation error for fancy size programming (#1798).

  • Code generation for load-unbalanced reductions in multicore backend
    (#1800).

  • Futhark now works on CUDA 12 (#1801).

  • mul_hi and mad_hi for signed integer types now actually do
    signed multiplication (previously it was always unsigned).

futhark - 0.22.5

Published by github-actions[bot] almost 2 years ago

Added

  • Memory short circuiting now also applied to the multicore backend.

  • Fixes for AD of scan with nonscalar operators. Work by Lotte
    Bruun and Ulrik Larsen.

  • Generalised histograms now supported in AD. Work by Lotte Bruun and
    Ulrik Larsen.

  • OpenCL kernels now embed group size information, which can
    potentially be used for better register allocation by the OpenCL
    implementation.

Fixed

  • A hole in the type checker that allowed one to sneak functions out
    if conditionals (#1787).

  • futhark repl: unsigned integers are now printed correctly.

  • A bug in the type-checking of match (#1783).

  • Missing sequencing in type-checking of in-place let expressions (#1786).

  • Crash in defunctionaliser caused by duplicate parameter names
    (#1780).

  • Infelicities in multicore codegen for scans (#1777).