首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >两个进程可以共享相同的GPU内存吗?(库达)

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

Stack Overflow用户
提问于 2017-02-03 20:14:17
回答 1查看 7.9K关注 0票数 14

在CPU世界中,人们可以通过内存映射来完成它。GPU也能做类似的事情吗?

如果两个进程可以共享一个相同的CUDA上下文,我认为这将是微不足道的-只是传递GPU内存指针。是否有可能在两个进程之间共享相同的数据自动化系统上下文?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-02-05 21:40:47

CUDA MPS有效地允许来自2个或更多进程的CUDA活动表现为它们在GPU上共享相同的上下文。(为了清楚起见: CUDA MPS不会导致两个或多个进程共享相同的上下文。但是,如果工作来自相同的进程,因此来自相同的上下文,则工作调度行为看起来类似于您将观察到的情况。)但是,这不能满足您所要求的内容:

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

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

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

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

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/42032331

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档