我在CUDA设备上定义了以下常量:CUDA指针设备常数
__constant__ int deviceTempVariable = 1;
现在我试图用两种方法得到的deviceTempVariable
的地址,我得到不同的结果。首先是从一CUDA内核直接存储器存取如下:
__global__ void cudaPointers(pointerStruct* devicePointer)
{
devicePointer->itsPointer = &deviceTempVariable;
}
另一种是通过主机的代码如下:
cudaGetSymbolAddress((void**) &pointerCuda, "deviceTempVariable");
我很好奇,并检查地址值;第一个是00000008
,第二个是00110008
。所有情况下的偏移似乎都是相同的(数字8),但其余的不同。这里发生了什么,我必须使用哪个地址?