4

私はCUDAを学んでおり、多くのサンプルコードで、ブロックとグリッドの寸法が次のように設定されていることがわかります:

dim3 dimGrid(numBlocks);
dim3 dimBlock(numThreadsPerBlock);
exampleKernel<<<dimGrid, dimBlock>>>(input);

dim3 dimGrid(numBlocks);次のような行は、dim3 型の変数である dimGrid を x 値として初期化していることを理解していますnumBlocksが、これがどのように機能するかはわかりません。

私はそれが通常の C++ 構文であると想定していましたが、C++ の場合、行は次のように記述しなければならないと考えました。

dim3 dimGrid = dim3(numBlocks);

そうしないと、「最も厄介な解析」が行われます。したがって、これらの行を変数割り当てとして解釈することは、CUDA の NVCC コンパイラによる特別な動作であると想定していますが、これを確認するものは何も見つかりません。

これが起こっているというのは正しいですか、それともこれがどのように機能するかについて私が理解していないことがありますか?

4

2 に答える 2