我正在使用 Mathematica 将一个简单的变量加载到 GPU 内存中:
mem = CUDAMemoryLoad[{1, 2, 3}]
并得到以下结果:
CUDAMemory["<135826556>", "Integer32"]
现在,有了 GPU 内存中的这些数据,我想使用 Thrust 从单独的 .cu 程序(在 Mathematica 之外)访问它。
有没有办法做到这一点?如果是这样,有人可以解释一下吗?
最佳答案
不,没有办法做到这一点。 CUDA 上下文是私有(private)的,在标准 API 中,一个进程无法访问在另一个进程上下文中分配的内存。
在 CUDA 4 发布周期中,发布了一个名为 cudaIpc 的新 API。这允许在同一主机上运行具有 CUDA 上下文的两个进程导出和交换句柄到 GPU 内存分配。该 API 仅在运行统一寻址支持的 Linux 主机上受支持。据我所知,Mathematica 目前不支持这一点。
关于cuda - 在 Thrust 中读取已分配的内存/向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13369620/