accelerate-llvm: Accelerate backend component generating LLVM IR
This library implements direct LLVM IR generation for the Accelerate language. For further information, refer to the main accelerate package.
- Dependencies
Haskell dependencies are available from Hackage. The following external libraries are alse required:
libFFI (if using accelerate-llvm-native)
CUDA (if using accelerate-llvm-ptx)
- Installing LLVM
Homebrew
Example using Homebrew on macOS:
brew install llvm-hs/homebrew-llvm/llvm-6.0
Debian & Ubuntu
For Debian/Ubuntu based Linux distributions, the LLVM.org website provides binary distribution packages. Check apt.llvm.org for instructions for adding the correct package database for your OS version, and then:
apt-get install llvm-6.0-dev
Building from source
If your OS does not have an appropriate LLVM distribution available, you can
also build from source. Detailed build instructions are available on
LLVM.org. Make sure to
include the cmake build options
-DLLVM_BUILD_LLVM_DYLIB=ON -DLLVM_LINK_LLVM_DYLIB=ON
so that the libLLVM
shared library will be built.
If using the accelerate-llvm-ptx
backend, also ensure that the
LLVM_TARGETS_TO_BUILD
option includes the NVPTX
target (if not
specified, all targets are built).
- Installing accelerate-llvm
To use accelerate-llvm
it is important that the llvm-hs
package is
installed against the libLLVM
shared library, rather than statically
linked, so that we can use LLVM from GHCi and Template Haskell. This is the
default configuration, but you can also enforce this explicitly by adding
the following to your stack.yaml
file:
flags: llvm-hs: shared-llvm: true
Or by specifying the shared-llvm
flag to cabal:
cabal install llvm-hs -fshared-llvm
[Skip to Readme]
Modules
- Control
- Parallel
- Control.Parallel.Meta
- Resource
- Control.Parallel.Meta.Resource.Backoff
- Control.Parallel.Meta.Resource.SMP
- Control.Parallel.Meta.Resource.Single
- Trans
- Control.Parallel.Meta.Trans.LBS
- Control.Parallel.Meta.Worker
- Resource
- Control.Parallel.Meta
- Parallel
- Data
- Array
- Accelerate
- LLVM
- Data.Array.Accelerate.LLVM.AST
- Analysis
- Data.Array.Accelerate.LLVM.Analysis.Match
- Array
- Data.Array.Accelerate.LLVM.Array.Data
- Data.Array.Accelerate.LLVM.CodeGen
- Data.Array.Accelerate.LLVM.CodeGen.Arithmetic
- Data.Array.Accelerate.LLVM.CodeGen.Array
- Data.Array.Accelerate.LLVM.CodeGen.Base
- Data.Array.Accelerate.LLVM.CodeGen.Constant
- Data.Array.Accelerate.LLVM.CodeGen.Downcast
- Data.Array.Accelerate.LLVM.CodeGen.Environment
- Data.Array.Accelerate.LLVM.CodeGen.Exp
- Data.Array.Accelerate.LLVM.CodeGen.IR
- Data.Array.Accelerate.LLVM.CodeGen.Intrinsic
- Data.Array.Accelerate.LLVM.CodeGen.Loop
- Data.Array.Accelerate.LLVM.CodeGen.Module
- Data.Array.Accelerate.LLVM.CodeGen.Monad
- Data.Array.Accelerate.LLVM.CodeGen.Permute
- Data.Array.Accelerate.LLVM.CodeGen.Ptr
- Data.Array.Accelerate.LLVM.CodeGen.Skeleton
- Data.Array.Accelerate.LLVM.CodeGen.Stencil
- Data.Array.Accelerate.LLVM.CodeGen.Sugar
- Data.Array.Accelerate.LLVM.CodeGen.Type
- Data.Array.Accelerate.LLVM.Compile
- Data.Array.Accelerate.LLVM.Compile.Cache
- Data.Array.Accelerate.LLVM.Embed
- Data.Array.Accelerate.LLVM.Execute
- Data.Array.Accelerate.LLVM.Execute.Async
- Data.Array.Accelerate.LLVM.Execute.Environment
- Data.Array.Accelerate.LLVM.Execute.Marshal
- Data.Array.Accelerate.LLVM.Foreign
- Data.Array.Accelerate.LLVM.Link
- Data.Array.Accelerate.LLVM.Link.Cache
- Data.Array.Accelerate.LLVM.State
- Data.Array.Accelerate.LLVM.Target
- Data.Array.Accelerate.LLVM.Util
- LLVM
- Accelerate
- ByteString
- Short
- Data.ByteString.Short.Char8
- Data.ByteString.Short.Extra
- Short
- Data.Range
- Array
- LLVM
- AST
- Type
- LLVM.AST.Type.AddrSpace
- LLVM.AST.Type.Constant
- LLVM.AST.Type.Flags
- LLVM.AST.Type.Global
- LLVM.AST.Type.Instruction
- LLVM.AST.Type.Instruction.Atomic
- LLVM.AST.Type.Instruction.Compare
- LLVM.AST.Type.Instruction.RMW
- LLVM.AST.Type.Instruction.Volatile
- LLVM.AST.Type.Metadata
- LLVM.AST.Type.Name
- LLVM.AST.Type.Operand
- LLVM.AST.Type.Representation
- LLVM.AST.Type.Terminator
- Type
- AST
Flags
Automatic Flags
Name | Description | Default |
---|---|---|
chase-lev | Use a Chase-Lev deque for work stealing | Enabled |
Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info
Downloads
- accelerate-llvm-1.2.0.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
For package maintainers and hackage trustees
Candidates
Versions [RSS] | 1.0.0.0, 1.1.0.0, 1.2.0.0, 1.2.0.1, 1.3.0.0 |
---|---|
Change log | CHANGELOG.md |
Dependencies | abstract-deque (>=0.3), accelerate (>=1.2 && <1.3), base (>=4.7 && <4.12), bytestring (>=0.10.4), chaselev-deque (>=0.5), containers (>=0.5), data-default-class (>=0.0.1), deepseq (>=1.3), directory (>=1.0), dlist (>=0.6), exceptions (>=0.6), filepath (>=1.0), llvm-hs (>=4.1 && <6.1), llvm-hs-pure (>=4.1 && <6.1), mtl (>=2.0), mwc-random (>=0.13), primitive (>=0.6), template-haskell, unordered-containers (>=0.2), vector (>=0.10) [details] |
Tested with | ghc >=7.10 |
License | BSD-3-Clause |
Author | Trevor L. McDonell |
Maintainer | Trevor L. McDonell <tmcdonell@cse.unsw.edu.au> |
Category | Compilers/Interpreters, Concurrency, Data, Parallelism |
Bug tracker | https://github.com/AccelerateHS/accelerate/issues |
Source repo | head: git clone https://github.com/AccelerateHS/accelerate-llvm.git this: git clone https://github.com/AccelerateHS/accelerate-llvm.git(tag 1.2.0.0) |
Uploaded | by TrevorMcDonell at 2018-04-03T08:24:40Z |
Distributions | |
Reverse Dependencies | 6 direct, 14 indirect [details] |
Downloads | 5921 total (8 in the last 30 days) |
Rating | (no votes yet) [estimated by Bayesian average] |
Your Rating | |
Status | Docs not available [build log] All reported builds failed as of 2021-06-02 [all 2 reports] |