多核超级计算机榜单

超级计算机榜单  时间:2021-03-26  阅读:()
ISSN1000-9825,CODENRUXUEWE-mail:jos@iscas.
ac.
cnJournalofSoftware,Vol.
21,Supplement,December2010,pp.
214223http://www.
jos.
org.
cnbyInstituteofSoftware,theChineseAcademyofSciences.
Allrightsreserved.
Tel/Fax:+86-10-62562563BLAS库在多核处理器上的性能测试与分析陈少虎1,2,3+,张云泉1,2,张先轶1,程豪1,2,31(中国科学院软件研究所并行软件与计算科学实验室,北京100190)2(中国科学院软件研究所计算机科学国家重点实验室,北京100190)3(中国科学院研究生院,北京100190)PerformanceTestingandAnalysisofBLASLibrariesonMulti-CoreCPUsCHENShao-Hu1,2,3+,ZHANGYun-Quan1,2,ZHANGXian-Yi1,CHENGHao1,2,31(LaboratoryofParallelSoftwareandComputationalScience,InstituteofSoftware,TheChineseAcademyofSciences,Beijing100190,China)2(StateKeyLaboratoryofComputingScience,TheChineseAcademyofSciences,Beijing100190,China)3(GraduateUniversity,TheChineseAcademyofSciences,Beijing100190,China)+Correspondingauthor:E-mail:huhumartinwar@gmail.
comChenSH,ZhangYQ,ZhangXY,ChengH.
PerformancetestingandanalysisofBLASlibrariesonmulti-coreCPUs.
JournalofSoftware,2010,21(Suppl.
):214223.
http://www.
jos.
org.
cn/1000-9825/10023.
htmAbstract:BLASlibraryisthemostbasicmathlibraryinhighperformancecomputing.
Itsperformancehasagreatimpactontheperformanceofsupercomputers.
Withthemulti-coretechnologydevelopment,BLAS'multi-coreparallelperformancehasbecomemoreimportantthansingle-coreperformanceassociatedwitharchitecture.
TheexperimenttakesX86multi-coreprocessorslikeXeon,Opteronseriesasplatformforexample,whicharepopularinHPC.
ItfullytestsGotoBLAS,Atlas,MKLandACMLBLASlibrariesofall1,2,3-levelfunctions,andcoversdifferentscalesandmulti-coreparallelaspect.
BLASsourcecode,materialandpapers,testresultsareusedtoanalyzethewayofBASLoptimizationandparallelism,andwhichplatformtheyaresuitablefor.
ThenwewillprovidesomeusefulsuggestionsfortheuseofBLAS,BLASoptimizationmethodoreventhedevelopmentofhigh-performanceCPUs.
ItwasfoundthatcomparedwithalogicallypowerfulandcomplexCPU,aCPUwhichhaslargerandbettercaches,widermemorybandwidth,smallermemorylatency,highercorefrequencycanoftenobtainbetterperformanceinHPCapplications.
Atthesametime,theconditionofX86platformisalsoagoodexampleforotherarchitectures.
Keywords:BLAS;architecture;multi-coreparallel;X86;GotoBLAS;Atlas;MKL;ACML;optimization摘要:BLAS库是高性能计算中最基本的数学库,它的性能对超级计算机的性能有着极大的影响.
而且随着CPU多核化的发展,BLAS的多核并行性能已经变得比与体系结构相关的单核性能更加重要.
实验以流行于高性能计算的Xeon、Opteron系列多核X86处理器为例,全面测试了GotoBLAS、Atlas、MKL和ACML四种主流SupportedbytheNationalNaturalScienceFoundationofChinaunderGrantNo.
60533020(国家自然科学基金);theNationalHigh-TechResearchandDevelopmentPlanofChinaunderGrantNos.
2006AA01A125,2009AA01A134,2009AA01A129(国家高技术研究发展计划(863));theNationalKeyScientific&TechnologicalProjectHEGAOJIofChinaunderGrantNo.
2009ZX01036-001-002(核高基项目)Received2010-06-15;Accepted2010-12-10陈少虎等:BLAS库在多核处理器上的性能测试与分析215的BLAS库的所有1,2,3级函数,并覆盖了不同计算规模和多核并行方面的测试.
通过测试结果,分析源代码、BLAS库资料和论文的方式,分析BLAS有效的优化和并行方法,以及它们所适合的平台.
为BLAS的优化、使用,甚至高性能处理器的发展上提供有益的建议.
实验结果表明,比起一个逻辑处理强大但是复杂的处理器,一个cache更大、性能更好,内存带宽更宽、延迟更小,主频更高的处理器往往能在高性能计算中取得更好的性能.
同时,X86平台上的状况对其他体系结构也有巨大的借鉴意义.
关键词:BLAS;体系结构;多核并行;X86;GotoBLAS;Atlas;MKL;ACML;优化基本线性代数函数库BLAS(BasicLinearAlgebraSubprograms)是最基本最核心的数学库之一,它是一组高质量的基本向量、矩阵运算子程序.
BLAS库广泛用于科学及工程计算,是许多数学软件的基本核心,因此它的性能优化对提高程序运行速度、发挥计算机的运算能力有重要的意义.
现在流行的BLAS库主要有以下几种[1]:ATLAS库(AutomaticallyTunedLinearAlgebraSoftware)[2],由田纳西大学计算机专家JackDongarra与一群研究员合作开发而成.
Atlas自动替指定的处理器找出有效率的方式完成BLAS的高效实现,可以在不同平台上自动生成优化的BLAS代码.
GotoBLAS库[3],是Texas大学超级计算中心高性能计算组KazushigeGoto开发的一套高性能BLAS库,它针对特定的平台以实现高效的性能,支持Opteron,Xeon,Itanium,Power,Alpha,MIPS等平台.
MKL库(MathKernelLibrary)[4],是Intel为自己的CPU专门优化的基本数学运算库,其中包含了BLAS库,在Intel的CPU上性能十分高效.
ACML库(AMDCoreMathLibrary)[5],是AMD为自己的CPU专门优化的基本数学运算库,与MKL类似.
不少文章都对BLAS库进行过测试,但往往只针对一两个函数,只涉及到某个方面特征或少数的计算规模.
一些测试会涉及不同的体系结构,但由于体系结构之间的差异太大,测试的可比性不大.
这里以x86平台为例,进行BLAS三级函数全面而详细的测试与实验,找出与性能相关的因素,为BLAS的优化甚至高性能处理器的发展上提供有益的建议.
1性能测试平台与环境1.
1硬件平台通过近几年Top500发布的超级计算机榜单即可看出,x86处理器不光在PC领域,在高性能计算领域也十分流行.
对于高性能计算,目前用的最多的x86处理器就是Intel的Xeon系列和AMD的Opteron系列,实验选择的硬件平台都是这两个系列在高性能计算中最为流行的型号.
Table1CPUparametersconcerned表1实验所关注的CPU参数CPUCorespeedL1sizeL2sizeL3sizeOpteron83782.
4GHz128KB512KB6MBXeonX54723.
0GHz64KB2*6MB——XeonX55502.
67GHz64KB256KB8MB高性能计算已经完全向多核化发展,单个节点上倾向于采用更多核的CPU.
由于目前四核处理器已经非常成熟,实验统统采用了两路四核平台(总共8个核),这也是许多超级计算机上的一个标准节点.
对于Opteron系列,选择了8378处理器,Xeon系列则选择了X5472和X5550.
它们的主要性能参数如表1所示.
从参数上看,Opteron8378主频最低和L3cache也最小.
对于X5472,这个差距最为明显.
X5472在cache的层次上更少意味着大Cache上更快的存取速度,而且它每两个核共享一个6M的L2Cache比8378四个核共享一个6M的L3Cache优势是明显的.
Opteron8378的优势在于较大的L1,L2Cache和四核共享的L3Cache.
多核和SMP架构的主要区别就是核间是否共享Cache,这可以增强数据重用与核间互联的性能.
而X5472的每两个核共享Cache在这方面有所欠缺,X5550作为Xeon的新一代处理器,在架构和关键参数上显得更为均衡.
216JournalofSoftware软件学报Vol.
21,Supplement,December2010另一个极为重要的参数是内存带宽,但带宽不光是由CPU、内存控制器的性能决定,也受内存性能的极大影响.
甚至运行情况的不同,表现出来的有效带宽也有极大的波动.
理论上X5550带宽远大于X5472,也比8378要大不少,但现实测试中往往和理论差别较大.
本实验平台的实际带宽情况是:X5550带宽大约是X5472的三倍,8378的两倍.
1.
2软件平台为了使影响测试结果的其他因素尽可能的少,实验尽可能选择相同的软件平台.
Table2Softwareversions表2软件版本SoftwareLinuxGCCGotoBLASAtlasMKLACMLVersion2.
6.
324.
4.
32-1.
183.
9.
2410.
2.
2.
254.
4.
0操作系统都采用Linux,Atlas与GotoBLAS的编译器都使用了gcc.
至于MKL与ACML,都是以编译后的库进行分发.
测试库都尽量采用了最新的版本,以提供对较新处理器的优化支持和更好的性能.
2BLAS测试Atlas与GotoBLAS不仅都是开源软件包,而且更是非常著名的学术项目,相关的论文比较多,可以通过源代码和文献了解它们的实现.
MKL与ACML作为商业软件,不仅源代码无法得到,关于其实现的文献更是极少,只能根据相关公司公布的少量材料一探究竟.
但总的来说,这些BLAS库的实现思路都是类似的,就是将调用得最多并直接影响性能的核心函数用目标平台的汇编语言实现,再使用高级语言进行包装整合.
上层使用Pthread或OpenMP并行库进行多核上的多线程并行化.
不同的只是优化的方法,算法以及核心汇编与高级语言程序的比例[6,7].
例如,MKL和ACML使用OpenMP[4,5]实现多核并行,Atlas为了实现一个可移植的高性能BLAS更多的使用了C语言,Atlas和GotoBLAS的分块算法由于基于的假设不同造成算法上的差别,等等.
这些实现的差别可以通过实验结果的比较进行分析.
BLAS按操作数的精度来分有4种:分别是S(单精度实数),D(双精度实数),C(单精度复数),Z(双精度复数).
如果按不同精度统计来看,BLAS1有46个子函数,BLAS2有66个子函数,BLAS3有30个子函数,共142个子函数.
如果完全测试数据量太大,性能的主线很可能被旁枝末节所覆盖,所以实验对测试集做了一些优化和简化.
就性能测试来说,许多函数是基于一个函数子集实现的,所以只需要测试这部分的核心函数,性能状况就可以把握.
就精度来说,实验中只测试了在科学计算中最常用的双精度D.
2.
1BLAS1的测试与分析BLAS1是最难以优化好的部分,这是由于它运算的数据毫无局部性可言,计算访存比又比较低,难以掩盖访存延迟.
由表3可以看到,在不同的测试情况中,GotoBLAS是综合性能最好的.
通过分析GotoBLAS的源代码得知,它的BLAS1主要是由汇编语言写成的,只有两种主要的优化方法:循环展开和预取.
而使用SIMD(SingleInstructionMultipleData)指令是x86(SSE指令)[8]平台上BLAS实现的必需方法,应用在所有BLAS中,所以之后就不再强调了.
除了这两种优化方法再无其他,所以BLAS1函数往往不能很好地利用CPU的运算能力,测试中性能最高的为GotoBLAS,也只能达到CPU峰值的(1898.
78/10666)=17.
8%.
陈少虎等:BLAS库在多核处理器上的性能测试与分析217Table3DifferentaverageperformancesofBLAS1(Mflops/s)表3BLAS1在不同测试中的平均性能(Mflops/s)CoresCPUGotoBLASAtlasMKLACMLMAX8378661.
12522.
42530.
3501.
58661.
12X5472646.
53669.
04578.
14590.
08669.
041-coreX55501898.
781881.
751440.
691193.
351898.
788378652.
61481.
86385.
19399.
93652.
61X5472782.
03663.
86856.
49589.
75856.
498-coreX55501953.
431237.
661210.
16828.
031953.
43其他的BLAS也使用同样的方法,只是实现的细节不同罢了.
GotoBLAS采用手工优化,自然效果最好.
除了程序优化以外,BLAS1的效率深受内存带宽的影响,从X5550的表现就可以看出.
由于X5550处理器巨大的带宽优势,它的BLAS1运算性能几乎是其他两个平台的3倍.
此时计算速度不是瓶颈,而内存吞吐量的优势比BLAS的优化要有用得多.
BLAS1的实现值得一提的是对多核的利用,特别是GotoBLAS和MKL在X5472上的表现:GotoBLAS在AXPY,SWAP,SCAL三个主要函数上实现了多线程并行化.
而MKL更多,AXPY,COPY,SWAP,ROT,SCAL,DOT实现了并行化,如图1所示.
这样可以通过多核更充分的利用带宽,使BLAS1性能达到更高.
Fig.
1SpeedupofBLAS1onX5550(8-core/1-core)图1BLAS1在X5550上的加速比(8-core/1-core)但由于BLAS1对内存(Cache利用率低)访问量很大,多线程之间协调不好易于导致未使用的预取数据发生Cache冲突替换.
图2、图3就出现了这样的情况.
0.
00.
51.
01.
52.
02.
53.
00AXPYCOPYSWAPROTSCALNRM2ASUMAMAXROTMDOTAtlasMKLGotoACMLFig.
2SpeedupofBLAS1onX5473(8-core/1-core)图2BLAS1在X5473上的加速比(8-core/1-core)0.
00.
51.
01.
52.
02.
53.
00AXPYCOPYSWAPROTSCALNRM2ASUMAMAXROTMDOTAtlasMKLGotoACMLFig.
3SpeedupofBLAS1on8378(8-core/1-core)图3BLAS1在8378上的加速比(8-core/1-core)0.
00.
51.
01.
52.
02.
53.
00AXPYCOPYSWAPROTSCALNRM2ASUMAMAXROTMDOTAtlasMKLGotoACML218JournalofSoftware软件学报Vol.
21,Supplement,December2010可以发现除了MKL在X5550上的一小部分函数,MKL的多线程BLAS1性能上与其对应的单线程提高不大,这就是Cache数据冲突造成的.
而MKL和ACML采用OpenMP的隐式并行方式更容易产生这种冲突.
X5472上没有产生这种冲突的主要原因是它没有四核共享Cache,独立的Cache避免了冲突.
GotoBLAS采用Pthread库复杂的显式控制多线程是值得的,并行比较成功,无论在任何平台上都表现得很好.
一个精心设计的多线程并行才能使BLAS1在多核CPU上产生性能提高,但是测试中8线程最多才达到2.
5的加速比,可见瓶颈仍然在内存带宽.
当达到带宽极限时再增加线程只能导致资源冲突,反而会使BLAS1性能下降.
如果不能很好的实现,那么BLAS1只实现单线程会更好,然后将并行化的控制交给用户.
综合来说,BLAS1级函数对CPU利用率较低,应当尽量少使用,当能使用更高级BLAS时要优先选择更高级的函数.
当需要大量使用BLAS1级函数时(当然这种情况比较少见),除了选择一个好的BLAS实现以外,一个高内存带宽的机器是取得高性能的关键.
2.
2BLAS2的测试与分析BLAS2在O(N2)的数据上完成O(N2)的计算,而O(N2)次的访存中,时间主要花在内存访问上,因此内存访问方式是否有效对BLAS2函数的性能影响很大.
一般在向量机上BLAS2才能够实现接近峰值的高性能.
在通用处理器上受限于内存访问速度,性能很难优化.
BLAS2的函数非常多,但实际上各个BLAS库都是基于以下几个函数或其子集来实现的:GEMV、SYMV、TRMV、TRSV、GER.
所以为了优化测试集,实验主要测试这几个函数.
Table4AverageperformanceofmainsubprogramsinBLAS2(Mflops/s)表4单核BLAS2的主要函数的平均性能(Mflops/s)CPUBLASGEMVSYMVTRMVTRSVGERGotoBLAS1000.
12000.
5999.
8999.
8670.
1Atlas637.
21000.
3615.
3615.
3615.
4MKL727.
32000.
5750727.
2500.
18378ACML727.
3757.
9666.
6695.
6653.
1GotoBLAS920.
8200010001000666.
8Atlas69920001000800727.
3MKL1000.
2200010001000666.
8X5472ACML1000.
12000.
51000999.
8734.
7GotoBLAS3200.
47200.
6360032001896.
4Atlas3200.
41960.
12133.
320001828.
7MKL3600.
35000.
2360036001781.
9X5550ACML3600.
33200.
4180036001920.
1如果分析BLAS2中最重要的函数GEMV会发现,对于未经优化的GEMV,计算量为2N2,访存为3N2.
而GEMV除了采用BLAS1的优化方法,还使用了矩阵分块算法,使访存接近N2[9].
即使是这样,计算也很难掩盖访存的延迟,所以BLAS2是一个典型的计算与访存密集型程序.
而且测试确实表明BLAS2有与BLAS1相类似的一面,内存带宽强烈的影响着计算性能,X5550单核运算性能几乎接近其他平台性能的3倍.
X5472与8378性能相当,这是由于8378虽然带宽更大,但是计算峰值较低的缘故.
需要注意的是在小规模向量-矩阵运算时,X5550上BLAS2的性能还不及X5472与8378,这是由于它的内存带宽虽然远大于其他两个平台但是访存延迟差别不大,计算规模较小而无法掩盖访存延迟所致.
一般来说,单核BLAS的性能高低与是否针对目标平台专门优化密切相关.
通过单核BLAS2综合性能图4~图6可以看到,虽然同为x86平台上的BLAS库,但每个库都有自己的目标平台,每个平台上性能最好的库也可能不同.
GotoBLAS几乎对x86的每个主流平台都进行了优化,所以在每个平台上几乎都是性能最好的.
MKL对Xeon处理器专门做了优化,所以在Xeon系列上性能十分接近甚至超过GotoBLAS.
ACML与MKL性能类似,但对Opteron的优化比MKL好,虽然优化效果不如GotoBLAS.
Atlas永远站在移植性和高性能的平衡点上,所以比起这些手工优化过的BLAS库性能偏低也就不奇怪了.
陈少虎等:BLAS库在多核处理器上的性能测试与分析2190.
00.
51.
01.
52.
02.
53.
03.
54.
00200040006000800010000120001400016000GAtlasMKLGotoBLASACMLFig.
61-coreperformnceofBLAS1onX5550图6单核BLAS2在X5550上的综合性能(Gflops/s)如果BLAS1的多核并行还可以让用户控制的话,从BLAS2开始的BLAS函数就不适合由用户控制并行化了.
因为矩阵的分块并行方法比较复杂,由用户完成不但会加重用户的负担,往往性能也很难保证.
在多核CPU已经成为主流的今天,一个高性能的BLAS必须也是高度并行化.
表5测试了BLAS2级函数在各个平台上的多核加速比.
可以发现,并不是每个BLAS库都实现了2级函数的多线程并行,Atlas就完全没有并行的举措.
GotoBLAS并行了5个函数中的4个:GEMV、SYMV、TRMV、GER.
其次是MKL并行了3个函数:GEMV,TRMV,TRSV.
最后ACML并行了2个:GEMV和GER.
AVG一栏统计了各个BLAS已并行函数的加速比均值,可以发现GotoBLAS并行最好,而ACML和MKL相当.
但还有一些细节需要注意,在四核共享L3Cache的8378和X5550中,GotoBLAS都有很好的加速比,而MKL和ACML的隐式并行方式加速比不佳,也存在Cache替换冲突的问题.
MKL在8378处理器上没能很好地优化,甚至比不并行还慢.
但是在X5472的分开Cache下,三者的加速比比较接近,可见OpenMP这种隐式并行难以处理Cache替换冲突问题.
0.
00.
20.
40.
60.
81.
01.
21.
41.
61.
82.
00200040006000800010000120001400016000GAtlasMKLGotoBLASACMLFig.
51-coreperformnceofBLAS1onX5472图5单核BLAS2在X5472上的综合性能(Gflops/s)Fig.
41-coreperformnceofBLAS1on8378图4单核BLAS2在8378上的综合性能(Gflops/s)0.
00.
20.
40.
60.
81.
01.
21.
41.
61.
82.
00200040006000800010000120001400016000GAtlasMKLGotoBLASACML220JournalofSoftware软件学报Vol.
21,Supplement,December2010Table5Softwareversions表5BLAS2的多核加速比(8-core/1-core)CPUBLASGEMVSYMVTRMVTRSVGERAVGGotoBLAS2.
792.
882.
930.
853.
142.
94Atlas0.
970.
911.
020.
950.
86—MKL0.
891.
020.
970.
970.
970.
958378ACML2.
110.
960.
950.
991.
561.
84GotoBLAS1.
672.
112.
121.
042.
442.
09Atlas1.
191.
041.
081.
461.
08—MKL2.
041.
051.
951.
911.
011.
97X5472ACML1.
821.
021.
021.
052.
462.
14GotoBLAS2.
853.
163.
221.
082.
132.
84Atlas0.
930.
970.
880.
950.
98—MKL1.
671.
091.
841.
221.
041.
58X5550ACML1.
671.
011.
080.
911.
231.
45BLAS2也存在与BLAS1类似的问题:加速比受到内存带宽的制约.
在内存带宽不提升的情况下,BLAS2的加速比不可能按CPU核数线性增长,在达到一定并行程度后再增加线程数无益于性能的提高.
8378在带宽上的优势弥补了计算上的劣势,在单核上性能接近于X5472,且多核架构和数据共享上的优势更使并行BLAS2的性能超过了X5472.
X5550作为一个性能均衡的处理器,使BLAS2的性能又一次达到最高.
2.
3BLAS3的测试与分析就函数本身的重要性而言,BLAS3函数是最重要的,BLAS3实现的好坏几乎决定了BLAS的好坏.
BLAS3进行矩阵之间的基本运算,是整个BLAS库中被调用最多的函数.
BLAS3的计算量达到O(N3),访存次数为O(N3).
与二级函数不同,BLAS3的访存可以集中于cache中,如果能够高效使用cache,可以达到非常高的运算速度,甚至接近处理器性能峰值.
BLAS3是整个BLAS库的核心,而GEMM函数则是BLAS3的核心函数[10].
几乎所有BLAS3级函数的实现都基于GEMM和TRSM[11],特别是需要大量的调用GEMM,因此GEMM函数的优化是整体BLAS3级函数优化的关键,其次是TRSM,其他函数会对它有一定量的调用.
所以这两个函数的好坏影响着整个BLAS3的效率.
在实际应用中BLAS3中的矩阵相乘运算(GEMM)时间的确占到了BLAS运算总时间的绝大部分.
论文[12]对Linpack的HPL测试中,各个函数所运行的时间比例进行了统计.
其中发现DGEMM函数的执行时间占到总时间的93%以上.
Table6Average1-coreperformanceofallBLAS3subprograms(Mflops/s)表6单核BLAS3所有函数的平均性能(Mflops/s)CPUBLASGEMMSYMMSYR2KSYRKTRMMTRSMGotoBLAS8888.
68883.
48795.
58839.
78739.
68830.
1Atlas8232.
38012.
38081.
77881.
37998.
57935MKL8539.
18273.
37238.
57185.
47893.
98120.
88378ACML8953.
68719.
487548387.
48564.
88594.
7GotoBLAS11539.
611533.
911427.
911467.
211399.
411375Atlas10696.
810465.
810546.
110358.
310417.
710324.
4MKL11554.
2114081035710834.
411187.
111200.
8X5472ACML11362.
910971.
811110.
41023910693.
610799.
2GotoBLAS10322.
610295.
710258.
510261.
810213.
410227.
7Atlas8743.
28602.
28713.
48387.
98567.
68487.
2MKL10317.
310281.
89823.
910007.
31016010032.
2X5550ACML10152.
410023.
49965.
99627.
19849.
99849.
9由于BLAS3是BLAS库中使用最多的函数,每一个都比较重要,所以实验测试了所有函数,见表6.
所有的BLAS库都对3级函数做了优化,所以BLAS3的计算访存比很高,性能接近峰值.
它的性能受CPU的计算性能影响极大,X5472上的BLAS3性能往往大于X5550,X5550也比8378性能高很多.
陈少虎等:BLAS库在多核处理器上的性能测试与分析221除了处理器的峰值(与主频相关)之外,L1,L2,L3cache的大小也极大地影响着BLAS3的性能.
GotoBLAS、MKL、ACML都立足于使用cache来减少对内存的访问,但它们更加在意利用L3cache[3]来执行分块算法以利用访存的局部性,所以L3cache的大小严重影响这3种库的性能.
通过表7可以发现,这3种库在3个平台上的性能是X5550(8M)>X5472(6M)>8378(6M),X5472比8378更高的性能源于L2cache更低的延迟以及Xeon工艺和微架构.
Table7Ratioof1-corepeakperformanceofCPU表7单核BLAS3性能达到CPU峰值的百分比BLAS8378X5472X5550GotoBLAS92.
59%96.
16%96.
83%Atlas85.
75%89.
14%82.
02%MKL88.
95%96.
29%96.
79%ACML93.
27%94.
69%95.
24%Fig.
7SpeedupofBLAS3on8378(8-core/1-core)图7BLAS3在8378上的加速比情况(8-core/1-core)而Atlas的分块算法[13]则更倾向于利用L1和L2cache来存储局部性数据,所以表现出来的性能是X5472(64KB,6M)>8378(128KB,512KB)>X5550(64KB,256KB).
GEMM作为最影响BLAS3性能的函数,每个BLAS库都要仔细优化它.
可以发现GotoBLAS因为精心的手工优化[3],几乎是所有平台上性能最好的.
但MKL对Xeon的精心优化使Xeon平台上的GEMM性能超过GotoBLAS(X5472)或接近它(X5550),ACML在Opteron上也类似(8378).
Atlas由于过多的使用高级语言,导致编译器的优化能力直接影响BLAS3的性能,但显然编译器还达不到Atlas所想象的那样强大.
而且文献[12]阐明了使用最大的cache(L3)存放局部性数据可以使矩阵分块算法更加高效.
此外,BLAS3多核并行的性能尤其重要.
因为矩阵间的运算计算访存比很高,数据相关性较小,并行性和扩展性都极佳.
只要算法得当,就可以很好的利用多核处理器.
在矩阵规模较大的情况下接近线性加速.
图7~图9展示了BLAS3不同矩阵规模时在各平台上的加速比情况,可以看到几乎所有BLAS库的加速比都是随矩阵规模的增加而增加的,GotoBLAS在所有平台上最后都达到了接近线性的加速比.
Atlas的多线程并行实现的不是很好,是性能最差的.
MKL和ACML基于OpenMP的隐式并行开销较大,在小规模矩阵计算时效率较低.
而且在共享Cache较小的CPU上(Opteron8378),容易产生Cache冲突替换而阻碍性能的提高.
可见增大多核共享的Cache大小不但可以增强单线程函数的性能,也能减少多线程间的Cache冲突从而增强并行程序的性能.
0.
01.
02.
03.
04.
05.
06.
07.
08.
09.
0010002000300040005000600070008000AtlasMKLGotoBLASACML222JournalofSoftware软件学报Vol.
21,Supplement,December2010Fig.
8SpeedupofBLAS3onX5472(8-core/1-core)Fig.
9SpeedupofBLAS3onX5550(8-core/1-core)图8BLAS3在5472上的加速比情况(8-core/1-core)图9BLAS3在5550上的加速比情况(8-core/1-core)表8是并行BLAS3性能达到CPU峰值的百分比.
BLAS3的并行化是如此重要以至于BLAS的提供者对其并行性能做了大量优化.
ACML达到了8378测试性能的最高值,MKL在Xeon上的表现也与GotoBLAS不分伯仲.
但总体来说,GotoBLAS的性能最好.
Table8Ratioof8-corepeakperformanceofCPU表8并行BLAS3函数性能达到CPU峰值的百分比BLAS8378X5472X5550GotoBLAS89.
77%93.
46%95.
23%Atlas72.
88%79.
72%77.
56%MKL78.
43%92.
09%93.
92%ACML90.
18%88.
83%92.
97%BLAS3的测试结果再次证明了X5550是一款设计均衡的处理器,实测性能达到了CPU峰值的95.
23%.
X5472的大Cache使BLAS3无论单核还是多核的性能都很不错,但如果能够合并两个6M的Cache,那么相信性能还会更高.
8378较小的Cache限制了处理器计算性能的发挥,而且其较低的主频也使总的性能相比另两个平台显得较低.
3结束语ACML经常能达到Opteron测试的最高值,MKL在Xeon上的表现也与GotoBLAS不分伯仲.
但总体来说,无论是不同计算规模,不同函数之间的性能差距,还是不同平台上的性能,单核性能以及并行加速比,GotoBLAS的表现都异常稳定,名列前茅.
这样高的性能是通过大量核心函数汇编化,各平台上大量的手工调优,优良的算法[5],显式而精心的并行化而达到的.
与此相对的是Atlas,它在尽量保证移植性的情况下,仍能达到较高的性能.
虽然在一些流行的、充分优化的处理器上竞争力较弱,但是对于其他不是很流行、还尚未有充分优化的BLAS存在的平台上,Atlas无疑是最好的选择.
对于高性能处理器来说,摩尔定律失效后,cache和多核的发展就成为增强CPU性能的主要途径.
作为高性能计算中主要的函数库——BLAS的性能严重依赖于cache的性能.
而且在多核架构中,共享cache也占有非常重要的地位,是BLAS和其他软件能否高效并行化的重要因素.
但是通过BLAS1,2的测试也可以看到,访存密集型的程序在共享cache的多核架构往往可以达到更好的加速性能,但这是以仔细的线程控制为前提的,显式并行在理论上比隐式并行效率更高.
但对于计算密集型程序,多核架构会使隐式并行的也有很好的加速比.
对于X5472,多核BLAS3的性能已经达到了峰值的93.
46%,即使提高到100%差别也不会很大.
其绝对性能相当于2.
8GHz的同样处理器运行BLAS3性能达到峰值的100%时的状况.
而往往一个复杂的逻辑处理强大的架构(X5550)是很难到达高主频的,而它的BLAS3性能当然也不可能达到峰值的100%.
0.
01.
02.
03.
04.
05.
06.
07.
08.
09.
0010002000300040005000600070008000AtlasMKLGotoBLASACML0.
01.
02.
03.
04.
05.
06.
07.
08.
09.
0010002000300040005000600070008000AtlasMKLGotoBLASACML陈少虎等:BLAS库在多核处理器上的性能测试与分析223所以可以得出这样一个结论:一个cache性能更好、更大,内存带宽更宽、延迟更小,主频更高的处理器往往能在高性能计算中取得更好的性能.
致谢在此,我们向对本文的工作给予支持和建议的中科院软件所并行软件与计算科学实验室的的老师和同学们表示感谢.
References:[1]CliftonC,LeavensGT,ChambersC,MillsteinT.
MultiJava:modularopenclassesandsymmetricmultipledispatchforJava.
ACMSIGPLANNotices,2000,35(10):130145.
[2]WegnerP,ZdonikSB.
Inheritanceasanincrementalmodificationmechanismorwhatlikeisandisn'tlike.
In:GjessingS,NygaardK,eds.
Proc.
oftheECOOP'88.
LNCS322,Heidelberg:Springer-Verlag,1988.
5577.
[3]ZhangLB,ChiXB,MoZY,LiN.
IntroductiontoParallelComputing.
Beijing:TsinghuaUniversityPress,2006(inChinese).
[4]WhaleyRC,PetitetA,DongarraJJ.
AutomatedempiricaloptimizationsofsoftwareandtheATLASproject.
ParallelComputing,2001,27:335.
[5]GotoK,vandeDeijnRA.
Anatomyofhigh-performancematrixmultiplication.
ACMTrans.
onMathematicalSoftware.
2008,3(3).
[6]http://software.
intel.
com/zh-cn/intel-mkl/[7]http://developer.
amd.
com/cpu/libraries/acml/Pages/default.
aspx[8]JiangMQ,ZhangYC,CongG,LiYC.
ResearchonHighPerformanceImplementationMechanismofGOTOBLASGeneralMatrix-matrixMultiplication.
ComputerEngineering,2008,34(7):84(inChinesewithEnglishabstract).
[9]KulkarniM,PingaliK.
Anexperimentalstudyofself-optimizingdenselinearalgebrasoftware.
Proc.
oftheIEEE,2008,96(5):117.
[10]KurzakMJ,AlvaroW,DongarraJ.
Optimizingmatrixmultiplicationforashort-vectorSIMD–CELLprocessor.
ParallelComputing.
2009,35:138150.
[11]SuB.
MemoryaccessoptimizationofATLASonLoongson2F[MS.
Thesis].
Hefei:UniversityofScienceandTechnologyofChina,2009(inChinesewithEnglishabstract).
[12]KagstromB,LingP,vanLoanC.
GEMM-Basedlevel3BLAS:High-Performancemodelimplementationsandperformanceevaluationbenchmark.
ACMTrans.
onMathematicalSoftware,1998,24(3):268302.
[13]GotoK,vandeDeijnRA.
High-Performanceimplementationofthelevel-3.
ACMTrans.
onMathematicalSoftware,2008,35(1):4.
[14]YangRQ.
OptimizationofGotoBLASmathlibrarybasedonLoongsonprocessor[MS.
Thesis].
Beijing:InstituteofComputingTechnology,theChineseAcademyofSciences,2009(inChinesewithEnglishabstract).
[15]YotovK,LiXM,RenG,CibulskisM.
AComparisonofempiricalandmodel-drivenoptimization.
ACM.
2003.
6376.
[16]GotoK,vandeDeijnRA.
OnreducingTLBmissesinmatrixmultiplicatio.
FLAMEWorkingNote#9.
2002.
附中文参考文献[3]张林波,迟学斌,莫则尧,李若.
并行计算导论.
北京:清华大学出版社,2006.
[8]蒋孟奇,张云泉,宋刚,李玉成.
GOTOBLAS一般矩阵乘法高效实现机制的研究.
计算机工程,2008,34(7):84.
[11]苏波.
ATLAS在龙芯2F上的访存优化[硕士学位论文].
合肥:中国科技大学,2009.
[14]杨荣秋.
基于龙芯处理器的GotoBLAS数学库优化.
北京:中国科学院计算技术研究所,2009.
陈少虎(1986-),男,硕士生,主要研究领域为并行软件与计算科学,多核并行,BLAS,GPGPU并行计算.
张先轶(1983-),男,博士生,助理研究员,主要研究领域为并行数值软件研发,PGPU软件性能优化.
张云泉(1973-),男,博士,研究员,博士生导师,主要研究领域为并行算法,并行软件.
程豪(1985-),男,硕士,主要研究领域为并行软件与计算科学,BLAS,SpMV,GPGPU软件性能优化.

