GPGPU Computing

--- Note : We now have rewritten CUDA support to work with current CUDA versions. However, for most tasks, the current speedup is not worth the effort of using it. However, if you are doing single particle tomography, the speedup can be quite substantial.

--- Note : We do not distribute CUDA binaries due to many many problems with cross-platform compilation, versioning, etc. This may change in future, but for now to experiment with CUDA, you will need to compile from source.

This technique makes use of the GPU (graphics processing unit) common in most modern PC's, to dramatically accelerate many image processing algorithms. At present (summer 2010) we have implemented GPGPU support for a significant number of algorithms in the EMAN2 core (~20-30) using Nvidia's CUDA infrastructure. Implementing GPU support in a massive image processing library like EMAN2 is a major undertaking, and optimizing the entire image processing pipeline requires further efforts. At the present time, only a handful of these algorithms have been fully optimized. While you can build EMAN2 with CUDA support now, overall throughput on something like 3-D refinement is not significantly faster than just using multiple cores on the CPU. That is, if you have a typical quad-core CPU machine and a typical Nvidia graphics card, at the moment, you might as well just use your 4 cores with the --parallel option. We expect this situation to change over coming months...

If you wish to experiment with CUDA support in EMAN2, there are several steps:

Eventually we may migrate to the more cross-GPU compatible OpenCL, but at the moment, reports are that performance suffers considerably as compared to CUDA.

Also note that as of July 2010, using CUDA on the Mac is quite tricky, since Snow Leopard (10.6) is 64 bit, and EMAN2 and dependencies are normally compiled as 64-bit, but CUDA at present only supports 32-bit.