多个进程可以共享一个 CUDA 上下文吗?

Posted

技术标签:

【中文标题】多个进程可以共享一个 CUDA 上下文吗?【英文标题】:Can multiple processes share one CUDA context? 【发布时间】:2020-03-03 22:49:05 【问题描述】:

这个问题是 Jason R 的 comment 对 Robert Crovellas 在 this original question 上的回答的后续问题(“一个设备的多个 CUDA 上下文 - 有什么意义吗?”):

当你说多个上下文不能同时运行时,这是 仅限于内核启动,还是指内存传输 也?我一直在考虑同时进行多进程设计 GPU 使用 IPC API 在进程之间传输缓冲区。 这是否意味着有效地,一次只有一个进程具有 独占访问整个 GPU(不仅仅是特定的 SM)? [...] 那是怎么回事 与每个流中的异步排队内核/副本相互作用 调度的进程?

Robert Crovella 建议在一个新问题中提出这个问题,但它从来没有发生过,所以让我在这里这样做。

【问题讨论】:

【参考方案1】:

Multi-Process Service 是 Nvidia 的另一种 CUDA 实现,它使多个进程使用相同的上下文。这例如允许来自多个进程的内核并行运行,前提是它们中的每一个都不能自己填满整个 GPU。

【讨论】:

以上是关于多个进程可以共享一个 CUDA 上下文吗?的主要内容,如果未能解决你的问题,请参考以下文章

cuDevicePrimaryCtxRetain() 是不是用于在多个进程之间拥有持久的 CUDA 上下文对象?

如何减少 CUDA 上下文大小(多进程服务)

我可以在 React 中跨多个树共享一个组件实例吗?

Java多线程基础

多线程/多进程/协程

python多线程