一种用于gpu异构集群的高性能fft方法

文档序号:9471342阅读:797来源:国知局
一种用于gpu异构集群的高性能fft方法
【技术领域】
[0001] 本发明涉及计算机高性能计算领域,涉及一种用于GPU异构集群上的高性能 FFT(FastFourierTransformation,快速傅氏变换)计算方法。
【背景技术】
[0002] 在异构处理器FFT的研究方面,Nvidia公司有针对单个GPU的数学库CUBLAS和 CUFFT,也正在研制针对单机上多个GPU的数学库;很多研究人员进行了单GPU上FFT算法 的研究。在发布MIC协处理器的同时,Intel公司也推出了MIC协处理器上的MKL数学库。 现有的传统集群上的商业版FFT数学库主要有FFTW和IntelMKL。FFTW是使用最为广泛 的FFT库,其基于MPI的3维FFT并没有考虑计算和通信的重叠优化问题;P3DFFT通过对 数据进行节点间高维分布以提高3维FFT的延展性,但没有考虑计算和通信的重叠优化问 题;2DEC0MP&FFT和Kandalla等通过优化多组输入数组间的计算通信重叠问题实现对批量 数据3维FFT计算的性能优化;针对一些科学计算问题中需要对一个数据数组进行多次3 维FFT计算的应用场景,Song等通过优化一次3维FFT内的计算通信重叠问题来提升性能; Bell等基于UPC和支持异步通信的硬件实现了一次3维FFT内的计算通信重叠优化;Fang 等使用特定通信API在多维网络结构中实现了计算通信重叠的3维FFT;Doi等考虑非对称 网状网络的拓扑结构,合理调度远距离进程之间的通信,在多核节点上使用不同的线程实 现通信和计算的重叠。在HPCC的集群FFT测试中,目前最快的集群FFT是IBMBlueGene, 达到 226. 10TFlop/s。
[0003] 传统的集群3维FFT可以用维度表示法进行清晰的描述,如图2(a)所示,为 8X8X8的3维立方体数据,其中,z维度为最密集的,而X维度为最稀疏的,此时,数组可以
1等该数组分布到4个节点的集群上去,一种方式是进行1维的分割,即将该数 组按照X维度的方向进行分割,如图2 (b)所示,此时,该数组记为
数据分布在4个节点上,每个节点有2 (X。维度)个8X8 (y和z维度)的正方形数据,进行 3维FFT计算的步骤如下:
[0004] 一,在4 (X1维度)个节点上分别并行进行2 (X。维度)次2维8X8的FFT,即将y 和z维度方向的1维FFT计算完成;
[0005] 二,需要进行X维度方向的FFT,由于X维度方向的数据分布在不同的节点上,因 此需要进行通信。将数据再进行y维度方向的分割,如图2(b)所示。此时,该数组记为
通过进行2次(X。维度)的分组AllT0All通信,即可将Xi维度和y:维 a
[0006] 三,数据已经按照yi维度分布在4个节点上,但x维度的数据在内存中仍不连续。 为了使X维度的数据连续以保证cache访问的友好性,也可以在各个节点并行进行本地
间);
[0007] 四,在完成了对X维度数据的1维FFT之后,可以将整个步骤反序进行,把数据元 素恢复到初始的位置。
[0008] 传统集群3维FFT的另一种分布数据的方法是按照2个维度对数据进行分布,对 8X8X8的3维立方体数据按照X维度和y维度进行划分,分布到4X4的节点阵列上,记为
[0009] -,z维度方向的数据都在同一个节点本地,16个节点并行计算2(x。维度)X2(y。 维度)个z维度方向的1维FFT;
[0010] 二,为了通信的需要,将z维度做进一步的分裂, X1维度,将节点阵列分为4组,每组4(yi维度)个节点,各组节点内做2 (X。维度)X2 (y。维 度)次分组AllT0All通信,将yi维度和z:维度转置
[0011] 三,y维度方向的数据都在同一个节点本地,16个节点并行计算2(x。维度)X2(z。 维度)个y维度方向的1维FFT;
[0012] 四,按照Z1维度,将节点阵列分为4组,每组4(Xi维度)个节点,各组节点内做2 (X。 维度)X2 (y。维度)次AlIToAl1通信,将Xi维度和y:维度转置
[0013] 五,在完成了对X维度数据的1维FFT之后,可以将整个步骤反序进行,把数据元 素恢复到初始的位置。
[0014] 在上述计算方法中,第二步和第四步的通信都需要进行四次较小规模的AllT0All 通信,在节点具有足够内存容量做缓冲区的情况下,可以通过本地数据转置将通信减少为1 个AlIToAll通信。
[0015] 综上所述,已有高性能FFT方法针对的是单机或传统集群,到目前,尚未出现基于 GPU异构集群的高性能FFT方法。对于GPU异构集群,由于其具有更加复杂的多层存储器结 构,传统集群上的FFT算法已经不再适合其体系结构的特征,难以取得更高的性能。

【发明内容】

