当我在内核调用中传递网格大小和线程数时,这些值是否会始终完全按照我传递的方式放置在 gridDim 和 blockDim 中?
而且,blockIdx 和 threadIdx 会始终遵守这些限制吗?
换句话说,调用
kernel<<<5, 7>>>()
总是导致在内核中,
gridDim.x == 5 && blockIdx.x < gridDim.x
blockDim.x == 7 && threadIdx.x < blockDim.x
满足以上条件?(同样具有 2D 和 3D 尺寸和索引?)
我知道这听起来可能很愚蠢,但我想知道是否允许 CUDA 忽略资源分配的限制,因此程序员总是需要检查。
希望清楚,谢谢!