SPOC is a set of tools for GPGPU programming with OCaml.
The SPOC library enables the detection and use of GPGPU devices with OCaml using Cuda and OpenCL.
There is also a camlp4 syntax extension to handle external Cuda or OpenCL kernels, as well as a DSL to express GPGPU kernels from the OCaml code.
This work is part of my PhD thesis and was partially funded by the opengpu project.
I'm currently in the UPMC-LIP6 laboratory where I'm supervised by Pr. E. Chailloux and Pr. J-L Lamotte.
SPOC has been presented several times and the slides and the papers
references are referenced below.
It has currently been tested on multiple architectures and systems, mostly 64-bit Linux and 64-bit OSX systems. It should work with Windows too (I tested it successfully last year with Windows 7…).
To be able to use SPOC, you'll need a computer capable of running OCaml
(obviously) but also compatible with either OpenCL or Cuda.
For Cuda you only need a current proprietary NVidia driver while for OpenCL you need to install the correct OpenCL implementation for your system.
SPOC should compile anyway as everything is dynamically linked, but you'll need Cuda/OpenCL eventually to run your programs.
SPOC currently lacks a real tutorial, it comes with some examples and I strongly advise anyone interested to look into the slides and papers.
SPOC is a free software under the CeCILL-B license.
Github Repository : https://github.com/mathiasbourgoin/SPOC
It is now possible to install SPOC with opam.
First add SPOC repository.
opam repository add spoc http://www.algo-prog.info/spoc/distribution/opam/
Then install SPOC
opam update opam install SPOC
M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “Retour d’expérience : portage d’une application haute-performance vers un langage de haut niveau”, ComPas/RENPAR 2013, pp. 1-8 (2013)
M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “Spoc: GPGPU Programming Through Stream Processing with OCAML”, Parallel Processing Letters, vol. 22 (2), pp. 1-12 (2012)
M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “Experiments with Spoc.”, Workshop OpenGPU, HIPEAC 2012., Paris, France (2012)
M. Bourgoin, E. Chailloux, J.‑L. Lamotte : “SPOC : GPGPU programming through Stream Processing with OCaml”, HLPGPU2012 workshop, pp. 1-8 (2012)
2012/06/21 - GDR/GPL LAHMA 2012