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
- Futhark
- AD
- Futhark.AD.Derivatives
- Futhark.AD.Fwd
- Futhark.AD.Rev
- Futhark.AD.Rev.Hist
- Futhark.AD.Rev.Loop
- Futhark.AD.Rev.Map
- Futhark.AD.Rev.Monad
- Futhark.AD.Rev.Reduce
- Futhark.AD.Rev.SOAC
- Futhark.AD.Rev.Scan
- Futhark.AD.Rev.Scatter
- Futhark.Actions
- Analysis
- Futhark.Analysis.AccessPattern
- Futhark.Analysis.AlgSimplify
- Futhark.Analysis.Alias
- Futhark.Analysis.CallGraph
- Futhark.Analysis.DataDependencies
- HORep
- Futhark.Analysis.HORep.MapNest
- Futhark.Analysis.HORep.SOAC
- Futhark.Analysis.Interference
- Futhark.Analysis.LastUse
- Futhark.Analysis.MemAlias
- Futhark.Analysis.Metrics
- Futhark.Analysis.Metrics.Type
- Futhark.Analysis.PrimExp
- Futhark.Analysis.PrimExp.Convert
- Futhark.Analysis.PrimExp.Parse
- Futhark.Analysis.PrimExp.Simplify
- Futhark.Analysis.PrimExp.Table
- Futhark.Analysis.SymbolTable
- Futhark.Analysis.UsageTable
- Futhark.Bench
- Futhark.Builder
- Futhark.Builder.Class
- 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.Fmt
- 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.GenericPython.AST
- Futhark.CodeGen.Backends.GenericPython.Options
- Futhark.CodeGen.Backends.GenericWASM
- Futhark.CodeGen.Backends.HIP
- Futhark.CodeGen.Backends.MulticoreC
- Futhark.CodeGen.Backends.MulticoreC.Boilerplate
- Futhark.CodeGen.Backends.MulticoreISPC
- Futhark.CodeGen.Backends.MulticoreWASM
- Futhark.CodeGen.Backends.PyOpenCL
- Futhark.CodeGen.Backends.PyOpenCL.Boilerplate
- Futhark.CodeGen.Backends.SequentialC
- Futhark.CodeGen.Backends.SequentialC.Boilerplate
- Futhark.CodeGen.Backends.SequentialPython
- Futhark.CodeGen.Backends.SequentialWASM
- Futhark.CodeGen.Backends.SimpleRep
- Futhark.CodeGen.ImpCode
- Futhark.CodeGen.ImpCode.GPU
- Futhark.CodeGen.ImpCode.Multicore
- Futhark.CodeGen.ImpCode.OpenCL
- Futhark.CodeGen.ImpCode.Sequential
- Futhark.CodeGen.ImpGen
- Futhark.CodeGen.ImpGen.CUDA
- Futhark.CodeGen.ImpGen.GPU
- Futhark.CodeGen.ImpGen.GPU.Base
- Futhark.CodeGen.ImpGen.GPU.Block
- Futhark.CodeGen.ImpGen.GPU.SegHist
- Futhark.CodeGen.ImpGen.GPU.SegMap
- Futhark.CodeGen.ImpGen.GPU.SegRed
- Futhark.CodeGen.ImpGen.GPU.SegScan
- Futhark.CodeGen.ImpGen.GPU.SegScan.SinglePass
- Futhark.CodeGen.ImpGen.GPU.SegScan.TwoPass
- Futhark.CodeGen.ImpGen.GPU.ToOpenCL
- Futhark.CodeGen.ImpGen.HIP
- Futhark.CodeGen.ImpGen.Multicore
- Futhark.CodeGen.ImpGen.Multicore.Base
- Futhark.CodeGen.ImpGen.Multicore.SegHist
- Futhark.CodeGen.ImpGen.Multicore.SegMap
- Futhark.CodeGen.ImpGen.Multicore.SegRed
- Futhark.CodeGen.ImpGen.Multicore.SegScan
- Futhark.CodeGen.ImpGen.OpenCL
- Futhark.CodeGen.ImpGen.Sequential
- OpenCL
- Futhark.CodeGen.OpenCL.Heuristics
- RTS
- Futhark.CodeGen.RTS.C
- Futhark.CodeGen.RTS.CUDA
- Futhark.CodeGen.RTS.JavaScript
- Futhark.CodeGen.RTS.OpenCL
- Futhark.CodeGen.RTS.Python
- Backends
- Futhark.Compiler
- Futhark.Compiler.CLI
- Futhark.Compiler.Config
- Futhark.Compiler.Program
- Futhark.Construct
- Doc
- Futhark.Doc.Generator
- Futhark.Error
- Fmt
- Futhark.Fmt.Monad
- Futhark.Fmt.Printer
- Futhark.Format
- Futhark.FreshNames
- Futhark.IR
- Futhark.IR.Aliases
- Futhark.IR.GPU
- Futhark.IR.GPU.Op
- Futhark.IR.GPU.Simplify
- Futhark.IR.GPU.Sizes
- Futhark.IR.GPUMem
- Futhark.IR.MC
- Futhark.IR.MC.Op
- Futhark.IR.MCMem
- Futhark.IR.Mem
- Futhark.IR.Mem.Interval
- Futhark.IR.Mem.LMAD
- Futhark.IR.Mem.Simplify
- Futhark.IR.Parse
- Futhark.IR.Pretty
- Futhark.IR.Prop
- Futhark.IR.Prop.Aliases
- Futhark.IR.Prop.Constants
- Futhark.IR.Prop.Names
- Futhark.IR.Prop.Pat
- Futhark.IR.Prop.Rearrange
- Futhark.IR.Prop.Reshape
- Futhark.IR.Prop.Scope
- Futhark.IR.Prop.TypeOf
- Futhark.IR.Prop.Types
- Futhark.IR.Rep
- Futhark.IR.Rephrase
- Futhark.IR.RetType
- Futhark.IR.SOACS
- Futhark.IR.SOACS.SOAC
- Futhark.IR.SOACS.Simplify
- Futhark.IR.SegOp
- Futhark.IR.Seq
- Futhark.IR.SeqMem
- Futhark.IR.Syntax
- Futhark.IR.Syntax.Core
- 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.LSP.Compile
- Futhark.LSP.Diagnostic
- Futhark.LSP.Handlers
- Futhark.LSP.PositionMapping
- Futhark.LSP.State
- Futhark.LSP.Tool
- Futhark.MonadFreshNames
- Optimise
- Futhark.Optimise.ArrayLayout
- Futhark.Optimise.ArrayLayout.Layout
- Futhark.Optimise.ArrayLayout.Transform
- Futhark.Optimise.ArrayShortCircuiting
- Futhark.Optimise.ArrayShortCircuiting.ArrayCoalescing
- Futhark.Optimise.ArrayShortCircuiting.DataStructs
- Futhark.Optimise.ArrayShortCircuiting.MemRefAggreg
- Futhark.Optimise.ArrayShortCircuiting.TopdownAnalysis
- Futhark.Optimise.BlkRegTiling
- Futhark.Optimise.CSE
- Futhark.Optimise.DoubleBuffer
- Futhark.Optimise.EntryPointMem
- Futhark.Optimise.Fusion
- Futhark.Optimise.Fusion.Composing
- Futhark.Optimise.Fusion.GraphRep
- Futhark.Optimise.Fusion.RulesWithAccs
- Futhark.Optimise.Fusion.TryFusion
- Futhark.Optimise.GenRedOpt
- Futhark.Optimise.HistAccs
- Futhark.Optimise.InliningDeadFun
- Futhark.Optimise.MemoryBlockMerging
- Futhark.Optimise.MemoryBlockMerging.GreedyColoring
- Futhark.Optimise.MergeGPUBodies
- Futhark.Optimise.ReduceDeviceSyncs
- Futhark.Optimise.ReduceDeviceSyncs.MigrationTable
- Futhark.Optimise.ReduceDeviceSyncs.MigrationTable.Graph
- Futhark.Optimise.ReduceDeviceSyncs.MigrationTable
- Futhark.Optimise.Simplify
- Futhark.Optimise.Simplify.Engine
- Futhark.Optimise.Simplify.Rep
- Futhark.Optimise.Simplify.Rule
- Futhark.Optimise.Simplify.Rules
- Futhark.Optimise.Simplify.Rules.BasicOp
- Futhark.Optimise.Simplify.Rules.ClosedForm
- Futhark.Optimise.Simplify.Rules.Index
- Futhark.Optimise.Simplify.Rules.Loop
- Futhark.Optimise.Simplify.Rules.Match
- Futhark.Optimise.Simplify.Rules.Simple
- Futhark.Optimise.Sink
- Futhark.Optimise.TileLoops
- Futhark.Optimise.TileLoops.Shared
- Futhark.Optimise.Unstream
- Futhark.Optimise.ArrayLayout
- Futhark.Pass
- Futhark.Pass.AD
- Futhark.Pass.ExpandAllocations
- Futhark.Pass.ExplicitAllocations
- Futhark.Pass.ExplicitAllocations.GPU
- Futhark.Pass.ExplicitAllocations.MC
- Futhark.Pass.ExplicitAllocations.SegOp
- Futhark.Pass.ExplicitAllocations.Seq
- 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.Pkg.Info
- Futhark.Pkg.Solve
- Futhark.Pkg.Types
- Futhark.Profile
- Futhark.Script
- Futhark.Test
- Futhark.Test.Spec
- Futhark.Test.Values
- Futhark.Tools
- Transform
- Futhark.Transform.CopyPropagate
- Futhark.Transform.FirstOrderTransform
- Futhark.Transform.Rename
- Futhark.Transform.Substitute
- Futhark.Util
- Futhark.Util.CMath
- Futhark.Util.IntegralExp
- Futhark.Util.Loc
- Futhark.Util.Log
- Futhark.Util.Options
- Futhark.Util.Pretty
- Futhark.Util.ProgressBar
- Futhark.Util.Table
- Futhark.Version
- AD
- Language
- Language.Futhark
- Language.Futhark.Core
- Language.Futhark.FreeVars
- Language.Futhark.Interpreter
- Language.Futhark.Interpreter.AD
- Language.Futhark.Interpreter.Values
- Language.Futhark.Parser
- Lexer
- Language.Futhark.Parser.Lexer.Tokens
- Language.Futhark.Parser.Lexer.Wrapper
- Language.Futhark.Parser.Monad
- Lexer
- Language.Futhark.Prelude
- Language.Futhark.Pretty
- Language.Futhark.Primitive
- Language.Futhark.Primitive.Parse
- Language.Futhark.Prop
- Language.Futhark.Query
- Language.Futhark.Semantic
- Language.Futhark.Syntax
- Language.Futhark.Traversals
- Language.Futhark.Tuple
- Language.Futhark.TypeChecker
- Language.Futhark.TypeChecker.Consumption
- Language.Futhark.TypeChecker.Match
- Language.Futhark.TypeChecker.Modules
- Language.Futhark.TypeChecker.Monad
- Language.Futhark.TypeChecker.Names
- Language.Futhark.TypeChecker.Terms
- Language.Futhark.TypeChecker.Terms.Loop
- Language.Futhark.TypeChecker.Terms.Monad
- Language.Futhark.TypeChecker.Terms.Pat
- Language.Futhark.TypeChecker.Types
- Language.Futhark.TypeChecker.Unify
- Language.Futhark.Warnings
- Language.Futhark
Downloads
- futhark-0.25.30.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates