繁体   English   中英

两个进程可以共享相同的GPU内存吗? (CUDA)

[英]can two process shared same GPU memory? (CUDA)

在CPU世界中,人们可以通过内存映射来实现。 可以为GPU做类似的事情吗?

如果两个进程可以共享相同的CUDA上下文,我认为这将是微不足道的 - 只需传递GPU内存指针。 是否可以在两个进程之间共享相同的CUDA上下文?

我能想到的另一种可能性是将设备内存映射到内存映射主机内存。 由于它是内存映射的,因此可以在两个进程之间共享。 这是否有意义/可能,是否有任何开销?

CUDA MPS有效地允许来自2个或更多进程的CUDA活动在GPU上共享相同的上下文。 但是,这不会满足您的要求:

两个进程可以共享相同的GPU内存吗?

实现此目的的一种方法是通过CUDA IPC(进程间通信)API。

这将允许您在多个进程之间共享分配的设备内存区域(即通过cudaMalloc分配的内存区域)。 这个答案包含了解CUDA IPC的其他资源。

但是,根据我的测试,这不能在多个进程之间共享主机固定内存区域(例如,通过cudaHostAlloc分配的区域)。 内存区域本身可以使用适用于您的特定操作系统的普通IPC机制共享,但不能在2个或更多进程中显示为“固定”内存(根据我的测试)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM