一、线程模型:Grid、Block、Thread概念
1. 层级定义
-  Thread(线程) 
 CUDA中最基本的执行单元,对应GPU的单个CUDA核心(SP)。每个线程独立执行核函数指令,拥有独立的寄存器和局部内存空间。
-  Block(线程块) 
 由多个线程组成(通常为32的倍数),是逻辑上的并行单元。同一Block内的线程可通过共享内存(Shared Memory)协作,并支持同步操作(如__syncthreads())。一个Block内的线程会被划分为多个Warp(32线程为一组,以SIMT方式执行)。
-  Grid(网格) 
 由多个Block构成,代表完整的核函数执行空间。Grid内的Block可分配到不同SM(流多处理器)上并行执行,但不同Block之间无法直接通信。
2. 维度与索引
-  维度定义 
 Grid和Block均支持一维、二维或三维结构。例如,处理图像时常用二维Block(如16x16线程)
-  魔方图  
二、索引计算
- 全局索引:通过blockIdx(Block在Grid中的位置)、threadIdx(线程在Block中的位置)和blockDim(Block维度)计算全局位置。例如:int global_x = blockIdx.x * blockDim.x + threadIdx.x; // 一维示例
-  // 二维示例(如图像处理) int x = blockIdx.x * blockDim.x + threadIdx.x; int y = blockIdx.y * blockDim.y + threadIdx.y;blockIdx:线程块在对应 grid 中的编号。 
 threadIdx:线程在对应线程块中的编号。
 两者都是uint3向量类型,包含 x, y, z 三个 uint 成员。gridDim:grid 的维度,即每一维的 block 数量。对应调用 kernel 时的 gridSize。 
 blockDim:block 的维度,即每一维的 thread 数量。对应调用 kernel 时的 blockSize。
 两者都是dim3向量类型,包含 x, y, z 三个 uint 成员。例: gridDim.x:当前 grid 中线程块的数量(一维)/ 



















