我正在开发一个 Windows 64 位应用程序,它将管理多个 GPU 上不同 CUDA 算法的并发执行。
我的设计需要一种在 c++ 代码周围传递指向设备内存的指针的方法。(例如,记住它们是我的 c++ 对象中的成员)。我知道用__device__
限定符声明类成员是不可能的。
但是,我找不到明确的答案是否将__device__
指针分配给普通 C 指针然后使用后者是否有效。换句话说:以下代码有效吗?
__device__ float *ptr;
cudaMalloc(&ptr, size);
float *ptr2 = ptr
some_kernel<<<1,1>>>(ptr2);
对我来说,它编译并表现正确,但我想知道它是否保证正确。