一、主机与设备
1、 CPU--逻辑性强的串行事务计算
2、 GPU--线程化、并行处理
3、CUDA程序包括:
串行代码
并行kernel
串行代码
并行kernel
4、 串行代码完成:
数据准备
设备初始化
清理上一个内核函数,启动下一个内核函数
5、kernel函数:
kernel包括grid(线程网格),grid包括block(线程块),block包括thread(线程)
二、kernel函数定义、调用
1、-global-
2、VecAdd<<1,N>>(A,B,C)
1表示有一个block,N表示一个block中有N个线程
3、先为用到的数组和变量分配好足够空间后再调用kernel函数
4、每个线程都有自己的blockID和threadID
它们只能在kernel中通过内建变量访问
内建变量由设备(GPU)专用寄存器提供,只读
三、线程结构
1、线程以block为单位执行
2、各block间并行执行,无法通信
3、CUDA使用了dim3类型(由三个unsigned int组成的结构体)的内建变量