views:

221

answers:

2

My hands have been itching to learn GPGPU programming for some time. I finally have some time on my hands so I want to use it as wisely as possible. I'm really interested in your guys experience with GPGPU programming, any pointers, references to good literature, links to sites, interesting projects etc.

My interests lie mainly in scientific computing, so I am more interested in using GPUs to parallelise general computations rather than use it for graphics. Ultimately I would like to implement some finite element/finite volume simulations using it. This leads to another problem: double precision. Is double precision computation possible at all using a GPU, if so how?

I also know that there exist two alternatives CUDA and OpenCL, I probably won't have time to look at both of them, so I'd appreciate suggestions on which one I should start with.

Looking forward to your posts!

+7  A: 

You should really check this sites:

About using Cuda or OpenCL, we really can't tell you which to use, CUDA is more mature than OpenCL, but works only in NVIDIA Geforce 8 and later cards, and OpenCL works in both AMD/NVIDIA, but is less mature, and also has CPU implementations, so software written in it doesn't really require a GPU.

For books, i recommend GPU Gems 3, it contains several papers about GPGPU using Cuda. For OpenCL, there's a book called "The OpenCL Programming Book" by Ryoji Tsuchiyama, Takashi Nakamura, Takuro Iizuka, and Akihiro Asahara, but it hasn't been released yet on paper, only digital.

Hope that helps.

Matias Valdenegro
It's also worth browsing developer.nvidia.com, particularly the CUDA forums - lots of good info there.
Paul R
+2  A: 

Double precision support is available on some latest Nvdia cards. If double precision support is not available on the device, all variables declared double will be treated as single-precision. You can refer NVdia OpenCl Programming guide for more info.

Also there's a book on GpGPu called "Programming massively parallel processors"