GPU通用计算简介
传统上,GPU的应用被局限于处理图形渲染计算任务。随着GPU可编程性的不断提高,利用GPU完成通用计算渐渐活跃起来。将GPU用于图形渲染以外领域的计算称为GPGPU(General-Purpose computing on Graphics Processing,基于GPU的通用计算)。GPGPU计算通常采用CPU+GPU异构模式,由CPU负责执行复杂逻辑处理和事务管理等不适合数据并行的计算,由GPU负责计算密集型的大规模数据并行计算。这种利用GPU强大处理能力和高带宽弥补CPU性能不足的计算方式在发掘了计算机潜在的性能,在成本和性价比方面有显著优势。
GPU计算拥有性价比高,性耗比高,设备易得的优势,在图像视频处理、石油勘探、分子动力学、信号处理、人工智能、数据挖掘、基因测序、密码学等领域得到了广泛应用。在移动计算中,Google在Android 4.2开始使用GPU加速renderscript进行图像处理和图像/视频压缩。Nvidia和ARM则分别使用GPU加速照相处理架构,代替部分ISP功能。
自2010年以来,移动设备GPU的性能快速提高,发展速度远远超过了摩尔定律。
进入2014年,市场上在销售的中高端处理器性能已经达到100GFlosp左右,并且已经发布和即将发布一批搭载Kepler,Mali-T760 MP16等理论性能超过300GFlops GPU的处理器。预计到2015年末,高端移动处理器的性能将达到1TFlops左右。
以下是2014Q1手机/平板常见移动处理器的CPU、GPU及处理能力:
SoC Model |
CPU Type |
CPU GFlops |
GPU Type |
GPU GFlops |
Qualcomm APQ8064AB (SnapDragon 600) |
4xKrait300 @1.9GHz |
60.8 |
Adreno320 (96ALU) |
97.2 |
Qualcomm APQ8974AB (SnapDragon 800) |
4xKrait400 @1.9GHz |
73.6 |
Adreno330 (128 ALU) |
158.4 |
Nvidia Tegra 4 |
4xcortex-A15 @1.9GHz |
60.8 |
GeforceULP x 72 |
96 |
AppleA6X |
2xApple Swift@1.4GHz |
22.4 |
SGX554 MP4 |
76.8 |
AppleA7 |
2xApple 64bit@1.5GHz |
48 |
G6430 (4 Clusters) |
115.2 |
MTK MT6592 |
8xcortex-A7@1.7GHz |
27.2 |
Mali-450 MP4 |
41.8 |
MTK MT8135 |
2xcortex-A15@1.7GHz + 2xcortex-A7@1.2GHz |
32 |
G6200
|
40 |
表 1 2014Q1市场常见移动处理器CPU/GPU性能
以下是2014Q1新发布处理器CPU、GPU及处理能力:
SoC Model |
CPU Type |
CPU GFlops |
GPU Type |
GPU GFlops |
MTK MT6595 |
4xA17@2.1+4xA7@1.7 |
80.8 |
Adreno330 (128 ALU) |
158.4 |
Intel Z3580 |
4xMoorefield@2.33GHz |
N/A |
PowerVR G6430 |
136 |
Tegra K1 Quad A15 |
4xcortex-A15@2.3GHz |
73.6 |
Kepler |
364.8 |
表 2 2014Q1新发布处理器CPU/GPU性能
从表一、表二可以看到,即使以NEON向量处理器计算理论性能,同一SoC上的GPU性能也要超过CPU。而且GPU和CPU的性能差距在高端和较新的处理器上更加明显。事实上,GPU与CPU的处理能力差距比理论峰值还要更大:
目前的ARM架构移动处理器主要通过NEON SIMD指令或者VFP指令集进行浮点运算。在进行相同的操作时,VFP的吞吐量只有NEON的大约四分之一。标准Android操作系统的dalvik虚拟机不支持生成Neon指令,在运行Java时只能使用VFP指令。即使通过NDK或者JNI,如果要调用数学函数或者除法等较为复杂的处理,也需要使用VFP指令集。而GPU的执行单元可以直接执行数学函数,甚至有专门的硬件单元进行超越函数运算。而且,在进行图形/图象处理时,GPU除了运算单元外,纹理采样单元也可以进行一些运算。
GPU的缺点在于执行单元在运行条件指令时,某些情况下需要的时间是几个分支之和,而不是一个分支所需要的时间。另外,只有存在大量数据并行计算时,才能完全发挥GPU性能。因此GPU适合进行分支较少、线程间通信较少的大规模数据并行任务。
移动GPU现状与发展
目前移动GPU主要厂商有:Imagination Technologies、 Qualcomm、ARM、 NVIDIA、 Vivante、Intel。其市场占有率如下表所示:
|
1H’12 |
1H’13 |
Qualcomm |