【发布时间】:2015-03-23 22:20:02
【问题描述】:
关于标准 CUDA 内存分配模型的快速问题:
double* x_device;
cudaMalloc(&x_device,myArraySize);
变量x_device 是一个双精度指针。在我调用 cudaMalloc 之后,x_device 现在是否指向了 cuda 设备上的内存位置?所以,换句话说,*x_device 会导致段错误,因为我们不能直接从主机访问设备内存。
顺便问一句,编译器没有抱怨我不用(void**)&x_device,这是必须的吗?我有时会在示例中看到它,有时不会。
谢谢!
【问题讨论】:
-
我相信您在取消引用主机上的设备指针时不能依赖获取段错误。结果未定义,但不能保证段错误。无论结果如何,您都不应该这样做(在主机代码中取消引用设备指针)。