基于Mali-T604嵌入式GPU的二维浮点矩阵运算并行优化
ARM Cortex-A15系列处理器是当前最新的嵌入式ARM SoC,该系列处理器首次集成了Mali-T600系列的移动端GPU,该系列GPU支持OpenGL以及OpenCL等计算框架,可以有效加速通用计算,而目前对其应用方法和实际优化效果的研究很少。本文基于以三星的Exynos5250处理器为核心的Arndale Board嵌入式开发平台,对集成于处理器上的Mali-T604嵌入式GPU的GPGPU(General-Purpose computation on GPU)技术进行研究并对不同运算规模的浮点矩阵乘法进行并行加速优化,提供实际测试结果。
1.2 Mali GPU的并行化线程结构特征
Mali GPU进行通用计算的技术核心是以多核多线程的思想将密集的计算任务进行拆解,将大量的计算线程分配于众多计算核心中,GPU可以同时处理成百上千的线程,大量晶体管用于ALU.GPU适合做高密度数据的并行运算,只有在运算的并行粒度足够大的时候才能发挥出强大的并行运算能力。图3展示了CPU和Mali GPU之间工作调配的过程。 http://upload.semidata.info/new. ... 3/55beda30f261e.jpg
图3 Cortex-A15 CPU和Mali GPU之间的工作调配
Mali GPU中每个计算线程会占用着色器核心的一部分资源(存储器和ALU等),每个线程占用资源的多少影响了同时并行处理的活动线程的数量。对Mali GPU,每一个线程都有自己的程序计数器,这意味着Mali GPU和桌面GPU平台不同,程序分支的发散不是一个影响效率的重要的问题。每个Mali-T604 GPU的着色器核心最多可以同时容纳256个线程,Mali GPU在进行通用计算时需要大量的线程进行切换才能保证得到计算效率上的收益,对于Mali-T604而言,这个最少的总工作项数量是4096.如果分配于单个着色器核心上的线程数目不足128,很可能带来并行效率的下降,这时需要拆分工作为不同的步骤,简化每个步骤的线程复杂度,让单个着色器核心并行容纳的线程数量足够多以保证并行度。