2012-09-26 36 views
1

有什麼方法可以在2維中分配和複製CUDA常量內存區域? __constant__的cudaMemcpyToSymnbol似乎不是一個選項。CUDA常量內存2維

+0

爲什麼不在1維中分配它並按行優先級訪問它? – pQB

+1

在CUDA SDK或示例中的quasirandomGenerator示例顯示在常量內存中使用相應的cudaMemcpyToSymbol分配的二維表來填充quasirandomGenerator_kernel.cuh中的表 –

+0

@RobertCrovella:您會添加一個答案,其中包含一些來自示例的選擇部分,參考這個例子本身? –

回答

3

在CUDA SDK(或樣品)的quasirandomGenerator示例顯示了一個二維表中恆定存儲器被分配與相應的cudaMemcpyToSymbol來填充該表中quasirandomGenerator_kernel.cuh二維表的

聲明:

static __constant__ unsigned int c_Table[QRNG_DIMENSIONS][QRNG_RESOLUTION]; 

cudaMemcpyToSymbol呼叫:

//Table initialization routine 
static void initTableGPU(unsigned int tableCPU[QRNG_DIMENSIONS][QRNG_RESOLUTION]){ 
    cutilSafeCall(cudaMemcpyToSymbol(
     c_Table, 
     tableCPU, 
     QRNG_DIMENSIONS * QRNG_RESOLUTION * sizeof(unsigned int) 
    )); 
} 

表被引擎蓋下在處理一個一維的方式(如pQB所建議的),所以我不知道這是OP究竟在尋找什麼。 安裝CUDA SDK(或CUDA 5.0 RC工具包中調用的示例)時會自動安裝該示例,但您可以在網絡上單獨找到它here. 選擇右側的相應下載鏈接以獲取存檔與示例代碼。然後打開存檔並查找文件quasirandomGenerator_kernel.cuh