系统相关
首页 > 系统相关> > linux – 是否有可能在应用程序之间共享Cuda上下文?

linux – 是否有可能在应用程序之间共享Cuda上下文?

作者:互联网

我想在两个独立的Linux进程之间传递Cuda上下文(使用POSIX消息队列,我已经设置了它).

使用cuCtxPopCurrent()和cuCtxPushCurrent(),我可以得到上下文指针,但是这个指针在我调用函数的进程的内存中被引用,并且在进程之间传递它是没有意义的.

我正在寻找其他解决方案.我到目前为止的想法是:

>尝试深层复制CUcontext结构,然后传递副本.
>看看我是否能找到一个共享内存解决方案,其中所有Cuda指针都放在那里,这样两个进程都可以访问它们.
>将流程合并为一个程序.
> Cuda 4.0中可能有更好的上下文共享,我可以切换到.

我不确定选项(1)是否可行,也不确定(2)是否可用. (3)如果我想制作通用的东西(这是在劫持垫片内),那么这不是一个真正的选择. (4)我会看看Cuda 4.0,但我不确定它是否能在那里工作.

谢谢!

解决方法:

总之,没有.上下文隐含地绑定到创建它们的线程和应用程序.单独的应用程序之间没有可移植性.这与OpenGL和各种版本的Direct3D几乎相同 – 不支持在应用程序之间共享内存.

CUDA 4使API线程安全,因此单个主机线程可以同时保存多于1个上下文(即多于1个GPU),并使用规范设备选择API来选择正在使用的GPU.如果我正确理解你的问题/申请,这对我们没有帮助.

标签:linux,gpu,cuda,interprocess
来源: https://codeday.me/bug/20190630/1338925.html