Zeroing GPU memory

Hello everybody,

For a potential project, I will have to use GPU cards, but I will not be the only person who will have access to them, as it will be shared among several users, using maybe Virtual Machines.
I would like to know, if with some of the latest GPUs with Pascal architecture, such as the Tesla P100, Quadro GP100 or GTX 1080 Ti, I could have security concerns, regarding the memory.
Would it be possible for another person to read elements from the memory of the GPU if the card has not been rebooted? Or is there a way to erase GPU memory after my work on it is done? Maybe the driver does it itself?

Thanks in advance

From my experience, the driver does not erase memory after it is freed. You can easily do it yourself from host code using cuda_memset(). Doing it in device code is slow and best avoided.

Thanks for your answer!

But would that erase the whole memory? Is it possible that the memory manager does not give access to the whole memory?

About the speed, how much time are we talking about? Few seconds or more than one minute?

This is dependent on the platform… I know there is a request on OS X to zero memory for textures and surfaces for Metal (apparently people at Apple look at porn and it can show up as reused memory at the most inconvenient of times… maybe when a coworker / manager shows up). But I don’t know if that is applied to other platforms.

If it’s resident GPU memory and not shared with the host it should be easy, if its on the host you have to pay the price of a memory zero which includes all the cache flush and read back issues depending on the type of memory (write combined should be “ok” but still a waste of CPU time).