The CUDA library provides a direct, general purpose C-like SPMD programming
model for NVIDIA graphics cards (G8x series onwards). This is a collection
of bindings to allow you to call and control, although not write, such
functions from Haskell-land. You will need to install the CUDA driver and
developer toolkit.
http://developer.nvidia.com/cuda-downloads
The setup script will look for your CUDA installation by checking, in the
following order:
The CUDA_PATH environment variable
Searching for nvcc on the PATH
Checking at /usr/local/cuda
CUDA_PATH_Vx_y environment variable, for recent CUDA toolkit versions x.y
This library provides bindings to both the CUDA Driver and Runtime APIs. To
get started, see one of:
Foreign.CUDA.Driver (a short tutorial is available here)
Foreign.CUDA.Runtime
Tested with library versions up to CUDA-10.2. See also the
travis-ci.org build matrix for
version compatibility.
The setup script for this package requires at least Cabal-1.24. To upgrade,
execute one of:
cabal users: cabal install Cabal --constraint="Cabal >= 1.24"
stack users: stack setup --upgrade-cabal
Due to an interaction between GHC-8 and unified virtual address spaces in
CUDA, this package does not currently work with GHCi on ghc-8.0.1 (compiled
programs should work). See the following for more details:
https://github.com/tmcdonell/cuda/issues/39
https://ghc.haskell.org/trac/ghc/ticket/12573
The bug should be fixed in ghc-8.0.2 and beyond.
For additional notes on installing on Windows, see:
https://github.com/tmcdonell/cuda/blob/master/WINDOWS.md