Skip to content


Subversion checkout URL

You can clone with
Download ZIP
OpenCL library for Haskell
C Haskell C++
Failed to load latest commit information.
Foreign/OpenCL Added a Logging module and some debugging prints at allocation and de…
examples VectorAdd example: sleep after manual garbage collection call
tests/unit Bump version to 0.2.1, fixed test cases on Max Os X Mountain Lion,
LICENSE Change copyright notice to include "HIPERFIT research center"
Setup.hs __BLOCKS__ are undefined for Max OS X Mountain Lion (and Lion probabl…
hopencl.cabal Added a Logging module and some debugging prints at allocation and de…


The present repository contains the latest snapshot of a set of Haskell bindings to version 1.1 of the OpenCL specification.

The following sections of the OpenCL specification are not supported currently:

  • Image Objects (section 5.3)
  • Sampler Objects (section 5.5)
  • Profiling of memory objects and kernels (section 5.12)
  • Extensions of the OpenCL standard involving the API
  • OpenGL and D3D related functions

In addition, the are not currently any Haskell wrappers for the following functions:

clCreateSubBuffer, clEnqueueReadBufferRect, clEnqueueWriteBufferRect, clEnqueueCopyBufferRect, clEnqueueMapBuffer, clEnqueueUnmapMemObject, clEnqueueNativeKernel


Installation is handled by cabal, but the tool c2hs is needed for compilation and should be installed prior to hopencl.

cabal install c2hs
cabal install


In examples-directory two simple examples of how the hopencl package can be used are shown. They can be executed using runhaskell

cd examples/PlatformInfo/
runhaskell PlatformInfo.hs
cd examples/VectorAdd/
runhaskell VectorAdd.hs


Haddock documentation is available at


To compile the test suite, the flag --enable-tests must be given to cabal. The tests can then be executed using cabal test.

cabal install --enable-tests
cabal test

Questions and bug reports

Feel free to contact me by email at with any questions or bug reports.

Alternatively, bugs can be submitted through the bug tracker at:

Something went wrong with that request. Please try again.