【发布时间】:2011-07-18 19:40:54
【问题描述】:
我在 CUDA 设备上定义了以下常量:
__constant__ int deviceTempVariable = 1;
现在我尝试使用两种方法获取deviceTempVariable 的地址,但我得到了不同的结果。第一种是来自 CUDA 内核的直接内存访问,如下所示:
__global__ void cudaPointers(pointerStruct* devicePointer)
{
devicePointer->itsPointer = &deviceTempVariable;
}
另一种是通过主机代码如下:
cudaGetSymbolAddress((void**) &pointerCuda, "deviceTempVariable");
我很好奇并检查了地址值;第一个是00000008,第二个是00110008。偏移量似乎在所有情况下都相同(数字 8),但其余部分不同。这里发生了什么,我必须使用哪个地址?
【问题讨论】: