新闻中心

EEPW首页>嵌入式系统>设计应用> 实战技巧,Mali GPU编程特性及二维浮点矩阵运算并行优化详解

实战技巧,Mali GPU编程特性及二维浮点矩阵运算并行优化详解

作者: 时间:2015-08-17 来源:网络 收藏

  笔者将clEnqueueNDRangeKernel函数中工作组大小参数设置为NULL,由硬件自动确定最佳的工作组大小。由于内核中每次会连续读取4个浮点数值凑成float4类型的数据,所以对于矩阵的宽度不是4的倍数的情况需要进行特殊处理,可在主机端首先将输入矩阵A修改为N行N/4+4列,将矩阵B修改为N/4+4行N列,多出的矩阵部分均以0补齐,这样既不影响计算结果,也不会影响线程的分配方案,实现并行方案的内核函数如下所示:

本文引用地址://m.amcfsurvey.com/article/278831.htm

  本文采用Arndale Board开发板作为测试平台,软件平台采用Linaro机构为Arndale Board定制的基于Ubuntu的嵌入式Linux操作系统,其内核版本为3.10.37,实验时使用arm-linux-gnueabihf工具链对程序进行编译。不同规模的二维浮点矩阵乘法运算在ARM Cortex-A15 CPU上的串行方案和-T604上的并行方案的测试结果如面的表1所示,为不失一般性,测试时输入矩阵内容为随机值,每种不同矩阵大小的测试项进行10次测试,将测试值的平均值作为测试结果。

  上表仅列出了输入量较大时的测试结果,笔者实际测试时,发现输入数据量较小的时候,并行方案没有串行方案的效率高,因为计算过程大部分都消耗在数据的传输上,由于计算量小,端的计算瞬间完成,没有办法将GPU访存的延迟掩盖,所以此时访存速度较快的CPU端的串行方案反而效率更高。

  当计算量逐步增加的时候,Mali GPU的并行能力逐渐体现出其优势,加速比有显著提升,当计算量大到一定程度的时候,加速比趋于稳定,因为这时Mali GPU上有大量的线程切换,不仅隐蔽了访存的延迟,也使得Mali GPU上的计算单元满载,其计算效率已达到硬件能够承受的极限,此时Mali GPU可以提接近40倍的供惊人的加速比。

  实际测试时,笔者使用top指令观察矩阵进程的CPU占用量,串行方案的CPU占用量在98%左右,而基于Mali GPU的并行方案对CPU几乎没有占用量,说明并行方案不仅可以提升计算效率,还降低了CPU的负担,大大提升了系统实时性。实验的实际测试结果和GPU异构运算特点吻合。

  4.结语

  本文针对Mali-T604 GPU论述了基于OpenCL的Linux平台上进行通用计算并行优化的方法,论述了Mali-T604 GPU的硬件特点,并基于OpenCL设计了二维矩阵乘法的并行方案,在Mali-T604上获得了惊人的加速比,结果表明Mali GPU对于庞大输入量的计算密集型高度可数据并行化通用计算问题有显著的加速能力,且并行优化结果正确可靠。

c语言相关文章:c语言教程


存储器相关文章:存储器原理


尘埃粒子计数器相关文章:尘埃粒子计数器原理

上一页 1 2 下一页

关键词:MaliGPU

评论


相关推荐

技术专区

关闭