【发布时间】:2015-06-24 03:01:15
【问题描述】:
我会用cudaMallocManaged 分配一些内存。我可以安全地将这个指针传递给另一个不知道 CUDA 的程序模块(它被编译成另一个 .o 文件),并且只会使用普通的 memcpy 或其他东西来操作指针后面的数据吗?
类似的东西
// compiled into A.o
class A{
void* getMem(int size){
void* ptr;
cudaMallocManaged(*ptr, size);
return ptr;
}
// some kernels here
}
// compiled into B.o
class B{
void manipulateMem(void* ptr, void* source, int size){
memcpy(ptr, source, size);
}
}
然后是这样的代码,可能会编译到 main.o:
A a;
B b;
void* mem = a.getMem(100);
b.manipulateMem(mem, source, 100);
我没有发现自动复制/同步在这种情况下不起作用的任何通知。
【问题讨论】:
标签: cuda