0

CUDA でグリッドごとに正しいブロック数を取得するのに苦労していました。2D の CUDA カーネルで必要なブロック数を計算するための基本的/単純な式を誰でも示すことができますか? (つまり、gridDim.x と gridDim.y) ユーザーが合計 N 個のスレッドを実行したいと考えており、ブロックが A x B (計算能力に応じて A*B<=512 または 1024) である場合、または単純な場合場合によっては、彼のブロックが 8 x 8 であると仮定しましょう。ありがとうございます。また、私たちが心に留めておかなければならないことを指摘できますか。たとえば、それらが2のべき乗であるかどうかは本当に重要ですか...

 dim3 dimBlock(A,B);
 dim3 dimGrid(Z,T);

Z と T を探しています。ありがとうございます!!!

4

1 に答える 1

0

スレッドの総数Nは、次のように計算されます。

N = No_blocks * No_threads_per_block

つまりA*B、ブロックごとにスレッドがあるので、が必要Z*T=N/(A*B)です。

Zもちろん整数である必要がありTますが、2の累乗である必要はありません。また、CUDA計算機能によっては、グリッドの各次元のブロック数に制限があります。

于 2012-07-28T16:24:39.017 に答える