Hi,
This morning I have documented myself a little bit on the subject of exploiting parallelization on GPUs (Graphical Processing Units). George had made a presentation on this topic a few years ago, and things have evolved a little bit since.
There seem to be now two major competing programming frameworks for parallelization on GPUs (and possibly CPUs also):
- CUDA, developed by Nvidia [1] - OpenCL, presented by a consortium (including Apple, AMD, ATI, Nvidia) [2]
CUDA was initially only available on Nvidia graphics cards (see the packages "nvidia-cuda-*" in Debian, which contain the non-free implementation of CUDA for Nvidia cards).
There is now a free implementation of CUDA, called GPU Ocelot [3], which looks promising. It is able to run CUDA programs on an heterogenous cluster of GPUs (Nvidia, AMD, Intel) and CPUs (multi-core x86). It is not yet packaged in Debian, but it seems very interesting and we should give it a try.
On the long term, OpenCL looks more promising, but there is currently no free implementation of it. There is a Debian package called "opencl-headers", but it contains only the headers, since the binary implementation is non-free. There are also Debian packages containing the Nvidia non-free implementation of OpenCL (see "nvidia-opencl-*"). I am not aware of any ongoing project to build a free implementation of OpenCL.
To summarize: whoever has the interest and time in our team should give a try to GPU Ocelot to see if we can take advantage of it in Dynare.
Don't hesitate to react to this mail if you know things on this topic of which I am not aware.
Best,
[1] http://en.wikipedia.org/wiki/CUDA [2] http://en.wikipedia.org/wiki/OpenCL [3] http://code.google.com/p/gpuocelot/