在摩尔定律依旧适用的年代,新型的处理器以其卓越的性能与更高级的FLOPS相对应。这是由于它们拥有更高的运算电路密度、更快的时钟频率以及更多的处理器内核。
自九十年代末GPU的诞生开始,其初期的浮点运算性能与当时的CPU相比相差无几。随着时间的发展,CPU处理器的进步逐渐遭遇了瓶颈。由于制造工艺的限制,电路密度的进一步优化变得困难;高功耗使得时钟频率的提升变得不易;多核的利用也并未实现运算效率的线性增长。摩尔定律开始显现出其局限性,但在计算机图形学领域,单指令多数据/线程(SIMD/SIMT)的并行化却获得了得天独厚的条件。
自2007年起,NVIDIA推出了CUDA,并逐渐发展出一套完整的二级并行架构。在这个架构中,执行相同指令的线程组成了kernel,而kernel又进一步组合成block。在block级别上,提供了共享内存以及其他机制以促进线程间的通信与合作。可以形象地将这些线程比作虚拟的向量处理器,每个都配备了自身的寄存器、程序计数器(PC)等;而block则可以被视为虚拟的多核处理器,其内部包含多个线程及共享内存。
GPU与CPU之间的根本差异源于其各自的目标需求:GPU假定其上运行的工作高度可并行化,而CPU则需要同时很好地支持并行与顺序操作。这导致了CPU需要配备大容量的片上缓存和复杂的控制逻辑,而GPU则通过多线程并行运行减少了片上大缓存的需求,并对一组执行相同控制逻辑的线程进行了优化。
在那些高度并行化且数据规模庞大的应用场景中,GPU能够展现出卓越的浮点运算性能。当问题难以映合适的并行模型或数据规模较小时,SIMT的并行优势便无法充分发挥,CPU与GPU间的数据交换也会降低运算效率。这一问题在CUDA 4.0的最新版本中通过GPUDirect 2.0得到了有效改善。
—— 结束 ——