Dual GPU device question

Does a graphics card with dual GPUs like the GTX480 appear as two CUDA compatible devies?
Can they independantly run different kernals simultaneously?


The GTX480 is a single GPU device.

The GTX295 is a dual GPU board, and they do appear as separate devices. They run completely independently, which can be useful. (Though a FAQ we hear offten is "can I make both of them look like a single big device.) They are COMPLETELY independent, you could even have one running kernels from a different process than the other, or use one for display and one for CUDA and they won’t interfere.

afaik if you have 2 GPU that have each 128 Cuda cores a CUDA based app will see it as 1 GPU with 256 Cuda cores, please correct me if i am wrong.

completely and utterly wrong, it’s two distinct GPUs. multiple GPUs are never combined into a single GPU for CUDA.

To extend the answer of tmurray, all dual-gpu cards of nVidia, 9800GX2, GTX 295, maybe a GTX 495 (if we are lucky, rich, and deaf!), are logically 2 separated GPU, using a PCI-express to 2 pci-express bridge. There was huge work on the driver to make them available as one videocard for OpenGL, DirectX, but for OpenCL or CUDA,due to the hardware-level programming, they are exposed as 2 video card ( thus 2 separated GPU).

The video card main memory (Global Memory) is not shared between the 2 GPU, you could only communicate between them (GPU<->GPU) using main CPU program or Pinned Mapped Memory (GTX 295 not 9800GX2), but there is real-world advantages too, as launching different kernel or even different applications on each GPU located on the card.

PS: one more interesting thins is to have 2 nVidia’s GPU of different architectures, like on MacBook pro (was 9400M GT IGP+9600MT) or a card handling GTS240+GTX, initially conceived to handle PhysX on the middle-end GPU and graphics on high-end GPU. You could develop software that is multi-gpu oriented and moreover do a static analysis of performance to balance load, or funnier a dynalic load-balancing system.