Skip to content

Releases: diku-dk/futhark

nightly

17 Jul 09:03
Compare
Choose a tag to compare
nightly Pre-release
Pre-release

Commits

0.25.31

21 May 13:53
Compare
Choose a tag to compare

Added

  • GPU backends: more efficient atomic operations on 8-bit and 16-bit quantities.
    This helps histograms on these types, as well as AD on programs that use
    f16.

  • Improved handling of long chains of flatten/unflatten/transpose
    operations.

  • New attributes: #[blank] and #[scratch].

  • A module type with-refinement may now have an existentially quantified size
    on its right-hand side.

  • Value specs in module types can now use section binding notation for symbolic
    names, and in fact this is the preferred form that is also used by futhark fmt. (#2266)

  • futhark profile now also prints proportion of total runtime for each cost centre.

  • Futhark no longer warns about entry points with opaque types.

  • Types such as foo.bar are now turned into foo_bar in the C API, rather
    than an ugly hash.

Fixed

  • Interpreter: some tricky aspects of size-lifted types (#2258).

  • Incorrect unused-name warning for named parameters in module types.

  • Size-lifted abstract types with hidden sizes could result in different sizes
    being incorrectly treated as the same size.

  • It was possible to make size-lifted types appear unlifted by using parametric
    types (#2268).

  • The same type would be mentioned twice in some type errors.

  • The type checker neglected to detect some cases of invalid references from
    return types to names bound in parameter patterns. (#2271)

  • Incorrect handling of projections used in size expressions.

  • Subtle interactions of modules and sizes in the interpreter and compiler
    (#2273).

0.25.30

22 Apr 22:55
Compare
Choose a tag to compare

Added

  • New math functions: f16.rsqrt, f32.rsqrt, f64.rsqrt.

  • New math functions: cospi, sinpi, tanpi, acospi, asinpi,
    atanpi, atan2pi, in each of the f16/f32/f64 modules. (#2243)

  • Slight improvements in the ability of the fusion engine to fuse
    across map nests separated by reshape operations. Only works if
    the innermost return type is purely scalar.

  • futhark pkg now allows underscores in package paths.

Fixed

  • The interpreter no longer crashes when passing a sum-typed value
    into AD, but it is unlikely to produce a usable result (#2238).

  • The partial derivatives of comparisons are now always zero.
    Previously we had some code that made an attempt at giving these
    another interpretation, but it was never mathematically sound, not
    useful, and sometimes buggy. (#2239).

  • Out-of-bounds reads in GPU backends when transposing a great many
    matrices in parallel (#2241).

  • vjp in the interpreter is now asymptotically efficient (#2187,
    #2240). Work by Marcus Jensen.

  • The interpreter did not handle open correctly.

  • Incorrect handling of some size inference edge cases during
    monomorphisation (#2252).

  • Incorrect registration of entry point types when mixing type
    abbreviations and arrays (#2253).

  • Reverse mode AD now handles sequential streams. (#2256)

0.25.29

22 Mar 22:08
Compare
Choose a tag to compare

Fixed

  • AD would in some cases produce code that would cause a compiler
    crash (#2228).

  • Slight error in the definition of the partial derivatives for the
    ** operator could cause NaNs in the interpreter when using
    forward-mode AD (#2229).

  • The magical machinery for inferring external API types did not
    handle arrays with uniqueness annotations consistently, resulting in
    incompatible entry point types being generated, leading to a
    compiler crash. (#2231)

  • A simplification rule for array slices would in some cases produce
    type-incorrect code. (#2232)

  • A bug in the defunctionaliser could cause a compiler crash in code
    that used both higher order functions and size expressions in clever
    ways (#2234).

  • Fusion could crash after AD in some circumstances (#2236).

0.25.28

07 Mar 20:32
Compare
Choose a tag to compare

Added

Removed

Changed

Fixed

  • Compiler crash for intrablock scatters that write to
    multidimensional arrays. (#2218)

  • Handling of size expressions in abstract types in the interpreter (#2222).

  • GPU code generation of segmented reductions with array operands. (#2227)

  • Server-mode timing is now done with a monotonic clock.

  • futhark test now respects notest, similar to nobench for futhark bench.

0.25.27

05 Feb 12:20
Compare
Choose a tag to compare

Added

  • Improved reverse-mode AD of scan with complicated operators. Work
    by Peter Adema and Sophus Valentin Willumsgaard.

Fixed

  • futhark eval: any errors in the provided .fut file would cause a
    "file not found" error message.

  • Handling of module-dependent size expressions in type abbreviations
    (#2209).

  • A let-bound size would mistakenly be in scope of the bound
    expression (#2210).

  • An overzealous floating-point simplification rule.

  • Corrected AD of x**y where x==0 (#2216).

  • futhark fmt: correct file name in parse errors.

  • A bug in the "sink" optimisation pass could cause compiler crashes.

  • Compile errors with newer versions of ispc.

0.25.26

14 Jan 16:04
Compare
Choose a tag to compare

Fixed

  • Some Windows compatibility quirks (#2200, #2201).

  • futhark pkg: fixed parsing of Git timestamps in Z time zone.

  • GPU backends did not handle array constants correctly in some cases.

  • futhark fmt: do not throw away doc comments for local
    definitions.

  • futhark fmt: improve formatting of value specs.

  • futhark fmt: add --check option.

0.25.25

18 Dec 14:08
Compare
Choose a tag to compare

Added

  • Improvements to futhark fmt.

Fixed

  • Sizes that go out of scope due to use of higher order functions will
    now work in more cases by adding existentials. (#2193)

  • Tracing inside AD operators with the interpreter now prints values
    properly.

  • Compiled and interpreted code now have same treatment of inclusive
    ranges with start==end and negative step size, e.g. 1..0...1
    produces [1] rather than an invalid range error.

  • Inconsistent handling of types in lambda lifting (#2197).

  • Invalid primal results from vjp2 in interpreter (#2199).

0.25.24

11 Nov 14:54
Compare
Choose a tag to compare

Added

  • futhark doc now produces better (and stable) anchor IDs.

  • futhark profile now supports multiple JSON files.

  • futhark fmt, by William Due and Therese Lyngby.

  • Lambdas can now be passed as the last argument to a function application.

Fixed

  • Negation of floating-point positive zero now produces a negative
    zero.

  • Necessary inlining of functions used inside AD constructs.

  • A compile time regression for programs that used higher order
    functions very aggressively.

  • Uniqueness bug related to slice simplification.

0.25.23

15 Oct 08:33
Compare
Choose a tag to compare

Added

  • Trailing commas are now allowed for arrays, records, and tuples in
    the textual value format and in FutharkScript.

  • Faster floating-point atomics with OpenCL backend on AMD and NVIDIA
    GPUs. This affects histogram workloads.

  • AD is now supported by the interpreter (thanks to Marcus Jensen).

Fixed

  • Some instances of invalid copy removal. (Again.)

  • An issue related to entry points with nontrivial sizes in their
    arguments, where the entry points were also used as normal functions
    elsewhere. (#2184)