我想在两个独立的Linux进程之间传递Cuda上下文(使用我已经设置的POSIX消息队列)。
使用cuCtxPopCurrent()
和cuCtxPushCurrent()
,我可以得到上下文指针,但是在我调用函数的进程的内存中引用了这个指针,并且在进程之间传递它是没有意义的。< / p>
我正在寻找其他解决方案。到目前为止,我的想法是:
CUcontext
结构,然后传递副本。我不确定选项(1)是否可行,也不确定(2)是否可用。 (3)如果我想制作通用的东西(这是在劫持垫片内),那么这不是一个真正的选择。 (4)我会看看Cuda 4.0,但我不确定它是否会在那里工作。
谢谢!
答案 0 :(得分:3)
总之,没有。上下文隐含地绑定到创建它们的线程和应用程序。单独的应用程序之间没有可移植性。这与OpenGL和各种版本的Direct3D几乎完全相同 - 不支持在应用程序之间共享内存。
CUDA 4使API线程安全,因此单个主机线程可以同时保存多于1个上下文(即多于1个GPU),并使用规范设备选择API来选择正在使用的GPU。如果我正确理解你的问题/申请,这对我们没有帮助。