Posts Tagged ‘gpu cluster’

Inter-GPU communication in CUDA 2.2

Monday, July 20th, 2009

CUDA 2.2 Device Driver added Mapped Pinned-Memory support to CUDA: computer main memory pages that are physically allocated and readable+writeable by any CUDA-enabled GPU.

This is the feature we all needed to enable multi-GPU asynchronous communication!!!

The only way to enable communication between multi-GPU (says the 2 GPUs of a GTX 295) to communicate was to stop the current GPU kernel execution, returning to CPU host, waiting for the other GPU to stop it’s kernel execution and then sending them informations via PCIe bus. You ended stopping kernel execution all the time and switching back to CPU even if no communication is waiting!!!

Now you just have to maintain Queues in Mapped Pinned memory, one for each pair of producer/consumer (n x n-1), 2 for 2 GPU, 6 for 3 GPU, .. and 56 for 8 GPU (still may be over 64KB queue with a low-end computer!), and you could even use the macro-threading technology to handle them :-)

PS: It just seems to be available to IGP (integrated graphic such as MacBook’s 9400M) and GT200 (GTX 260+) graphic cards :-(