图形处理器(Graphics Processing Unit,简称GPU)每秒能够进行数以亿次的计算,目前其已成为一种性能十分惊人的器件。通常,GPU主要用来承担实时图形渲染中的海量数学运算,然而,其潜在的计算能力也可用于处理与图形无关的任务。
CUDA:NVIDIA推出的通用并行计算架构,该架构能够使用GPU解决复杂的计算问题。
OpenCL:针对异构系统进行并行编程的一个全新API,能够利用GPU进行并行计算。
1. CPU与GPU
前面提到了计算着色器能够基于GPU实现并行计算,从而提升计算能力,那么GPU到底独特在哪呢?为什么又比CPU的计算速度还要快?
理解CPU与GPU之间区别的一种简单方式是比较他们是如果处理任务的:
CPU 由专为顺序串行处理而优化的几个核心组成,其需要很强的通用性来处理各种不同的数据类型,除此之外逻辑判断会引入大量的分支跳转和中断处理,使得CPU的内部结构异常复杂。
GPU 拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。
其中,绿色是计算单元,橙红色是存储单元,橙黄色是控制单元。
GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的逻辑控制并省去了Cache;而CPU不仅被Cache占据了大量空间,还有很复杂的控制逻辑和诸多优化电路,相比之下计算能力只是GPU很小的一部分。