futhark: An optimising compiler for a functional, array-oriented language.
Futhark is a small programming language designed to be compiled to efficient parallel code. It is a statically typed, data-parallel, and purely functional array language in the ML family, and comes with a heavily optimising ahead-of-time compiler that presently generates GPU code via CUDA and OpenCL, although the language itself is hardware-agnostic.
For more information, see the website at https://futhark-lang.org
For introductionary information about hacking on the Futhark compiler, see the hacking guide. Regarding the internal design of the compiler, the following modules make good starting points:
Futhark.IR.Syntax explains the basic design of the intermediate representation (IR).
Futhark.Construct explains how to write code that manipulates and creates AST fragments.
Modules
[Index] [Quick Jump]
- Futhark
- Futhark.Actions
- Analysis
- Futhark.Bench
- Futhark.Binder
- CLI
- Futhark.CLI.Autotune
- Futhark.CLI.Bench
- Futhark.CLI.C
- Futhark.CLI.CUDA
- Futhark.CLI.Check
- Futhark.CLI.Datacmp
- Futhark.CLI.Dataset
- Futhark.CLI.Dev
- Futhark.CLI.Doc
- Futhark.CLI.Misc
- Futhark.CLI.Multicore
- Futhark.CLI.OpenCL
- Futhark.CLI.Pkg
- Futhark.CLI.PyOpenCL
- Futhark.CLI.Python
- Futhark.CLI.Query
- Futhark.CLI.REPL
- Futhark.CLI.Run
- Futhark.CLI.Test
- CodeGen
- Backends
- Futhark.CodeGen.Backends.CCUDA
- Futhark.CodeGen.Backends.COpenCL
- Futhark.CodeGen.Backends.GenericC
- Futhark.CodeGen.Backends.GenericPython
- Futhark.CodeGen.Backends.MulticoreC
- Futhark.CodeGen.Backends.PyOpenCL
- Futhark.CodeGen.Backends.SequentialC
- Futhark.CodeGen.Backends.SequentialPython
- Futhark.CodeGen.Backends.SimpleRep
- Futhark.CodeGen.ImpCode
- Futhark.CodeGen.ImpGen
- Futhark.CodeGen.ImpGen.CUDA
- Futhark.CodeGen.ImpGen.Kernels
- Futhark.CodeGen.ImpGen.Multicore
- Futhark.CodeGen.ImpGen.OpenCL
- Futhark.CodeGen.ImpGen.Sequential
- Futhark.CodeGen.ImpGen.Transpose
- OpenCL
- Futhark.CodeGen.SetDefaultSpace
- Backends
- Futhark.Compiler
- Futhark.Construct
- Doc
- Futhark.Error
- Futhark.FreshNames
- Futhark.IR
- Futhark.Internalise
- Futhark.Internalise.AccurateSizes
- Futhark.Internalise.Bindings
- Futhark.Internalise.Defunctionalise
- Futhark.Internalise.Defunctorise
- Futhark.Internalise.FreeVars
- Futhark.Internalise.Lambdas
- Futhark.Internalise.LiftLambdas
- Futhark.Internalise.Monad
- Futhark.Internalise.Monomorphise
- Futhark.Internalise.TypesValues
- Futhark.MonadFreshNames
- Optimise
- Futhark.Pass
- Futhark.Pass.ExpandAllocations
- Futhark.Pass.ExplicitAllocations
- Futhark.Pass.ExtractKernels
- Futhark.Pass.ExtractKernels.BlockedKernel
- Futhark.Pass.ExtractKernels.DistributeNests
- Futhark.Pass.ExtractKernels.Distribution
- Futhark.Pass.ExtractKernels.ISRWIM
- Futhark.Pass.ExtractKernels.Interchange
- Futhark.Pass.ExtractKernels.Intragroup
- Futhark.Pass.ExtractKernels.StreamKernel
- Futhark.Pass.ExtractKernels.ToKernels
- Futhark.Pass.ExtractMulticore
- Futhark.Pass.FirstOrderTransform
- Futhark.Pass.KernelBabysitting
- Futhark.Pass.Simplify
- Futhark.Passes
- Futhark.Pipeline
- Pkg
- Futhark.Test
- Futhark.Tools
- Transform
- Futhark.TypeCheck
- Futhark.Util
- Futhark.Version
- Language
- Language.Futhark
Downloads
- futhark-0.18.4.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates