1

CUDA 定数メモリ領域を 2 次元で割り当ててコピーする方法はありますか? cudaMemcpyToSymnbolof __constant__ はオプションではないようです。

4

1 に答える 1

3

CUDA SDK (またはサンプル) の quasirandomGenerator の例は、対応する cudaMemcpyToSymbol を使用して定数メモリに割り当てられている 2 次元テーブルを示し、quasirandomGenerator_kernel.cuh にテーブルを設定します。

2D テーブルの宣言:

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)
    ) );
}

テーブルは内部で 1 次元の方法で処理されているため (pQB で示唆されているように)、OP が正確に探していたものかどうかはわかりません。サンプルは、CUDA SDK (または CUDA 5.0 RC ツールキットで呼び出されるサンプル) をインストールすると自動的にインストールされますが、こちらの Web で個別に見つけることができます。 右側の適切なダウンロード リンクを選択して、サンプル コードを含むアーカイブを取得します。次にアーカイブを開き、ファイル quasirandomGenerator_kernel.cuh を探します。

于 2012-09-26T19:48:46.470 に答える