Main libraries


A sequential implementation of insertion sort.


Data-parallel implementation of quicksort. Note that this quicksort, while parallel, is quite slow. In almost all cases you should use radix- or merge sort instead.


A non-comparison-based sort that sorts an array in O(k n) work and O(k log(n)) span, where k is the number of bits in each element.

Supporting libraries


Definitions related to automatic differentiation.


Utility functions for arrays.


Simple functional combinators.


Basic mathematical modules and functions.


The default prelude that is implicitly available in all Futhark files.


Various Second-Order Array Combinators that are operationally parallel in a way that can be exploited by the compiler.


Transforming arrays of tuples into tuples of arrays and back again.


Irregular segmented operations, like scans and reductions.