易探云2核2G5M仅330元/年起,国内挂机宝云服务器,独立ip

易探云怎么样?易探云是国内一家云计算服务商家,致力香港服务器、国内外服务器租用及托管等互联网业务,目前主要地区为运作香港BGP、香港CN2、广东、北京、深圳等地区。目前,易探云推出深圳或北京地区的适合挂机和建站的云服务器,国内挂机宝云服务器(可选深圳或北京地区),独立ip;2核2G5M挂机云服务器仅330元/年起!点击进入:易探云官方网站地址易探云国内挂机宝云服务器推荐:1、国内入门型挂机云服务器...

香港站群多ip服务器多少钱?零途云香港站群云服务器怎么样?

香港站群多ip服务器多少钱?想做好站群的SEO优化,最好给每个网站都分配一个独立IP,这样每个网站之间才不会受到影响。对做站群的站长来说,租用一家性价比高且提供多IP的香港多ip站群服务器很有必要。零途云推出的香港多ip站群云服务器多达256个IP,可以满足站群的优化需求,而且性价比非常高。那么,香港多ip站群云服务器价格多少钱一个月?选择什么样的香港多IP站群云服务器比较好呢?今天,小编带大家一...

飞讯云E5-2678V3 64GB,湖北十堰100G高防物理机330元/月

