futhark: An optimising compiler for a functional, array-oriented language.

[ language, library, program ] [ Propose Tags ]

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:

Versions [faq] 0.7.3, 0.7.4, 0.8.1, 0.9.1, 0.10.1, 0.10.2, 0.11.1, 0.11.2, 0.12.1, 0.12.2, 0.12.3, 0.13.1, 0.13.2, 0.14.1, 0.15.1, 0.15.2, 0.15.3, 0.15.4, 0.15.5, 0.15.6, 0.15.7, 0.15.8, 0.16.1, 0.16.2, 0.16.3, 0.16.4, 0.17.1, 0.17.2, 0.17.3, 0.18.1, 0.18.2, 0.18.3, 0.18.4, 0.18.5, 0.18.6, 0.19.1, 0.19.2, 0.19.3, 0.19.4
Dependencies aeson (>=1.0.0.0), ansi-terminal (>=0.6.3.1), array (>=0.4), base (>=4.13 && <5), binary (>=0.8.3), blaze-html (>=0.9.0.1), bmp (>=1.2.6.3), bytestring (>=0.10.8), bytestring-to-vector (>=0.3.0.1), cmark-gfm (>=0.2.1), containers (>=0.6.2.1), directory (>=1.3.0.0), directory-tree (>=0.12.1), dlist (>=0.6.0.1), file-embed (>=0.0.9), filepath (>=1.4.1.1), free (>=4.12.4), futhark, gitrev (>=1.2.0), hashable, haskeline, language-c-quote (>=0.12), mainland-pretty (>=0.6.1), megaparsec (>=9.0.0), mtl (>=2.2.1), neat-interpolation (>=0.3), parallel (>=3.2.1.0), pcg-random (>=0.1), process (>=1.4.3.0), process-extras (>=0.7.2), regex-tdfa (>=1.2), srcloc (>=0.4), template-haskell (>=2.11.1), temporary, terminal-size (>=0.3), text (>=1.2.2.2), time (>=1.6.0.1), transformers (>=0.3), unordered-containers (>=0.2.7), utf8-string (>=1), vector (>=0.12), vector-binary-instances (>=0.2.2.0), versions (>=4.0.1), zip-archive (>=0.3.1.1), zlib (>=0.6.1.2) [details]
License ISC
Author
Maintainer Troels Henriksen athas@sigkill.dk
Category Language
Home page https://futhark-lang.org
Bug tracker https://github.com/diku-dk/futhark/issues
Source repo head: git clone https://github.com/diku-dk/futhark
Uploaded by TroelsHenriksen at 2021-03-30T15:52:28Z
Distributions NixOS:0.19.4
Executables futhark
Downloads 12508 total (922 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2021-03-30 [all 3 reports]

Modules

  • Futhark
    • Futhark.Actions
    • Analysis
      • Futhark.Analysis.Alias
      • Futhark.Analysis.CallGraph
      • Futhark.Analysis.DataDependencies
      • HORep
        • Futhark.Analysis.HORep.MapNest
        • Futhark.Analysis.HORep.SOAC
      • Futhark.Analysis.Metrics
        • Futhark.Analysis.Metrics.Type
      • Futhark.Analysis.PrimExp
        • Futhark.Analysis.PrimExp.Convert
        • Futhark.Analysis.PrimExp.Generalize
        • Futhark.Analysis.PrimExp.Parse
        • Futhark.Analysis.PrimExp.Simplify
      • Futhark.Analysis.Rephrase
      • Futhark.Analysis.SymbolTable
      • Futhark.Analysis.UsageTable
    • Futhark.Bench
    • Futhark.Binder
      • Futhark.Binder.Class
    • 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.Literate
      • 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.CCUDA.Boilerplate
        • Futhark.CodeGen.Backends.COpenCL
          • Futhark.CodeGen.Backends.COpenCL.Boilerplate
        • Futhark.CodeGen.Backends.GenericC
          • Futhark.CodeGen.Backends.GenericC.CLI
          • Futhark.CodeGen.Backends.GenericC.Options
          • Futhark.CodeGen.Backends.GenericC.Server
        • Futhark.CodeGen.Backends.GenericPython
          • Futhark.CodeGen.Backends.GenericPython.AST
          • Futhark.CodeGen.Backends.GenericPython.Definitions
          • Futhark.CodeGen.Backends.GenericPython.Options
        • Futhark.CodeGen.Backends.MulticoreC
        • 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.SimpleRep
      • Futhark.CodeGen.ImpCode
        • Futhark.CodeGen.ImpCode.Kernels
        • Futhark.CodeGen.ImpCode.Multicore
        • Futhark.CodeGen.ImpCode.OpenCL
        • Futhark.CodeGen.ImpCode.Sequential
      • Futhark.CodeGen.ImpGen
        • Futhark.CodeGen.ImpGen.CUDA
        • Futhark.CodeGen.ImpGen.Kernels
          • Futhark.CodeGen.ImpGen.Kernels.Base
          • Futhark.CodeGen.ImpGen.Kernels.SegHist
          • Futhark.CodeGen.ImpGen.Kernels.SegMap
          • Futhark.CodeGen.ImpGen.Kernels.SegRed
          • Futhark.CodeGen.ImpGen.Kernels.SegScan
            • Futhark.CodeGen.ImpGen.Kernels.SegScan.SinglePass
            • Futhark.CodeGen.ImpGen.Kernels.SegScan.TwoPass
          • Futhark.CodeGen.ImpGen.Kernels.ToOpenCL
          • Futhark.CodeGen.ImpGen.Kernels.Transpose
        • 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.ImpGen.Transpose
      • OpenCL
        • Futhark.CodeGen.OpenCL.Heuristics
      • Futhark.CodeGen.SetDefaultSpace
    • Futhark.Compiler
      • Futhark.Compiler.CLI
      • Futhark.Compiler.Program
    • Futhark.Construct
    • Doc
      • Futhark.Doc.Generator
    • Futhark.Error
    • Futhark.FreshNames
    • Futhark.IR
      • Futhark.IR.Aliases
      • Futhark.IR.Decorations
      • Futhark.IR.Kernels
        • Futhark.IR.Kernels.Kernel
        • Futhark.IR.Kernels.Simplify
        • Futhark.IR.Kernels.Sizes
      • Futhark.IR.KernelsMem
      • Futhark.IR.MC
        • Futhark.IR.MC.Op
      • Futhark.IR.MCMem
      • Futhark.IR.Mem
        • Futhark.IR.Mem.IxFun
        • Futhark.IR.Mem.Simplify
      • Futhark.IR.Parse
      • Futhark.IR.Pretty
      • Futhark.IR.Primitive
        • Futhark.IR.Primitive.Parse
      • Futhark.IR.Prop
        • Futhark.IR.Prop.Aliases
        • Futhark.IR.Prop.Constants
        • Futhark.IR.Prop.Names
        • Futhark.IR.Prop.Patterns
        • Futhark.IR.Prop.Rearrange
        • Futhark.IR.Prop.Reshape
        • Futhark.IR.Prop.Scope
        • Futhark.IR.Prop.TypeOf
        • Futhark.IR.Prop.Types
      • 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.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.Optimise.BlkRegTiling
      • Futhark.Optimise.CSE
      • Futhark.Optimise.DoubleBuffer
      • Futhark.Optimise.Fusion
        • Futhark.Optimise.Fusion.Composing
        • Futhark.Optimise.Fusion.LoopKernel
      • Futhark.Optimise.InPlaceLowering
        • Futhark.Optimise.InPlaceLowering.LowerIntoStm
        • Futhark.Optimise.InPlaceLowering.SubstituteIndices
      • Futhark.Optimise.InliningDeadFun
      • Futhark.Optimise.Simplify
        • Futhark.Optimise.Simplify.Engine
        • Futhark.Optimise.Simplify.Lore
        • 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.Simple
      • Futhark.Optimise.Sink
      • Futhark.Optimise.TileLoops
        • Futhark.Optimise.TileLoops.Shared
      • Futhark.Optimise.Unstream
    • Futhark.Pass
      • Futhark.Pass.ExpandAllocations
      • Futhark.Pass.ExplicitAllocations
        • Futhark.Pass.ExplicitAllocations.Kernels
        • 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.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.Pkg.Info
      • Futhark.Pkg.Solve
      • Futhark.Pkg.Types
    • Futhark.Script
    • Futhark.Server
    • Futhark.Test
      • Futhark.Test.Values
        • Futhark.Test.Values.Parser
    • Futhark.Tools
    • Transform
      • Futhark.Transform.CopyPropagate
      • Futhark.Transform.FirstOrderTransform
      • Futhark.Transform.Rename
      • Futhark.Transform.Substitute
    • Futhark.TypeCheck
    • Futhark.Util
      • Futhark.Util.Console
      • Futhark.Util.IntegralExp
      • Futhark.Util.Loc
      • Futhark.Util.Log
      • Futhark.Util.Options
      • Futhark.Util.Pretty
      • Futhark.Util.Table
    • Futhark.Version
  • Language
    • Language.Futhark
      • Language.Futhark.Core
      • Language.Futhark.Interpreter
      • Language.Futhark.Parser
      • Language.Futhark.Prelude
      • Language.Futhark.Pretty
      • Language.Futhark.Prop
      • Language.Futhark.Query
      • Language.Futhark.Semantic
      • Language.Futhark.Syntax
      • Language.Futhark.Traversals
      • Language.Futhark.TypeChecker
        • Language.Futhark.TypeChecker.Match
        • Language.Futhark.TypeChecker.Modules
        • Language.Futhark.TypeChecker.Monad
        • Language.Futhark.TypeChecker.Terms
        • Language.Futhark.TypeChecker.Types
        • Language.Futhark.TypeChecker.Unify
      • Language.Futhark.Warnings

Downloads

Maintainer's Corner

For package maintainers and hackage trustees