Is it possible to share a Cuda Array between processes?

The API seems to suggest (with the void* parameter) that we can only share chunks of memory interprocess. Internally (I presume), a CudaArray_t somehow must map to a chunk of memory with some metadata. Is there a trick to accomplish this?

If processes could simply share GPU memory, it would seem to be a giant security hole that would delight virus writers.


Please see the CUDA runtime API documentation regarding inter process communication. IPC is absolutely supported, and I have demonstrated this myself by running the SDK examples which have existed for a very long time as of now.

I am very much not a security expert. However, I am in complete control of the machines on which my IPC code is executed, so I am not concerned about security.

My life would just be easier if I could share cudaArray_t between processes, so this is why I ask.

IPC != simple sharing of GPU memory between processes. You seem to be asking about the latter, not the former. If that is a misunderstanding of what you are after, you might want clarify the question.

I’m not sure I’m following your concern.

I would like to share a cuda array between processes. Are you able to offer any assistance?