[0016] 为了克服上述现有技术的不足,本发明提供一种用于GPU异构集群上的高性能 FFT(FastFourierTransformation,快速傅氏变换)计算方法,针对GPU异构集群的多层 存储器体系结构特征,通过适应性的数据维度划分和传输转置方法,实现天河IA系统上的 大规模3维FFT,该方法得到了良好的性能和可延展性。
[0017] 本发明提供的技术方案是:
[0018] -种用于GPU异构集群的高性能FFT方法,所述方法将待处理数据进行维度划分 并表示为数组数据,对数组数据按照划分维度进行分割,将数据分布到GPU异构集群中与 划分维度相同数目的节点上,再进行FFT计算;图1是本发明方法的流程图,具体包括如下 步骤:
[0019] 1)测试所使用GPU集群的体系结构特征,获取包括节点数目、节点上GPU数目、节 点内存容量、GPU设备存储器容量等信息;设定d为GPU异构集群的节点数目;
[0020] 2)针对待处理数据,针对X维度进行维度划分,采用数组维度表示方法进行表示, X维度的大小设为a,
其中,x、y和z为维度的名称,a、b和c为相应维度的大 小;该数组表示和传统编程语言中的数组表示相同,只是在各个维度上加上该维度的命名, 方便对FFT计算问题的表示;
[0021] 3)将数组数据(一般情况下,数据需为三维结构,但各个维度的大小可以不同)按 照X维度分割为d份,数据分布在a个节点上;
[0022] 这样,每一个节点的数据为(a/d)*b*c个复数,此时数据记为 维度分裂为xJPX。两个维度,维度大小分别为d和a/d;
[0023] 4)每个节点上的GPU将y维度方向和z维度方向的数据进行FFT计算;具体是进 行X。维度个FFT计算,即进行a/d个2维的FFT计算;
[0024] 由于计算的时间与数据传输的时间相比基本上可以忽略,在此直接使用CUFFT调 用(CUFFT为Nvidia公司的单GPU上的FFT数学库函数)即可。
[0025] 5)在进行X维度的FFT计算之前,需要进行集群节点之间的数据转置,将y维度的 数据做进一步的划分,得到
[0027] 在集群上直接进行通信,将数据分布变换为
[0029] 这样,y维度和X维度得到交换,数据按照yi维度分布在集群节点上,X维度方向 的数据存储在各个节点之内。
[0030] 6)此时,各个节点可以分b/d(y。维度)次,将a*c的数据拷贝到GPU设备存储器 上,并进行二维数据转置,使得X维度的数据完全连续,得到
[0032] 7)进行X维度的FFT计算;
[0033] 8)在使用CUFFT进行X维度的1维FFT计算之后,反方向重复整个数据移动过程, 即回溯整个数据转置和传输的过程,将数据恢复为初始的分布状态,最终将数据恢复到最
[0034] 将上述用于GPU异构集群的高性能FFT方法应用于天河IA系统,天河IA是我国自 主组建的大型GPU异构集群系统,该集群共有8100个节点,每一个节点接有2个6核Intel 处理器和1个448核TeslaFermiGPU。该集群采用定制的网络并使用胖树的交换结构,每 一个节点具有80Gbps的理论带宽;将上述用于GPU异构集群的高性能FFT方法应用于天河 IA系统,包括如下步骤:
[0035] 首先使用数组维度表示方法,将初始数据记为数组
[0036] 再将数组数据按照X维度分割为4096份,分布到天河IA系统的4096个节点上, 这样,每一个节点的数据为2X8192X8192个单精度复数,此时数据记为
[0038] 天河IA系统的每个GPU进行X。维度上2个2维的FFT,将y维度方向和z维度方 向的数据进行计算;
[0039] 将数据进行转置,将y维度的数据做进一步的划分,得到:
[0041]在天河IA系统集群上直接使用copy子程序进行通信,将数据分布变换为
[0044] 这样,y维度和X维度得到交换,数据按照yi维度分布在集群节点上,X维度方向 的数据存储在各个节点之内;
[0045] 此时,各个节点可以分2(y。维度)次,将8192X8192的数据拷贝到GPU设备存储 器上,并进行正方形的数据转置,使得X维度的数据完全连续,得到:
[0047] 进行X维度的FFT计算;
[0048] 在使用CUFFT进行X维度的1维FFT计算之后,反方向重复整个数据移动过程,将 数据恢复到初始的位置。
[0049] 与现有技术相比,本发明的有益效果是:
[0050] 已有高性能FFT研究集中于单机或传统集群,缺乏GPU异构集群的高性能FFT的 研究。对于GPU异构集群,由于其具有更加复杂的多层存储器结构,传统集群上的FFT算法 已经不再适合其体系结构的特征,难以取得更高的性能。
[0051] 与现有技术相比,本发明以天河IA系统为对象,针对GPU异构集群的多层存储器 体系结构特征,提出适应性的数据维度划分和传输转置方法,通过数组维度类型程序设计, 解决异构集群科学计算问题中复杂的数组维度处理问题:使用Parray语言的新型数组类 型,可以在编码阶段对数组维度处理过程进行简洁的表示;同时,本发明还解决了如何使用 数组维度类型程序设计方法和Parray语言实现天河IA系统上的大规模3维FFT,实现天河IA系统上的大规模3维FFT,该方法得到了良好的性能和可延展性。
【附图说明】
[0052] 图1是本发明提供的用于GPU异构集群的高性能FFT方法的流程框图。
[0053] 图2是传统集群的三维FFT方法数据处理示意图;
[0054] 其中,(a)为需要进行FFT计算的3维立方体数据;(b)为将3维立方体数据分布 到4个处理器上后对y和z两个维度进行FFT计算的数据状态;(c)为将数据在4个处理 器之间进行通信,使得X维度的数据连续以进行X维度FFT计算的数据状态。
[0055] 图3是使用本发明提供的GPU集群FFT方法和Intel公司数学库
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1