适合GPU运算的运算类型有以下六种:
1、大量的轻量级运算
即用大量数据或者用同一数据多次调用同一公式或者计算过程,公式本身并不复杂,只是执行的次数较多,这是GPU先天的优势。
2、高度并行
高度并行指的就是各个数据之间运算互不影响,即耦合度较低。由于GPU本身硬件基础决定,各个workgroup之间并不相互通信,只有同一workgroup内的work-item之间才相互通信,所以GPU本身并不支持迭代等数据耦合度较高的计算,这是GPU本身要求。
3、计算密集型
任务可以分为计算密集型和IO密集型。计算密集型,即少量的IO读取+大量的计算,消耗CPU资源较多;而IO密集型,是指多次使用IO读取+少量计算,这种情况涉及到寄存器与内存之间以及与设备内存之间的通信问题,主要限制原因是显存带宽问题。
4、控制简单
对比GPU来说,CPU更擅长判断、逻辑控制、分支等,有通用计算能力,并含有强大的ALU(算术运算单元);而GPU更适合于逻辑简单的运算。
5、多个阶段执行
运算程序可分解为多个小程序或者同一程序可分多个阶段执行,这就类似于使用集群处理同一任务,将其分解为多个任务碎片分发到各节点执行,以提高运算速率。
6、浮点型运算