GPU并行计算与CUDA编程

1、并行计算编程

结构图

GPU并行计算与CUDA编程
左图:编程的模型。右图是硬件的模型。

CUDA编程的优点与后果

GPU并行计算与CUDA编程

GPU并行计算与CUDA编程
每一个线程块运算的时间不同。需要加以控制。需要考虑当一个线程计算完,调用另一个线程未计算完的情况。

CUDA编程模型的原则

GPU并行计算与CUDA编程

内存模型

GPU并行计算与CUDA编程
CPU调用GPU,将主存上的数据复制到GPU显存,再进行读取运算。

同步性synchronisation和屏蔽barrier

GPU并行计算与CUDA编程
barrier的作用起到阻隔的作用,只有当所有线程都到达时,释放所有线程。

CUDA编程模型

GPU并行计算与CUDA编程
对于线程块(Thread Block)来说,需要设置同步机制,防止线程之间的不等待导致出错。需要开放者设计运行逻辑
对于KernelA、KernelB,只有执行完毕KernelA才能执行KernelB,这是系统层面的控制。

2、GPU硬件模式

线程块

GPU并行计算与CUDA编程
一组线程块用于解决一个kernal核(函数)

GPU

GPU并行计算与CUDA编程
GPU的主要工作把线程块分配到SM流处理器。

GPU并行计算与CUDA编程
GPU实际上是处理他们之间的关系。

总结: GPU把kernel(也就是函数)的线程块分配到SM上进行处理,SM用于处理线程。