Releases: diku-dk/futhark
nightly
0.25.31
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 byfuthark 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 intofoo_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
Added
-
New math functions:
f16.rsqrt
,f32.rsqrt
,f64.rsqrt
. -
New math functions:
cospi
,sinpi
,tanpi
,acospi
,asinpi
,
atanpi
,atan2pi
, in each of thef16
/f32
/f64
modules. (#2243) -
Slight improvements in the ability of the fusion engine to fuse
acrossmap
nests separated byreshape
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
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
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 respectsnotest
, similar tonobench
forfuthark bench
.
0.25.27
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
wherex==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
Fixed
-
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 forlocal
definitions. -
futhark fmt
: improve formatting of value specs. -
futhark fmt
: add--check
option.
0.25.25
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
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
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)