ブロックに次元があるグリッドでカーネルを開始する場合:
dim3 block_dims(16,16);
グリッドブロックはどのようにワープに分割されますか?そのようなブロックの最初の2行は1つの縦糸を形成しますか、それとも最初の2列を形成しますか、それともこれは任意の順序ですか?
GPUコンピューティング機能を2.0と想定します。
スレッドはブロック内で順番に番号が付けられ、最も速く変化threadIdx.x
し、次にthreadIdx.y
2番目に速く変化しthreadIdx.z
、最も遅く変化します。これは、多次元配列の列の主要な順序と機能的に同じです。ワープは、この順序でスレッドから順番に作成されます。したがって、2Dブロックの計算は次のようになります。
unsigned int tid = threadIdx.x + threadIdx.y * blockDim.x;
unsigned int warpid = tid / warpSize;
これは、プログラミングガイドとPTXガイドの両方で説明されています。