1.1 从图形处理到并行计算
- GPU:高并行,多线程,多核心,强大计算能力和极高的内存带宽。
- CPU和GPU在浮点计算能力的差异在于GPU是计算密集型的,高度并行的,因此更多的晶体管被投入到数据处理而非数据缓存和流控制。
- 应用:
In 3D rendering【渲染】, large sets of pixels and vertices are mapped to parallel threads. Similarly【类似地】, image and media processing applications such as post-processing【后处理】 of rendered images, video encoding and decoding, image scaling, stereo vision, and pattern recognition【模式识别】 can map image blocks and pixels to parallel processing threads.
事实上,有很多图像渲染和处理领域之外的算法可以通过并行数据处理来加速,从信号处理或物理仿真到金融计算或计算生物学。
CUDA:并行计算平台和编程模型
- A General-Purpose Parallel Computing Platform and Programming Model
可编程扩展模型 A Scalable Programming Model
- CUDA核心的三个关键抽象:
- a hierarchy of thread groups【线程组的层次结构】
- shared memories【共享内存】
- barrier synchronization【栅栏同步】
- 这些都简单地暴露给编程者作为最小的语言扩展集。
- 这些抽象提供了细粒度的数据并行性和线程并行性,嵌套在粗粒度数据并行性和任务并行性中。
- 它们指导程序员将问题划分为 粗略的子问题,这些子问题可以通过线程块并行独立解决,并且每个子问题都可以更精细,可以由块内的所有线程并行地协同解决。