[OpenGL] why does my GPU show another GPU's data?

Hello,

I’m using 2GPUs, GTX480 for calculating and Quadro FX 3800 for display. Then, I tested as following.
1, I calculate a CUDA-OpenGL-program on the GTX480
2, I attempt to show the result from the Quadro FX 3800

I thought that the test would fail because I didn’t copy any data from the GTX480 to the Quadro. But It succeeded.
Can someone tell me why the Quadro showed the data?

BTW, I’m sure that I used the GTX480 for calculating because I set cudaSetDevice(0), and #0 is for the GTX480.

Best regards,


OS: windows7
NVIDIA driver: 257.21
CUDA: 3.1

Because the OpenGL context runs on the Quadro? If you bind an OpenGL buffer to a CUDA context and the data resulting from the CUDA calculation get copied to the OpenGL buffer, you probably do an implicit copy from the GTX480 to the Quadro.

Thank you for your reply.

I don’t do any copy. And I found following line in the NVIDIA CUDA Programming Guid version 3.1 Beta (CUDA Programming Guide.pdf) on page 40.

“Quadro GPUs offer higher performance OpenGL interoperability than GeForce and Tesla GPUs in a multi-GPU configuration where OpenGL rendering is performed on the Quadro GPU and CUDA computations are performed on other GPUs in the system.”

So I guess GTX480 did implicit copy. But I’m not sure…

Does anyone know if there is any document or official comment which says CUDA-OpenGL copies the data from the computing GPU to the display GPU?

Nothing other than what you quoted.

But it’s true - when doing graphics interop across GPUs, the driver does an implicit copy from the compute GPU to the display GPU. If the rendering GPU is a Quadro, this copy is optimized and faster than on GeForce.

Hi, Simon, I got it.

Thanks a lot for your answer!

I hope this isn’t considered hijacking, but why is that?

Also, do you know if this copy is faster than a usual GPU0(compute)->host->GPU1(display) copy?

I also want to know the answer to this.

Where can one find more information on this?

I’m currently working on a project which involves a few TESLAs and a GeForce210 and I’m using the 210 for rendering and the TESLAS for computation and I don’t know, for sure, if that is the best configuration (since the C2050’s have video outputs…).

I also want to know the answer to this.

Where can one find more information on this?

I’m currently working on a project which involves a few TESLAs and a GeForce210 and I’m using the 210 for rendering and the TESLAS for computation and I don’t know, for sure, if that is the best configuration (since the C2050’s have video outputs…).