CUDA基础概念

CUDA 内置变量


1. 线程和块索引变量

这些变量用于确定当前线程在网格(grid)和块(block)中的位置:

变量名 数据类型 说明
threadIdx dim3 当前线程在 block 内的索引x, y, z 分量)
blockIdx dim3 当前 block 在 grid 内的索引x, y, z 分量)
blockDim dim3 block 的维度(每个 block 的线程数,x, y, z 分量)
gridDim dim3 grid 的维度(每个 grid 的 block 数,x, y, z 分量)

2. 计算能力相关的常量

这些变量描述了 GPU 的硬件特性:

变量名 数据类型 说明
warpSize int 一个 warp 的线程数(通常是 32)
__CUDA_ARCH__ int 编译目标的计算能力(如 700 表示 SM 7.0)

3. 内存和同步变量

这些变量用于控制内存访问和线程同步:

变量名 说明
__shared__ 定义共享内存(每个 block 共享)
__constant__ 定义常量内存(只读,全局可见)
__device__ 定义全局设备变量(所有线程可见)
__syncthreads() 块内线程同步(等待所有线程执行到此处)

4. 数学和特殊函数

CUDA 提供了一些内置数学函数(如 sin, exp, atomicAdd):

类别 示例函数
数学运算 sin, cos, exp, log, sqrt
原子操作 atomicAdd, atomicSub, atomicMax
类型转换 __float2half, __int2float_rn

5. 其他特殊变量

变量名 说明
clock() 获取 GPU 时钟周期(用于计时)
nanosleep() 线程休眠(ns 级延迟)