收藏 分销(赏)

NVIDIAGPU上的Linpack性能测试初探.doc

上传人:精*** 文档编号:10710366 上传时间:2025-06-11 格式:DOC 页数:3 大小:199.55KB 下载积分:5 金币
下载 相关 举报
NVIDIAGPU上的Linpack性能测试初探.doc_第1页
第1页 / 共3页
NVIDIAGPU上的Linpack性能测试初探.doc_第2页
第2页 / 共3页


点击查看更多>>
资源描述
NVIDIA GPU上的Linpack性能测试初探   1. Linpack测试简介   Linpack性能测试是高性能计算机的标准测试之一,其测试性能是全球Top500超级计算机排行榜的排名依据[1]。 Top500每年公布两次排行榜,在2010年6月的榜单中,由曙光公司研制的星云超级计算机取得了第2名的好成绩,其采取了通用CPU (Intel Xeon 5650) 和异构加速部件(NVIDIA Tesla C2050)的混合架构。在本次榜单中,以GPU作为加速部件的超级计算机还有国防科大研制的天河1号(第7名)和中科院过程所研制的IPE Mole-8.5(第19名)等。   简单来说,Linpack测试是用高斯消元法求解稠密线性方程组(64位的双精度浮点数)。在CPU上,有标准的参考实现HPL软件包[2],其实现了二维块卷帘的数据分布,部分选主元的LU分解,递归的Panel分解,look-ahead技术,多种广播算法等多种算法和优化。在进行Linpack测试时,可选取不同的HPL参数组合(比如:矩阵规模N,分块大小nb等),不同的BLAS与MPI库,不同的编译参数等进行调优,以得到较好的Linpack性能。   2. HPL软件包在NVIDIA GPU上移植和优化   由于HPL软件包实现了较多的功能和优化,所以在NVIDIA GPU上的Linpack测试也以此为基础,进行移植和优化。本文介绍的HPL软件包的移植与实现方式,主要参考了Fatica[3]的利用NVIDIA GPU加速Linpack的工作。   文献[4]中对于HPL软件包在Linpack测试时各个函数的运行时间进行了统计和分析,发现dgemm函数的执行时间占到了大部分(约90%左右),其次是dtrsm函数。所以,我们的基本思想是关注利用GPU加速dgemm与dtrsm函数。同时,此种方式也使代码的改动量较小。具体如下:   CPU与GPU混合的dgemm实现   CPU与GPU混合的dgemm实现,就是将矩阵乘法中的一部分放到GPU上进行,调用NVIDIA CUBLAS中的dgemm函数;同时,另一部分调用CPU上BLAS库中的dgemm函数,比如Intel MKL,AMD ACML,GotoBLAS等。使得CPU与CPU可以同时进行计算。   矩阵的划分如图1所示,分成了图1中左(竖切B)和右(横切A)两种情况。原因是在HPL调用中,矩阵乘法的参数M,N,K存在两种情况,一个是K较小,M与N较大,如图1左的情况,此时划分矩阵B会得到较好的性能;另一种是K与N相等并较小,而M相对较大,如图1右,此时划分矩阵A会得到较好的性能。   通过调节比例因子R,可以达到CPU与GPU间负载的均衡。最佳的情况是,CPU上的计算时间=数据从CPU到GPU的传输时间+GPU计算时间+结果从GPU传回CPU的传输时间。最佳的比例因子R可以通过多次的实验获得。   从实现细节上,有两点需要注意的地方:1)CUBLAS的dgemm,使用了Volkov[5]等人的算法。对于参数M,N,K的不同情况性能变化明显,在M为64的倍数,N和K为16的倍数时,性能最佳。所以在划分的时候需要尽量使GPU上矩阵满足此规则;2)过小的数据规模下,GPU并不能发挥作用,所以当规模小于一定阈值的情况下,可以直接调用CPU的dgemm函数。   CPU与GPU混合的dtrsm实现   采取与dgemm函数类似的划分策略,分别调用NVIDIA CUBLAS的dtrsm函数与CPU上的BLAS库等。类似的调节比例因子,是GPU与CPU间的负载尽量均衡。不再进行过多的叙述。   使用PINNED Memory和stream优化CPU与GPU数据传输   CPU与GPU间的数据传输是此种实现的瓶颈之一。使用PINNED Memory可以显著提升PCIe的传输带宽。此外,还需使用CUBLAS 3.1 beta中支持的stream方式,使GPU上的计算和数据传输重叠。 3. Linpack测试结果   我们分别在单卡和多卡的情况下,进行了Linpack测试,单机的测试平台表1所示。      单机NVIDIA GPU的HPL输出如图2所示,Linpack性能为85.98GFlops,效率为68.23%。      在进行多卡的测试时,我们使用了中科院过程所的NVIDIA GPU机群,其配置如表2所示。         由于时间所限,从使用1个GPU到使用16个GPU的初步Linpack性能结果如图3所示,16个GPU Linpack性能为761.2GFlops,效率为50%。 4. 结论   本文初步介绍了一种在CPU和GPU的混合架构下的HPL软件包的移植和优化方法。在单机与16个GPU的机群环境下进行了初步的Linpack测试,分别为85.98GFLops和761.2GFlops。   本文介绍的实现方式,存在两个比较明显的不足:一个是CPU与GPU对于dgemm和dtrsm是采取静态划分的策略,比例因子R是固定的,可知随着矩阵的分解,计算量是变化并逐渐减小的,所以静态划分存在一定的负载不均衡的情况,应该使用动态划分策略,即根据本次CPU与GPU的实际运行时间,更新下一次的R值;另一个是CPU与GPU间传输的数据量比较大(进行了大量矩阵的传输),对PCIe的带宽压力较大,需要进一步的优化数据传输。
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 包罗万象 > 大杂烩

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服