初学CUDA,做个笔记,鞭策自己。
CUDA--Compute Unified Device Architecture(统一计算设备架构)
thread: 并行基本单位
thread block: 互相合作的线程组
Grid: 一组thread block
Kernel:在GPU上执行的核心程序
one kernel<-> one grid
SPA-streaming processor array 流处理器阵列
TPC-thread processing cluster 线程处理集群
SM-streaming multiprocesor 流多处理器,是cuda 线程块的基本处理单元
SP-streaming processor 流处理器,是cuda单一线程的标量处理器
每个SM中最多8 block
Wrap:
每个block以wrap为单位执行。
线程以warp块发射到SM中。
一个warp中包含32个线程。一个warp内所有的线程执行相同的指令。
每个线程发射到SP中运行,一个warp运行4个clock cycles.
例如:3个block 分配到一个SM中,每个block 包含个thread, 那么sm中有多少warp?
block 256/32=8 wrap
8*3=24 wraps
任一时刻,24个wrap中只有一个在执行。
G80 Shared Memory:
每个SM拥有16KB的shared memory.
例如:
TILE_WIDTH=16,则每个block 有16*16=256个线程(thread).
每个thread block能分 2*256*4=2KB的share