飞讯云官网“飞讯云”是湖北飞讯网络有限公司旗下的云计算服务品牌,专注为个人开发者用户、中小型、大型企业用户提供一站式核心网络云端部署服务,促使用户云端部署化简为零,轻松快捷运用云计算。飞讯云是国内为数不多具有ISP/IDC双资质的专业云计算服务商,同时持有系统软件著作权证书、CNNIC地址分配联盟成员证书,通过了ISO27001信息安全管理体系国际认证、ISO9001质量保证体系国际认证。 《中华...

超级计算机榜单为你推荐
sherylsandberg谷歌怎么看自己的详细资料微信回应封杀钉钉微信大封杀"违规"了吗李子柒年入1.6亿将55g铁片放入硫酸铜溶液中片刻,取出洗净,干燥后,称重为56.6g,问生成铜多少g??求解题步骤及答案psbc.com怎样登录wap.psbc.com百度关键词工具百度有关键字分析工具吗?Google AdWords有的www.228gg.comwww.a8tb.com这个网站该如何改善336.com求一个游戏的网站 你懂得www.vtigu.com破译密码L dp d vwxghqw.你能看出这些字母代表什么意思吗?如果给你一把破以它的钥匙X-3,联想sesehu.com68lolita com是真的吗baqizi.cc誰知道,最近有什麼好看的電視劇
过期已备案域名 liquidweb cve-2014-6271 iisphpmysql 发包服务器 vip购优汇 jsp空间 已备案删除域名 中国电信测网速 129邮箱 国外代理服务器地址 购买国外空间 卡巴斯基是免费的吗 如何建立邮箱 银盘服务 ebay注册 贵阳电信测速 wordpress中文主题 免费个人主页 学生服务器 更多