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.


Keywords
library, program, Propose Tags, https://futhark-lang.org, the hacking guide, Futhark, Futhark.IR.Syntax, Futhark.Construct, Skip to Readme, , Index, Quick Jump, 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, Futhark.Analysis.AlgSimplify, Futhark.Analysis.Alias, Futhark.Analysis.CallGraph, Futhark.Analysis.DataDependencies, 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.SymbolTable, Futhark.Analysis.UsageTable, Futhark.Bench, Futhark.Builder, Futhark.Builder.Class, 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, 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, Futhark.CodeGen.OpenCL.Heuristics, Futhark.CodeGen.RTS.C, Futhark.CodeGen.RTS.CUDA, Futhark.CodeGen.RTS.JavaScript, Futhark.CodeGen.RTS.OpenCL, Futhark.CodeGen.RTS.Python, Futhark.Compiler, Futhark.Compiler.CLI, Futhark.Compiler.Config, Futhark.Compiler.Program, Futhark.Doc.Generator, Futhark.Error, 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.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, Futhark.LSP.Compile, Futhark.LSP.Diagnostic, Futhark.LSP.Handlers, Futhark.LSP.PositionMapping, Futhark.LSP.State, Futhark.LSP.Tool, Futhark.MonadFreshNames, 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.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.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.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.KernelBabysitting, Futhark.Pass.LiftAllocations, Futhark.Pass.LowerAllocations, Futhark.Pass.Simplify, Futhark.Passes, Futhark.Pipeline, Futhark.Pkg.Info, Futhark.Pkg.Solve, Futhark.Pkg.Types, Futhark.Profile, Futhark.Script, Futhark.Test, Futhark.Test.Spec, Futhark.Test.Values, Futhark.Tools, 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, Language.Futhark, Language.Futhark.Core, Language.Futhark.FreeVars, Language.Futhark.Interpreter, Language.Futhark.Interpreter.Values, Language.Futhark.Parser, Language.Futhark.Parser.Lexer.Tokens, Language.Futhark.Parser.Lexer.Wrapper, Language.Futhark.Parser.Monad, 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, futhark-0.25.15.tar.gz, browse, Package description, Package maintainers, TroelsHenriksen, edit package information , 0.7.3, 0.8.1, 0.9.1, 0.19.3, 0.19.4, 0.19.5, 0.20.0, DIKU, HIPERFIT centre, A collection of code examples, Installation instructions, The main website, Parallel Programming in Futhark, The Futhark User's Guide, Documentation for the built-in prelude, Futhark libraries, good first issue, the hacking instructions
License
ISC
Install
cabal install futhark-0.25.15