Bot releases are visible (Hide)
Published by github-actions[bot] almost 2 years ago
assert
was sometimes optimised away by CSE.
futhark literate
now handles type abbreviations in entry points
(#1750).
Handling of non-inlined functions in GPU code. Still very restricted.
Uniqueness checking bug (#1751).
Simplification bug (#1753).
A bug related to optimisation of scalar code migrated to GPU.
Memory optimisation bug for top-level constants (#1755).
Handling of holes in defunctionalisation (again).
A few cases where optimisation (safely but perhaps confusingly)
removed bounds checks (#1758).
Futhark now works on Windows again (#1734). This support remains
very flaky and not well tested.
Type inference of field projection (#1762).
Published by github-actions[bot] almost 2 years ago
Non-server executables neglected to synchronise before printing results (#1731).
Fixed handling of holes in defunctionalisation (#1738).
Ascription of higher-order modules (#1741).
Fixed compiler crash when attempting to tile irregular parallelism (#1739).
Incorrect regularity checking in loop interchange (#1744).
Pattern match exhaustiveness of bools (#1748).
Improper consumption checking of nonlocal bindings (#1749).
Published by github-actions[bot] about 2 years ago
futhark repl
is now delightfully more colourful.
futhark repl
no longer prints scalar types with type suffixes (#1724).
futhark pyopencl
executables now accept --build-option
.
New functions: f16.nextafter
, f32.nextafter
, f64.nextafter
,
matching the ones in the C math library.
futhark literate
now prints directives in the output exactly as
they appear in the source.
Diagnostics will no longer contain control codes when output is a
file.
CLI executables now fail when printing an opaque instead of
producing garbage. This improves handling of some incorrect uses of
auto output
(#1251).
Published by github-actions[bot] about 2 years ago
reduce_stream
, map_stream
,reduce_stream_per
, and reduce_map_per
.Published by github-actions[bot] about 2 years ago
Corrupted OOM error messages.
Excessive internal fragmentation for some programs (#1715).
Published by github-actions[bot] about 2 years ago
replicate
was broken for sizes that didn't fit in i32
.
Transposition of empty arrays in interpreter (#1700).
Exotic simplification error (#1309).
Rare race condition could lead to leaking of error message memory in
multicore
and ispc
backends (#1709).
Overzealous aliasing for built-in overloaded types (#1711).
Published by github-actions[bot] over 2 years ago
New fusion engine by Amar Topalovic and Walter Restelli-Nielsen.
Fuses more, which is good for some programs and bad for others.
Most programs see no change. This is mainly a robust foundation for
further improvements.
New experimental backend: ispc
. By Louis Marott Normann,
Kristoffer August Kortbæk, William Pema Norbu Holmes Malling, and
Oliver Bak Kjersgaard Petersen.
New prelude functions: hist
, spread
. These function as
non-consuming variants of reduce_by_index
and scatter
.
Using ==
to compare arrays is now deprecated.
New command: futhark tokens
. You probably don't care about this one.
In the C API, opaque types that correspond to tuples or records can
now have their elements inspected and be created from elements
(#1568).
New server protocol commands: types
, fields
, entry_points
.
Tuples and records can now be passed from FutharkScript to Futhark
entry points (#1684).
Sometimes missing cases in match
expressions were not detected.
A defective simplification rule could in very rare cases lead to
infinite recursion in the compiler (#1685).
Some broken links in futhark doc
output (#1686).
Incorrect checking of whether a function parameter is consumable
based on its type (#1687).
Missing aliases for functions that return multiple aliased values
(#1690).
new
/values
functions for GPU backends are now properly
asynchronous (#1664). This may uncover bugs in application code.
Published by github-actions[bot] over 2 years ago
Somewhat simplified the handling of "uniqueness types" (which is a
term we are moving away from). You should never see *
in
non-function types, and they are better thought of as effect
indicators.
futhark literate
: prints tracing output (and other logging
messages that may occur) when run with -v
(#1678).
Entry points can now be any valid Futhark identifier.
futhark test -C
was broken.
futhark_context_free()
for the GPU backends neglected to free some
memory used for internal bookkeeping, which could lead to memory
leaks for processes that repeatedly create and destroy contexts
(#1676).
FutharkScript now allows '
in names.
futhark lsp
now handles warnings in programs that also have errors.
Published by github-actions[bot] over 2 years ago
The CUDA backend now supports compute capability 8.6 and 8.7.
Philip Børgesen has implemented a new optimisation for GPU backends
that migrates scalar work to the GPU, in order to reduce
synchronisation. This results in major speedup for some programs.
String literals are now allowed in input
blocks.
Experimental and undocumented support for automatic differentiation,
available on the secret menu.
Assertions and attributes are now ignored when used as size
expressions. E.g. iota (assert p n) 0
now has size n
.
futhark test
only runs the interpreter if passed -i
.
futhark literate
now shows progress bars when run with -v
.
futhark lsp
is now better at handling multiple files (#1647).
Incorrect handling of local quantification when determining type
equivalence in during module type ascription (#1648).
Incorrect checking of liftedness when instantiating polymorphic
functions during module type ascription.
Tightened some restrictions on the use of existential sizes that
could otherwise lead to compiler crashes (#1650). This restriction
is perhaps a bit too might and it may be possible to loosen it in
the future.
Another defunctorisation bug (#1653). Somehow we find these every
time Martin Elsman writes a nontrivial Futhark program.
futhark bench
: convergence phase now does at least --runs
runs.
Errors and warnings no longer awkwardly mixed together in console output.
Slightly better type errors for ambiguous sizes (#1661).
Better type errors for module ascription involving nested modules
(#1660).
futhark doc
: some formatting bugs.
futhark doc
didn't notice all local
module types (#1666).
Missing consumption check in optimisation could lead to ICE (#1669).
Published by github-actions[bot] over 2 years ago
New math functions: f16.erf
, f32.erf
, f64.erf
.
New math functions: f16.erfc
, f32.erfc
, f64.erfc
.
New math functions: f16.cbrt
, f32.cbrt
, f64.cbrt
.
Variables being indexed now have correct source spans in AST.
futhark lsp
s hover information now contains proper range information.
futhark query
and futhark lsp
incorrectly thought size
parameters had type i32
.
futhark doc
put documentation for prelude modules in the wrong
location (which also led to messed-up style sheets).
Published by github-actions[bot] over 2 years ago
Sun Haoran has implemented unnamed typed holes, with syntax ???
.
Sun Haoran has implemented the beginnings of a language server:
futhark lsp
. A VSCode language extension is available on the
marketplace, but the language server should work with any editor.
Crucial new command: futhark thanks
.
The GPU backends now support a caching mechanism for JIT-compiled
code, significantly improving startup times. Use the
futhark_context_config_set_cache_file()
in the C API, the
--cache-file
option on executables, or the --cache-extension
option on futhark test
and futhark bench
. These also work for
the non-GPU backends, but currently have no effect. (#1614)
Aleksander Junge has improved futhark bench
such that it
intelligently chooses how many runs to perform (#1335).
Incomplete simplification would cause some instances of nested
parallelism to require irregular allocations (#1610).
Missing alias checking for a simplification rule related to in-place
updates (#1615, #1628).
Incorrect code generation for certain copies of transposed arrays
(#1627).
Fusion would mistakenly try to treat some loops with irregular sizes
(#1631).
Memory annotation bug for non-inlined functions (#1634).
Published by github-actions[bot] over 2 years ago
Slightly better parse errors (again).
futhark literate
now supports a file:
option in :img
and
:video
directives (#1491).
Improved hoisting of size computations. This could cause some
regular nested parallel programs to run into compiler limitations,
as if they were irregular.
Rare code generation bug for histograms (#1609).
Published by github-actions[bot] over 2 years ago
futhark check-syntax
: check syntactic validity of a program
file, without type-checking.
Parsing multi-file programs is now parallelised, making it
slightly faster.
Reloading a large program in futhark repl
is now faster, as long
as not too many of its files have been modified (#1597).
Published by github-actions[bot] over 2 years ago
futhark bench
now explicitly notes when a tuning file is not
present.
futhark bench
, futhark test
and friends are now better at
handling fatally terminating programs (e.g. segmentation faults).
Generated C code is now a lot smaller for large programs, as error
recovery has been more centralised (#1584).
Some bugs in checking for local memory capacity for particularly
exotic generated code.
Insufficient hoisting of allocation sizes led to problems with
memory expansion in rare cases (#1579).
Conversion of floating-point NaNs and infinities to integers now
well defined (produces zero) (#1586).
Better handling of OOM for certain short-lived CPU-side allocations (#1585).
Published by github-actions[bot] over 2 years ago
API functions now return more precise error codes in some cases.
Out-of-memory errors contain more information.
Yet another in-place lowering issue (#1569).
Removed unnecessary bounds checks in register tiling, giving about
1.8x speedup on e.g. matrix multiplication on newer NVIDIA GPUs.
A parser bug erroneously demanded whitespace in some type
expressions (#1573).
Some memory was not being freed correctly when shutting down OpenCL
and CUDA contexts, which could lead to memory leaks in processes
that created and freed many contexts.
An incorrect copy-removal in some exotic cases (#1572).
'restore'-functions might perform undefined pointer arithmetic when
passed garbage.
Published by github-actions[bot] almost 3 years ago
A size inference bug in type checking of loop
s (#1565).
Exotic flattening bug (#1563).
Segmented reduce_by_index
with fairly small histogram size would
use vastly more memory than needed.
Published by github-actions[bot] almost 3 years ago
Parse errors now list possible expected tokens.
Lexer errors now mention the file.
Overloaded number literals cannot be sum types (#1557).
Defective GPU code generation for vectorised non-commutative
operatators (#1559).
Excessive memory usage for some programs (#1325).
Published by github-actions[bot] almost 3 years ago
New functions: reduce_by_index_2d
, reduce_by_index_3d
.
Manifests now contain compiler version information.
Allocation insertion pass bug (#1546).
An exotic bug involving TLS and dynamically loading code generated
by the multicore
backend.
Unconstrained ambiguous types now default to ()
(#1552). This
should essentially never have any observable impact, except that
more programs will type check.
Double buffering compiler crash (#1553).
Published by github-actions[bot] almost 3 years ago
Top-level value definitions can (and should) now be declared with
with def
, although let
still works.
New tool: futhark defs
, for printing locations of top-level
definitions.
def
is now a reserved word.Published by github-actions[bot] almost 3 years ago
futhark repl
now allows Ctrl-c to interrupt execution.Alias tracking of sum types.
Proper checking that a function declared to return a unique-typed
value actually does so.
Faulty uniqueness checking and inference for lambdas (#1535).
Monomorphisation would duplicate functions under rare circumstances
(#1537).
Interpreter didn't check that the arguments passed to unflatten
made sense (#1539).
futhark literate
now supports a $loaddata
builtin function for
passing datasets to Futhark programs.