Portable Pinned memory


From Programming guide…
“Before CUDA 2.2, the benefits of pinned memory could only be realized on the CUDA context that allocated it”

Would anyone please elaborate this.
I understood the other pinned memory concept i.e. mapped pinned memory, but this feature i.e portable buffer is not clear. How are the two features (mapped and portable)different?


As I understand it, portable memory is necessary if you want to use the same host block from multiple GPU contexts, e.g. when running in parallel on multiple GPUs. Without that flag the block is known as pinned only to the context that created it. On the other hand, mapped memory is a way to access a host block as if it was in GPU memory - i.e. these are completely unrelated features.

Btw, what I would like to know is whether the portable and nonportable host blocks are automatically released by the driver when the original context is destroyed. I looked at the docs, but could not find anything definite, especially for portable ones.

Thanks for your reply!.

Tell me one thing why are you referring to Host Blocks when instead these blocks containing threads belong to GPU? Why did not you say GPU thread Blocks instead?

I was referring to a host memory block (or area, or whatever you call it). It has nothing to do with threads.