GPU与CPU计算的不同
记者:Tesla基于NVIDIA CUDA,该技术最显著的特点就是能够利用GPU的并行计算能力,在大规模、高带宽计算中有着极大的优势。 但是,面对串行计算密集型任务,Tesla是否有解决办法呢?
Andy:GPU及其内部的CUDA架构是专为并行计算而设计的。
串行计算是一种有很大区别的架构,这种架构的设计目的是为了解决不同的问题。CPU执行指令的方式就是一个接着另一个地执行。CPU中有许多能够加速串行计算的技术。高速缓存、无次序执行、超标量技术、分支预测……均为抽取指令的技术或一系列指令的串行级并行机制。CPU对片上高速缓存的设计与容量的依赖也非常大。如果程序大小与CPU高速缓存容量不匹配,那么该程序在CPU上的运行速度将会很慢。
GPU内部的并行计算架构围绕两个基本概念而设计。首先,程序中的数据可分成许多个部分,而为数众多的核群可以并行地处理这些数据。第二个架构方面的设想是,数据将不与高速缓存匹配。例如在图形计算或石油天然气数据处理上,数据量可能会达到兆字节甚至是太字节,用高速缓存来容纳如此巨大的数据量几乎是不切实际的。考虑到这两点设想,GPU被设计为能够使用数以千计的线程,所有线程均并行地执行,能够访问巨大容量的本地存储器。在最新的Tesla产品中,每颗GPU均配备4GB存储器,可容纳待执行的数据。同时针对反复使用的数据,还设有较小的片上存储空间,GPU所配备的巨大容量存储器等同于CPU内部的高速缓存,只是容量大了许多倍而已。