<div align="center">
<img width="450" src="https://github.com/AccelerateHS/accelerate/raw/master/images/accelerate-logo-text-v.png?raw=true" alt="henlo, my name is Theia"/>
# Example programs using Accelerate
[](https://github.com/tmcdonell/accelerate-examples/actions)
[](https://gitter.im/AccelerateHS/Lobby)
<br>
[](https://stackage.org/lts/package/accelerate-examples)
[](https://stackage.org/nightly/package/accelerate-examples)
[](https://hackage.haskell.org/package/accelerate-examples)
<br>
[](https://hub.docker.com/r/tmcdonell/accelerate-examples/)
[](https://microbadger.com/images/tmcdonell/accelerate-examples)
</div>
Example programs using the Accelerate library. The aim is for this package to
evolve and be useful for both performance and regression testing.
Contributions and bug reports are welcome!<br>
Please feel free to contact me through [GitHub](https://github.com/AccelerateHS/accelerate/issues) or [gitter.im](https://gitter.im/AccelerateHS/Lobby).
Installation
------------
### External dependencies
Installation of `accelerate-examples` and its dependencies requires several
external packages. You may need to adjust the package names or versions slightly
for your system.
* Ubuntu/Debian (apt-get):
- llvm-9-dev
- freeglut3-dev
- libfftw3-dev
* Mac OS ([homebrew](http://brew.sh/index.html))
- fftw
- libffi
- llvm-hs/homebrew-llvm/llvm-9
If you want to use the CUDA GPU enabled backend
[`accelerate-llvm-ptx`](https://github.com/AccelerateHS/accelerate-llvm), you
will also need to install the CUDA toolkit for your system. You can find an
installer on NVIDIA's website here:
* https://developer.nvidia.com/cuda-downloads
### Building: stack
For development, the recommend build method is via the
[`stack`](http://haskellstack.org) tool. This will simplify pulling in
dependencies not yet on Hackage. For example, to build using ghc-8.10:
```bash
ln -s stack-8.10.yaml stack.yaml # only once
stack build # or, 'stack install' to install the executables globally
```
Before building, you may want to edit the `stack.yaml` file to change the build
configuration. In particular, the `flags` section at the bottom can be used to
enable or disable individual example programs and accelerate backends, as well
as features such as monitoring and debug output.
Adding new backends
-------------------
Adding support for new Accelerate backends should require only a few minor
additions to the cabal file and the module
'Data.Array.Accelerate.Examples.Internal.Backend'.