Futhark is a small programming language designed to be compiled into efficient parallel code. It is a statically typed, data-parallel, and purely functional array language in the ML family, and comes with a heavily optimizing ahead-of-time compiler that presently generates either GPU code via CUDA and OpenCL, or multi-threaded CPU code. Futhark is not designed for graphics programming, but can instead use the compute power of the GPU to accelerate data-parallel array computations. The language supports regular nested data-parallelism, as well as a form of imperative-style in-place modification of arrays, while still preserving the purity of the language via the use of a uniqueness type system. While the Futhark language and compiler is an ongoing research project, it is quite usable for real programming and can compile nontrivial programs which then run on real machines at high speed.
Features
- Futhark is a simple language and is designed to be easy to learn
- Generate high-performance parallel code
- Futhark can already be used for nontrivial programs
- Futhark is not intended to replace existing general-purpose languages
- Only used for relatively small but compute-intensive parts of an application
- The Futhark compiler generates code that can be easily integrated with non-Futhark code