<<<CUDA C++ 学习路线grid · block · warp · lane
返回首页
线程层级

线程索引可视化

拖动 gridDim 与 blockDim,点任意线程看它负责哪个元素。支持一维与二维网格,并实时显示越界线程。

维度

执行配置

64

每个 block 的线程数,始终取 32 的倍数

4

block 数量。这里限制在 8 以内以便可视化

200

真实数据长度。超出的线程会被边界检查挡掉

启动线程数
256
空转线程
56
覆盖完整。所需 block 数为 ceil(200 / 64) = 4,当前 gridDim = 4。
点击任意线程查看它的索引推导越界(被 if 挡掉)warp 0warp 1 …
blockIdx.x = 0global 063
blockIdx.x = 1global 64127
blockIdx.x = 2global 128191
blockIdx.x = 3global 192255
被选中的线程
blockIdx.x
1
threadIdx.x
5
warp(块内)
0
lane(warp 内)
5
int i = 1 * 64 + 5 = 69i < n,处理 c[69]
对应的代码
1__global__ void vecAdd(const float* a, const float* b, float* c, int n) {2    int i = blockIdx.x * blockDim.x + threadIdx.x;3    if (i < n) {4        c[i] = a[i] + b[i];5    }6}7 8int n = 200;9int threads = 64;10int blocks = (n + threads - 1) / threads;   // = 411vecAdd<<<blocks, threads>>>(d_a, d_b, d_c, n);