图形处理器(Graphics Processing Unit,简称GPU)每秒能够进行数以亿次的计算,目前其已成为一种性能十分惊人的器件。通常,GPU主要用来承担实时图形渲染中的海量数学运算,然而,其潜在的计算能力也可用于处理与图形无关的任务。
  CUDA与OpenCL早已能够基于GPU实现并行计算,而OpenGL与DirectX也分别于OpenGL4.3与DirectX11版本后能够通过计算着色器的方式基于GPU实现并行计算。从图中可以看到,计算着色器是独立与通常的渲染管线的。

CUDA:NVIDIA推出的通用并行计算架构,该架构能够使用GPU解决复杂的计算问题。
OpenCL:针对异构系统进行并行编程的一个全新API,能够利用GPU进行并行计算。

计算着色器(Compute Shader)

1. CPU与GPU

  前面提到了计算着色器能够基于GPU实现并行计算,从而提升计算能力,那么GPU到底独特在哪呢?为什么又比CPU的计算速度还要快?
  理解CPU与GPU之间区别的一种简单方式是比较他们是如果处理任务的:
- CPU 由专为顺序串行处理而优化的几个核心组成,其需要很强的通用性来处理各种不同的数据类型,除此之外逻辑判断会引入大量的分支跳转和中断处理,使得CPU的内部结构异常复杂。
- GPU 拥有一个由数以千计的更小、更高效的核心(专为同时处理多重任务而设计)组成的大规模并行计算架构。

计算着色器(Compute Shader)

  其中,绿色是计算单元,橙红色是存储单元,橙黄色是控制单元。
  GPU采用了数量众多的计算单元和超长的流水线,但只有非常简单的逻辑控制并省去了Cache;而CPU不仅被Cache占据了大量空间,还有很复杂的控制逻辑和诸多优化电路,相比之下计算能力只是GPU很小的一部分。

相关文章: