Skip to content

0.3.0

Compare
Choose a tag to compare
@athas athas released this 02 Feb 09:06
· 6892 commits to master since this release

Added

  • A comprehensible error message is now issued when attempting to
    run a Futhark program on an OpenCL that does not support the
    types used by the program. A common case was trying to use
    double-precision floats on an Intel GPU.

  • Parallelism inside of a branch can now be exploited if the branch
    condition and the size of its results is invariant to all
    enclosing parallel loops.

  • A new OpenCL memory manager can in some cases dramatically
    improve performance for repeated invocations of the same entry
    point.

  • Experimental support for incremental flattening. Set the
    environment variable FUTHARK_VERSIONED_CODE to any value to try
    it out.

  • futhark-dataset: Add -t/-type option. Useful for
    inspecting data files.

  • Better error message when ranges written with two dots
    (x..y).

  • Type errors involving abstract types from modules now use
    qualified names (less "expected 't', got 't'", more "expected
    'foo.t', got 'bar.t'").

  • Shorter compile times for most programs.

  • futhark-bench: Add --skip-compilation flag.

  • scatter expressions nested in maps are now parallelised.

  • futlib: an fft module has been added, thanks to David
    P.H. Jørgensen and Kasper Abildtrup Hansen.

Removed

  • futhark-dataset: Removed --binary-no-header and
    --binary-only-header options.

  • The split language construct has been removed. There is a
    library function split that does approximately the same.

Changed

  • futlib: the complex module now produces a non-abstract complex
    type.

  • futlib: the random module has been overhauled, with several new
    engines and adaptors changed, and some of the module types
    changed. In particular, rng_distribution now contains a numeric
    module instead of an abstract type.

  • futlib: The vec2 and vec3 modules now represent vectors as
    records rather than tuples.

  • futlib: The linalg module now has distinct convenience functions
    for multiplying matrices with row and column vectors.

  • Only entry points defined directly in the file given to the
    compiler will be visible.

  • Range literals are now written without brackets: x...y.

  • The syntax (-x) can no longer be used for a partial application
    of subtraction.

  • futhark-test and futhark-bench will no longer append .bin to
    executables.

  • futhark-test and futhark-bench now replaces actual/expected
    files from previous runs, rather than increasing the litter.

Fixed

  • Fusion would sometimes remove safety checks on e.g. reshape
    (#436).

  • Variables used as implicit fields in a record construction are now
    properly recognised as being used.

  • futlib: the num_bits field for the integer modules in math now
    have correct values.