ArrayFire
is a general-purpose library that simplifies the process of developing software that targets parallel and massively-parallel architectures including CPUs, GPUs, and other hardware acceleration devices.
arrayfire-haskell
is a Haskell binding to ArrayFire.
Install ArrayFire
via the download page.
ArrayFire
can also be fetched from nixpkgs master
.
arrayfire
can be installed w/ cabal
, stack
or nix
.
cabal install arrayfire
stack install arrayfire
Also note, if you plan on using ArrayFire's visualization features, you must install fontconfig
and glfw
on OSX or Linux.
To hack on this library locally, complete the installation step above. We recommend installing the nix package manager to facilitate development.
After the above tools are installed, clone the source from Github.
git clone git@github.com:arrayfire/arrayfire-haskell.git
cd arrayfire-haskell
To build and run all tests in response to file changes
nix-shell --run test-runner
To perform interactive development w/ ghcid
nix-shell --run ghcid
To interactively evaluate code in the repl
nix-shell --run repl
To produce the haddocks and open them in a browser
nix-shell --run docs
{-# LANGUAGE TypeApplications, ScopedTypeVariables #-}
module Main where
import qualified ArrayFire as A
import Control.Exception (catch)
main :: IO ()
main = print newArray `catch` (\(e :: A.AFException) -> print e)
where
newArray = A.matrix @Double (2,2) [ [1..], [1..] ] * A.matrix @Double (2,2) [ [2..], [2..] ]
{-|
ArrayFire Array
[2 2 1 1]
2.0000 6.0000
2.0000 6.0000
-}