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 contains a basic architectural overview of the compiler.
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.
[Skip to Readme]
Modules
[Index] [Quick Jump]
- Futhark
- AD
- Futhark.Actions
- Analysis
- Futhark.Analysis.AccessPattern
- Futhark.Analysis.AlgSimplify
- Futhark.Analysis.Alias
- Futhark.Analysis.CallGraph
- Futhark.Analysis.DataDependencies
- HORep
- Futhark.Analysis.Interference
- Futhark.Analysis.LastUse
- Futhark.Analysis.MemAlias
- Futhark.Analysis.Metrics
- Futhark.Analysis.PrimExp
- Futhark.Analysis.SymbolTable
- Futhark.Analysis.UsageTable
- Futhark.Bench
- Futhark.Builder
- CLI
- Futhark.CLI.Autotune
- Futhark.CLI.Bench
- Futhark.CLI.Benchcmp
- Futhark.CLI.C
- Futhark.CLI.CUDA
- Futhark.CLI.Check
- Futhark.CLI.Datacmp
- Futhark.CLI.Dataset
- Futhark.CLI.Defs
- Futhark.CLI.Dev
- Futhark.CLI.Doc
- Futhark.CLI.Eval
- Futhark.CLI.HIP
- Futhark.CLI.LSP
- Futhark.CLI.Literate
- Futhark.CLI.Main
- Futhark.CLI.Misc
- Futhark.CLI.Multicore
- Futhark.CLI.MulticoreISPC
- Futhark.CLI.MulticoreWASM
- Futhark.CLI.OpenCL
- Futhark.CLI.Pkg
- Futhark.CLI.Profile
- Futhark.CLI.PyOpenCL
- Futhark.CLI.Python
- Futhark.CLI.Query
- Futhark.CLI.REPL
- Futhark.CLI.Run
- Futhark.CLI.Script
- Futhark.CLI.Test
- Futhark.CLI.WASM
- CodeGen
- Backends
- Futhark.CodeGen.Backends.CCUDA
- Futhark.CodeGen.Backends.COpenCL
- Futhark.CodeGen.Backends.GPU
- Futhark.CodeGen.Backends.GenericC
- Futhark.CodeGen.Backends.GenericC.CLI
- Futhark.CodeGen.Backends.GenericC.Code
- Futhark.CodeGen.Backends.GenericC.EntryPoints
- Futhark.CodeGen.Backends.GenericC.Fun
- Futhark.CodeGen.Backends.GenericC.Monad
- Futhark.CodeGen.Backends.GenericC.Options
- Futhark.CodeGen.Backends.GenericC.Pretty
- Futhark.CodeGen.Backends.GenericC.Server
- Futhark.CodeGen.Backends.GenericC.Types
- Futhark.CodeGen.Backends.GenericPython
- Futhark.CodeGen.Backends.GenericWASM
- Futhark.CodeGen.Backends.HIP
- Futhark.CodeGen.Backends.MulticoreC
- Futhark.CodeGen.Backends.MulticoreISPC
- Futhark.CodeGen.Backends.MulticoreWASM
- Futhark.CodeGen.Backends.PyOpenCL
- Futhark.CodeGen.Backends.SequentialC
- Futhark.CodeGen.Backends.SequentialPython
- Futhark.CodeGen.Backends.SequentialWASM
- Futhark.CodeGen.Backends.SimpleRep
- Futhark.CodeGen.ImpCode
- Futhark.CodeGen.ImpGen
- Futhark.CodeGen.ImpGen.CUDA
- Futhark.CodeGen.ImpGen.GPU
- Futhark.CodeGen.ImpGen.HIP
- Futhark.CodeGen.ImpGen.Multicore
- Futhark.CodeGen.ImpGen.OpenCL
- Futhark.CodeGen.ImpGen.Sequential
- OpenCL
- RTS
- Backends
- Futhark.Compiler
- Futhark.Construct
- Doc
- Futhark.Error
- Futhark.Format
- Futhark.FreshNames
- Futhark.IR
- Futhark.IR.Aliases
- Futhark.IR.GPU
- Futhark.IR.GPUMem
- Futhark.IR.MC
- Futhark.IR.MCMem
- Futhark.IR.Mem
- Futhark.IR.Parse
- Futhark.IR.Pretty
- Futhark.IR.Prop
- Futhark.IR.Rep
- Futhark.IR.Rephrase
- Futhark.IR.RetType
- Futhark.IR.SOACS
- Futhark.IR.SegOp
- Futhark.IR.Seq
- Futhark.IR.SeqMem
- Futhark.IR.Syntax
- Futhark.IR.Traversals
- Futhark.IR.TypeCheck
- Futhark.Internalise
- Futhark.Internalise.AccurateSizes
- Futhark.Internalise.ApplyTypeAbbrs
- Futhark.Internalise.Bindings
- Futhark.Internalise.Defunctionalise
- Futhark.Internalise.Defunctorise
- Futhark.Internalise.Entry
- Futhark.Internalise.Exps
- Futhark.Internalise.FullNormalise
- Futhark.Internalise.Lambdas
- Futhark.Internalise.LiftLambdas
- Futhark.Internalise.Monad
- Futhark.Internalise.Monomorphise
- Futhark.Internalise.ReplaceRecords
- Futhark.Internalise.TypesValues
- LSP
- Futhark.MonadFreshNames
- Optimise
- Futhark.Optimise.ArrayLayout
- Futhark.Optimise.ArrayShortCircuiting
- Futhark.Optimise.BlkRegTiling
- Futhark.Optimise.CSE
- Futhark.Optimise.DoubleBuffer
- Futhark.Optimise.EntryPointMem
- Futhark.Optimise.Fusion
- Futhark.Optimise.GenRedOpt
- Futhark.Optimise.HistAccs
- Futhark.Optimise.InliningDeadFun
- Futhark.Optimise.MemoryBlockMerging
- Futhark.Optimise.MergeGPUBodies
- Futhark.Optimise.ReduceDeviceSyncs
- Futhark.Optimise.Simplify
- Futhark.Optimise.Sink
- Futhark.Optimise.TileLoops
- Futhark.Optimise.Unstream
- Futhark.Pass
- Futhark.Pass.AD
- 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.Intrablock
- Futhark.Pass.ExtractKernels.StreamKernel
- Futhark.Pass.ExtractKernels.ToGPU
- Futhark.Pass.ExtractMulticore
- Futhark.Pass.FirstOrderTransform
- Futhark.Pass.LiftAllocations
- Futhark.Pass.LowerAllocations
- Futhark.Pass.Simplify
- Futhark.Passes
- Futhark.Pipeline
- Pkg
- Futhark.Profile
- Futhark.Script
- Futhark.Test
- Futhark.Tools
- Transform
- Futhark.Util
- Futhark.Version
- Language
- Language.Futhark
- Language.Futhark.Core
- Language.Futhark.FreeVars
- Language.Futhark.Interpreter
- Language.Futhark.Parser
- Language.Futhark.Prelude
- Language.Futhark.Pretty
- Language.Futhark.Primitive
- Language.Futhark.Prop
- Language.Futhark.Query
- Language.Futhark.Semantic
- Language.Futhark.Syntax
- Language.Futhark.Traversals
- Language.Futhark.Tuple
- Language.Futhark.TypeChecker
- Language.Futhark.Warnings
- Language.Futhark
Downloads
- futhark-0.25.21.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates