Recent Releases of futhark
futhark - 0.25.32
Added
futhark docnow prints warnings about errors in doc comments (mostly references to unknown names).FutharkScript now permits chained
letwithoutin, just as in Futhark.futhark pkgnow allows the~character in package paths.cudabackend: explicitly support CC 8.9, 9.0, 10.0, 10.1, and 12.0.Profiling now provides source locations for the profiled events. Some things are not yet accurately tracked, and only the static location is reported (i.e., no full call stack).
The AD transformation is now more diligent about propagating attributes from SOACs in the primal code to SOACs in the differentiated code.
Fixed
f64atomics on NVIDIA GPUs with less than CC 6.0 (Maxwell and older).Infinite loop in fusion (#2276).
Rare compiler crash during internalisation code that does size coercions on opaque size-lifted types.
Missing fusion inside reduction and scan operators (#2283).
Incorrect aliasing for memory blocks could cause some optimisations to be misapplied. (#2288)
to_bits/from_bitsnot handled by AD (#2292).For GPU backends, incorrect code generation for accumulator updates (produced by AD) for thread-local arrays (#2294).
Missing consumption check in the termination condition for
whileloops (#2300).
- Haskell
Published by github-actions[bot] 10 months ago
futhark - 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/transposeoperations.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 profilenow also prints proportion of total runtime for each cost centre.Futhark no longer warns about entry points with opaque types.
Types such as
foo.barare now turned intofoo_barin 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).
- Haskell
Published by github-actions[bot] about 1 year ago
futhark - nightly
Commits
- add test-interpreter (Troels Henriksen)
- b2c5b3c: Make LiftAllocations properly alias-aware. (Troels Henriksen)
- Haskell
Published by github-actions[bot] about 1 year ago
futhark - 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/f64modules. (#2243)Slight improvements in the ability of the fusion engine to fuse across
mapnests separated byreshapeoperations. Only works if the innermost return type is purely scalar.futhark pkgnow 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).
vjpin the interpreter is now asymptotically efficient (#2187,2240). Work by Marcus Jensen.
The interpreter did not handle
opencorrectly.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)
- Haskell
Published by github-actions[bot] about 1 year ago
futhark - 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).
- Haskell
Published by github-actions[bot] about 1 year ago
futhark - 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 testnow respectsnotest, similar tonobenchforfuthark bench.
- Haskell
Published by github-actions[bot] about 1 year ago
futhark - 0.25.27
Added
- Improved reverse-mode AD of
scanwith 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**ywherex==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.
- Haskell
Published by github-actions[bot] over 1 year ago
futhark - 0.25.26
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 forlocaldefinitions.futhark fmt: improve formatting of value specs.futhark fmt: add--checkoption.
- Haskell
Published by github-actions[bot] over 1 year ago
futhark - 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...1produces[1]rather than an invalid range error.Inconsistent handling of types in lambda lifting (#2197).
Invalid primal results from
vjp2in interpreter (#2199).
- Haskell
Published by github-actions[bot] over 1 year ago
futhark - 0.25.24
Added
futhark docnow produces better (and stable) anchor IDs.futhark profilenow 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.
- Haskell
Published by github-actions[bot] over 1 year ago
futhark - 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)
- Haskell
Published by github-actions[bot] over 1 year ago
futhark - 0.25.22
Added
futhark scriptnow supports an-foption.futhark scriptnow supports the builtin procedure$store.
Removed
Changed
Fixed
An error in tuning file validation.
Constant folding for loops that produce floating point results could result in different numerical behaviour.
Compiler crash in memory short circuiting (#2176).
- Haskell
Published by github-actions[bot] over 1 year ago
futhark - 0.25.21
Added
Logging now prints more GPU information on context initialisation.
GPU cache size can now be configured (tuning param:
default_cache).GPU shared memory can now be configured (tuning param:
default_shared_memory).GPU register capacity can now be configured.
futhark scriptnow accepts a-boption for producing binary output.
Fixed
Type names for element types of array indexing functions in C interface are now often better - although there are still cases where you end up with hashed names. (#2172)
In some cases, GPU failures would not be reported properly if a previous failure was pending.
auto outputdidn't work if the.futfile did not have any path components.Improved detection of malformed tuning files.
- Haskell
Published by github-actions[bot] over 1 year ago
futhark - 0.25.20
Added
- Better error message when in-place updates fail at runtime due to a shape mismatch.
Fixed
#[unroll]on an outer loop now no longer causes unrolling of all loops nested inside the loop body.Obscure issue related to replications of constants in complex intrablock kernels.
Interpreter no longer crashes on attributes in patterns.
Fixes to array indexing through C API when using GPU backends.
- Haskell
Published by github-actions[bot] almost 2 years ago
futhark - 0.25.19
Added
The compiler now does slightly less aggressive inlining. Use the
#[inline]attribute if you want to force inlining of some function.Arrays of opaque types now support indexing through the C API. Arrays of records can also be constructed. (#2082)
Fixed
- The
openclbackend now always passes-cl-fp32-correctly-rounded-divide-sqrtto the kernel compiler, in order to match CUDA and HIP behaviour.
- Haskell
Published by github-actions[bot] almost 2 years ago
futhark - 0.25.18
Added
New prelude function:
rep, an implicit form ofreplicate.Improved handling of large monomorphic single-dimensional array literals (#2160).
Fixed
futhark replno longer asks for confirmation on EOF.Obscure oversight related to abstract size-lifted types (#2120).
Accidential exponential-time algorithm in layout optimisation for multicore backends (#2151).
- Haskell
Published by github-actions[bot] almost 2 years ago
futhark - 0.25.17
Faster device-to-device copies on CUDA.
"More correctly" detect L2 cache size for OpenCL backend on AMD GPUs.
Fixed
Handling of
..inimportpaths (again).Detection of impossible loop parameter sizes (#2144).
Rare case where GPU histograms would use slightly too much shared memory and fail at run-time.
Rare crash in layout optimisation.
- Haskell
Published by github-actions[bot] almost 2 years ago
futhark - nightly
Commits
- 1ec3594: Better style. (Troels Henriksen)
- 872344b: More cosmetic fixes. (Troels Henriksen)
- track alignment. (Troels Henriksen)
- c4bbfe1: SegHist GPU codegen: fix rare overuse of memory. (Troels Henriksen)
- Haskell
Published by github-actions[bot] about 2 years ago
futhark - 0.25.16
Added
futhark test:--no-terminalnow prints status messages even when no failures occur.futhark testno longer runsstructuretests by default. Pass-sto run them.Rewritten array layout optimisation pass by Bjarke Pedersen and Oscar Nelin. Minor speedup for some programs, but is more importantly a principled foundation for further improvements.
Better error message when exceeding shared memory limits.
Better dead code removal for the GPU representation (minor impact on some programs).
Fixed
Bugs related to deduplication of array payloads in sum types. Unfortunately, fixed by just not deduplicating in those cases.
Frontend bug related to turning size expressions into variables (#2136).
Another exotic monomorphisation bug.
- Haskell
Published by github-actions[bot] about 2 years ago
futhark - 0.25.15
Added
Incremental Flattening generates fewer redundant code versions.
Better simplification of slices. (#2125)
Fixed
Ignore type suffixes when unifying expressions (#2124).
In the C API, opaque types that correspond to an array of an opaque type are now once again named
futhark_opaque_arr_....cudabackend did not correctly profile CPU-to-GPU scalar copies.
- Haskell
Published by github-actions[bot] about 2 years ago
futhark - 0.25.14
Added
The prelude definition of
filteris now more memory efficient, particularly when the output is much smaller than the input. (#2109)New configuration for GPU backends:
futhark_context_config_set_unified_memory, also available on executables as--unified-memory.The "raw" API functions now do something potentially useful, but are still considered experimental.
futhark --versionnow reports GHC version.
Fixed
Incorrect type checking of let-bound sizes occurring multiple times in pattern. (#2103).
A concatenation simplification would sometimes mess up sizes. (#2104)
Bug related to monomorphisation of polymorphic local functions (#2106).
Rare crash in short circuiting.
Referencing an unbound type parameter could crash the type checker (#2113, #2114).
Futhark now works with GHC 9.8 (#2105).
- Haskell
Published by github-actions[bot] about 2 years ago
futhark - 0.25.13
Added
Incremental flattening of
map-scancompositions with nested parallelism (similar to the logic formap-reducecompositions that we have had for years).futhark script, for running FutharkScript expressions from the command line.futhark replnow prints out a message when it ignores a breakpoint during initialisation. (#2098)
Fixed
Flattening of
scatterwith multi-dimensional elements (#2089).Some instances of not-actually-irregular allocations were mistakenly interpreted as irregular. Fixing this was a dividend of the memory representation simplifications of 0.25.12.
Obscure issue related to expansion of shared memory allocations (#2092).
A crash in alias checking under some rare circumstances (#2096).
Mishandling of existential sizes for top level constants. (#2099)
Compiler crash when generating code for copying nothing at all. (#2100)
- Haskell
Published by github-actions[bot] over 2 years ago