GPU编程基础-CUDA实现图像处理
1. 相关基础概念
1.1 Host和Device程序
- 在CPU上运行的称为Host程序;
- 在GPU上运行的称为Device程序。
1.2 Kernel程序
GPU上运行的函数又被叫做Kernel函数。
Host程序在调用Device程序时,可以通过参数确定执行该Kernel的CUDA threads的数量。每个Thread在执行Kernel函数时,会被分配一个thread ID,Kernel函数可以通过内置变量threadIdx访问。一个Kernel函数对应一个Grid。每个Grid中的任务是一定的。当要执行这些任务的时候,每一个Grid又把任务分成一部分一部分的Block(线程块),Block中间有若干Thread(线程),再分成线程来完成。
1.3 SIMT和SIMD
- CPU的SIMD单指令多数据,Single Instruction Multiple Data
- Single Instruction Multiple Threads(SIMT)即GPU是单指令多线程。
CPU运算和GPU运算的差异性:**GPU简单说就是用多线程掩盖延迟。**这一设计区别于CPU的特点(CPU采用大量高延迟寄存器取代了少量低延迟寄存器),寄存器的数量保证了可以有大量线程同时存活,且可以在各组线程间快速切换。尽管每个线程是慢的,但庞大的线程数成就了GPU的数据吞吐能力。