0

問題のコードを見ています:CUDAカーネルのグリッドとブロックの寸法を選択するにはどうすればよいですか? これは、次の質問からのフォローアップ質問です:CUDAグリッド、ブロック、スレッドサイズを取得し、非正方行列計算を並列化する方法

const int n = 128 * 1024;
int blocksize = 512; // value usually chosen by tuning and hardware constraints
int nblocks = n / nthreads; // value determine by block size and total work
madd<<<nblocks,blocksize>>>mAdd(A,B,C,n);

blocksizeとnthreadsの違いは何ですか?それらは同じものだと思います。これは単なるタイプミスですか、それとも何かが足りないのですか?

4

1 に答える 1

0

ブロックの数は、インスタンスの数を各ブロックのサイズで割ったものになります。ただし、これは非整数の答えになる可能性があります。そのため、リソースをいくらか浪費して各インスタンスが実行されるように、切り上げを行う必要があります。

したがって、あなたが本当にやりたいことは、この小さな整数演算のトリックを適用することです:

int nblocks = (n+blocksize-1)/blocksize;
于 2012-06-07T15:22:28.973 に答える