カーネル呼び出しでグリッド サイズとスレッド カウントを渡すと、これらの値は常に、渡したとおりに gridDim と blockDim に配置されますか?
さらに、blockIdx と threadIdx は常にこれらの制限を尊重しますか?
つまり、呼び出し
kernel<<<5, 7>>>()
常に、カーネルで、
gridDim.x == 5 && blockIdx.x < gridDim.x
blockDim.x == 7 && threadIdx.x < blockDim.x
保持する上記の条件?(2D と 3D のサイズとインデックスも同じですか?)
これはばかげた質問に聞こえるかもしれませんが、CUDA がリソース割り当てのこの制限を無視できるかどうか疑問に思っているため、プログラマーは常に確認する必要があります。
それが明確であることを願っています、ありがとう!