我一直在試圖分配一個可以被每個內核函數訪問的變量。 我的嘗試是下面附加的代碼,但它不會編譯,因爲內核無法查看dArray。在C++中,您可以將變量放在頂部,或聲明靜態,以便在程序中的每個範圍內訪問。CUDA在設備上靜態分配數據
__global__ void StoreThreadNumber()
{
dArray[threadIdx.x] = threadIdx.x;
}
int main(int argc, char** argv)
{
unsigned __int8 Array[16] = { 0 };
unsigned __int8 dArray[16];
for(__int8 Position = 0; Position < 16; Position++)
cout << Array[Position] << " ";
cout << endl;
cudaMalloc((void**) dArray, 16*sizeof(__int8));
cudaMemcpy(dArray, Array, 16*sizeof(__int8), cudaMemcpyHostToDevice);
StoreThreadNumber<<<1, 16>>>();
cudaMemcpy(Array, dArray, 16*sizeof(__int8), cudaMemcpyDeviceToHost);
for(__int8 Position = 0; Position < 16; Position++)
cout << Array[Position] << " ";
cout << endl;
cudaFree(dArray);
}