peer-to-peer between different type of cards

Hi,
Do 2 video cards of different brands connected with peer-to-peer cable work together?

For instance, will EVGA GTX Titan and Zotac GTX Titan BLACK be able to communicate over the nvidia interconnect cable ?

Edit: I’m concerned about windows platform only, if that matters.

Thanks!

You mean SLI cable?

Yes, I mean sli-cable,

Sorry for confusion

CUDA Peer-to-Peer transactions do not use the SLI mechanism/path/cable.

In the context of CUDA peer-to-peer communication applies to two GPU on the same PCIe root complex communicating directly with each other via PCIe. SLI has nothing to do with compute. As far as I know the SLI connector is actually a low-bandwidth connection for transmitting synchronization signals in graphics.

Yeah, I believe peer-to-peer uses the PCI bus, and does not work for GTX at all.

At least, I could not get it to work. Seems to be Tesla drivers only.

Thanks for enlightening me about sli and peer-2-peer.

Ok, if peer-to-peer does not work, should I except any problems creating and working with 2 cuda contexts on those 2 boards in the same process ?

(Note: I’m a fan of driver interface)

Thanks again!

I didn’t say peer-to-peer would not work.

Since a CUDA context only pertains to a single device:

http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#context

http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#driver-api

“A CUDA context must then be created that is attached to a specific device…”

the only usual way to use two devices is to create (at least) 2 cuda contexts.

SLI is a graphics animal. As such it has little or no overlap with CUDA.
However you may still wish to read the SLI section in the CUDA programming guide:

http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#sli-interoperability

If you read the above, you’ll see that the recommendation is still to create 2 cuda contexts, and treat the devices separately.

Note that in general, P2P support may vary by GPU or GPU family. The ability to run P2P on one GPU type or GPU family does not necessarily indicate it will work on another GPU type or family, even in the same system/setup. The final determinant of GPU P2P support are the tools provided that query the runtime via cudaDeviceCanAccessPeer. P2P support can vary by system and other factors as well. No statements made here are a guarantee of P2P support for any particular GPU in any particular setup.

Sorry if I have phrased my question a bit wrong.
I’m thinking of creating 2 contexts - one per device. Should I expect any problems doing so inside one process, when the devices are of different types (like titan and titan black which I believe is a faster clocked version of simple titan)?

Thanks.

There is no problem doing this inside one process. It is common usage and probably preferred over creating multiple processes.

Once again sorry for confusion. I am going to create 2 devices - one per device.
The question is about if the driver is Ok with the fact that those 2 devices are different.

A common multi-gpu setup is a PC with identical boards where SLI works. I don’t even expect SLI to work with my configuration due to different frequencies of the gpu-core, and thus I wonder if they might not work together simply because this scenario is never tested/supported by nvidia driver team

Thanks again!

You shouldn’t have any trouble with CUDA operations. Not every pairwise combination of GPUs is tested, of course. However Titan and Titan Black are quite similar.

SLI is mostly orthogonal to CUDA.

Peer-to-Peer should work, if all other P2P requirements are met by your system. (You might try running one of the P2P sample codes.)

And in general, any 2 CUDA capable GPUs should be able to be used in a system by creating 2 CUDA contexts, one for each GPU.

Thnak you very much for your answers!

Just to be clear, all NVIDIA GPUs with SM2.0 or above support p2p transfer, but only those support TCC drivers can perform p2p transfer under Windows, is this correct?

Yes, P2P requires cc2.0 or higher GPUs, and on windows requires a TCC driver mode:

http://on-demand.gputechconf.com/gtc-express/2011/presentations/cuda_webinars_GPUDirect_uva.pdf

Since as of today, TCC is not supported on GeForce, then my answer above was wrong or misleading. I wouldn’t expect a P2P test on GTX Titans to pass on windows, today, on CUDA 7.0.

Although I can’t immediately document this, I should further clarify that P2P is supported between like devices of cc2.0 or higher. P2P is not necessarily supported between a cc2.0 and a cc3.0 device, for example.

However, the cards mentioned in this thread (Titan and Titan Black) should satisfy the requirement of “like devices”, and so, under linux, I would expect that P2P transfers between those two cards is possible. However, the first message in this thread states “windows platform only”