下载此文档

NVIDIAGPU上Linpack性能测试初探.docx


文档分类:通信/电子 | 页数:约3页 举报非法文档有奖
1/3
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/3 下载此文档
文档列表 文档介绍
该【NVIDIAGPU上Linpack性能测试初探 】是由【泰山小桥流水】上传分享,文档一共【3】页,该文档可以免费在线阅读,需要了解更多关于【NVIDIAGPU上Linpack性能测试初探 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。NVIDIAGPU

上的

Linpack

性能测试初探


测试简介
Linpack

性能测试是高性能计算机的标准测试之一,

其测试性能是全世界

Top500超级计算
机排行榜的排名依照[1]。Top500每年宣告两次排行榜,在2010年6月的榜单中,由曙光公司研制的星云超级计算机获得了第2名的好成绩,其采纳了通用CPU(IntelXeon5650)和异构加速部件(NVIDIATeslaC2050)的混杂架构。在本次榜单中,以GPU作为加速部件的超级计算机还有国防科大研制的天河1号(第7名)和中科院过程所研制的IPEMole-(第19名)等。
简单来说,

Linpack

测试是用高斯消元法求解茂密线性方程组

(64位的双精度浮点数

)。
CPU上,有标准的参如实现HPL软件包[2],其实现了二维块卷帘的数据分布,部分选主元的LU分解,递归的Panel分解,look-ahead技术,多种广播算法等多种算法和优化。在
进行Linpack测试时,可采用不一样的HPL参数组合(比方:矩阵规模N,分块大小nb等),
不一样的BLAS与MPI库,不一样的编译参数等进行调优,以获取较好的Linpack性能。


软件包在

NVIDIAGPU上移植和优化
因为

HPL软件包实现了许多的功能和优化,因此在

NVIDIAGPU上的

Linpack

测试也以
此为基础,进行移植和优化。本文介绍的HPL软件包的移植与实现方式,主要参照了Fatica[3]的利用NVIDIAGPU加速Linpack的工作。
发现

文件[4]中对于HPL软件包在Linpack
dgemm函数的执行时间占到了大部分

测试时各个函数的运转时间进行了统计和解析,
(约90%左右),其次是dtrsm函数。因此,我们的
基本思想是关注利用

GPU加速

dgemm与

dtrsm

函数。同时,此种方式也使代码的改动量较小。
详尽以下:
CPU与

GPU混杂的

dgemm实现
CPU与GPU混杂的dgemm实现,就是将矩阵乘法中的一部分放到GPU长进行,调用NVIDIA
CUBLAS中的dgemm函数;同时,另一部分调用CPU上BLAS库中的dgemm函数,比方IntelMKL,
AMDACML,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函数近似的划分策略,分别调用NVIDIACUBLAS的dtrsm函数与CPU上的BLAS库等。近似的调理比率因子,是GPU与CPU间的负载尽量均衡。不再进行过多的表达。
使用

PINNEDMemory和

stream

优化

CPU与

GPU数据传输
CPU与GPU间的数据传输是此种实现的瓶颈之一。使用的传输带宽。其他,

PINNEDMemory可以明显提高PCIe
stream方式,使GPU上的计算和
数据传输重叠。


测试结果
我们分别在单卡和多卡的状况下,进行了

Linpack

测试,单机的测试平台表

1所示。
单机NVIDIAGPU的HPL输出如图2所示,,%。
在进行多卡的测试时,我们使用了中科院过程所的NVIDIAGPU机群,其配置如表2所示。
因为时间所限,从使用1个GPU到使用16个GPU的初步Linpack性能结果如图3所示,16
,效率为50%。

本文初步介绍了一种在CPU和GPU的混杂架构下的HPL软件包的移植和优化方法。在单机与16个GPU的机群环境下进行了初步的Linpack测试,



本文介绍的实现方式,存在两个比较明显的不足:一个是CPU与GPU对于dgemm和dtrsm是采纳静态划分的策略,比率因子R是固定的,可知跟着矩阵的分解,计算量是变化并逐渐
减小的,因此静态划分存在必定的负载不均衡的状况,应该使用动向划分策略,即依据本次CPU与GPU的实质运转时间,更新下一次的R值;另一个是CPU与GPU间传输的数据量比较
大(进行了大批矩阵的传输),对PCIe的带宽压力较大,需要进一步的优化数据传输。

NVIDIAGPU上Linpack性能测试初探 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息