我在CUDA設備上定義了以下常量:CUDA指針設備常數
__constant__ int deviceTempVariable = 1;
現在我試圖用兩種方法得到的deviceTempVariable
的地址,我得到不同的結果。首先是從一CUDA內核直接存儲器存取如下:
__global__ void cudaPointers(pointerStruct* devicePointer)
{
devicePointer->itsPointer = &deviceTempVariable;
}
另一種是通過主機的代碼如下:
cudaGetSymbolAddress((void**) &pointerCuda, "deviceTempVariable");
我很好奇,並檢查地址值;第一個是00000008
,第二個是00110008
。所有情況下的偏移似乎都是相同的(數字8),但其餘的不同。這裏發生了什麼,我必須使用哪個地址?