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

文档序号:9471342阅读:来源:国知局
提供方法进行性 能比较的结果示意图;
[0056] 其中,横坐标为进行性能测试的不同的数据维度大小规模;纵坐标为本发明的 GPU集群FFT算法代码和Intel公司数学库提供方法的性能比较,单位为Gflops,S卩IG次 浮点运算每秒。
[0057] 图4是使用本发明提供的GPU集群FFT方法处理的代码同Intel公司数学库提供 方法进行性能加速比(即在增加参与计算节点的情况下,性能的提升情况)比较的结果示 意图;
[0058] 其中,横坐标为使用天河IA的节点数目;纵坐标为其取得的性能,其单位为 Gflops,即IG次浮点运算每秒。
【具体实施方式】
[0059] 下面结合附图,通过实施例进一步描述本发明,但不以任何方式限制本发明的范 围。
[0060] 本发明提供一种GPU异构集群上的高性能FFT方法(PKUFFT),将该方法应用于我 国自主组建的大型GPU异构集群系统天河IA上,天河IA集群共有8100个节点,每一个节 点接有2个6核Intel处理器和1个448核TeslaFermiGPU,该集群采用定制的网络并使 用胖树的交换结构,每一个节点具有80Gbps的理论带宽。
[0061] 本发明使用Parray语言实现GPU异构集群的高性能FFT方法。使用Parray语言 表示维度变换所针对的数组包括自然数组、人工数组和混合数组;并使用Parray语言描述 维度变换和转置过程的数据传输。表示方法分别如下:
[0062] a,自然数组
[0063] Parray语言中,自然数组指数组数据元素的逻辑下标和物理偏移相一致的数组类
这样的自然数组,Parray声明一个维度为a*b*c的数组类型,该 数组为位于分页存储器中的浮点数数组,示例代码如下:
[0064]
[0065] b,人工数组
[0066] 在Parray中,数组的物理存储与逻辑视图在概念上进行分离:类型提供且仅仅提 供对数据的逻辑视图,与数据的物理存储空间无关;数组维度变换和转置通过人工数组实 现。人工数组是指含有一个或多个人工维度的数组类型,人工维度来自于对已有数组类型 维度的引用。对于一个正方形的数组类型A,其维度为b*c,其在内存中的转置表示为类型B 的形式,其两个维度来自于类型A,但是维度的顺序进行了对调,人工数组的示例见下列代 码:
[0067]
[0068] c,线程数组和混合数组
[0069] Parray中,使用parray命令同样可以声明线程数组。
[0070] 如下代码声明一个集群上多个节点上进程构成的数组类型MYMPITA,其维度为a。
[0071]
[0072] Parray中,线程数组的维度可以和数据数组的维度结合在一起,构成一种特殊的 人工数组,称为混合数组。混合数组可以用来表示分布的数据。下面混合数组表示的示例 代码声明了一个混合数组类型T:
[0073]
[0074] 上述混合数组类型T中,它的T_0_0维度来自MPI进程数组类型MYMPITA,而T_0_1 和T_1维度来自于分页内存数组类型DT。
[0075] 采用Parray语言表示数据的维度变换之后,将维度变换的数据传输到集群节点, 具体地:
[0076] Parray中,可以通过调用copy子程序完成集群节点上甚至节点间的数据传输和 转置,其语法为
[0077] $copyS(s)toT(t)
[0078] 其中,参数s和S为传输起始的数据地址和数组类型,参数t和T为传输目标的数 据地址和数组类型,起始类型S和目标类型T需要具有相同的维度树结构。copy所完成的 数据传输将根据起始类型S和目标类型T指示出的维度关系,将数据由起始地址s复制到 目标地址t。
[0079] 在天河IA上,使用Parray书写的3维FFT代码最大运行到14336X14336X14336 单精度复数的规模,共使用7168个节点,这是目前世界上最大规模的3维FFT运算。本实 施实例以使用4096个节点计算8192X8192X8192规模的数据为例,描述Parray3维FFT 方法的步骤与应用:
[0081] 再将数组数据按照X维度分割为4096份,分布到4096个节点上,这样,每一个节 点的数据为2X8192X8192个单精度复数。此时数据记为
[0083] 然后,每个GPU先进行2 (xO维度)个2维的FFT,将y维度方向和z维度方向的数 据进行计算。由于计算的时间与数据传输的时间相比基本上可以忽略,在此直接使用CUFFT 调用即可,无需使用已实现的更加优化的GPUFFT代码。
[0084] 然后,在进行X维度的FFT计算之前,需要进行转置,将y维度的数据做进一步的 划分,得到
[0086] 在集群上直接使用copy子程序进行通信,将数据分布变换为
[0089] 这样,y维度和X维度得到交换,数据按照yl维度分布在集群节点上,X维度方向 的数据存储在各个节点之内。
[0090] 此时,各个节点可以分2(y0维度)次,将8192X8192的数据拷贝到GPU设备存储 器上,并进行正方形的数据转置,使得X维度的数据完全连续,得到
[0092] 在使用CUFFT进行X维度的1维FFT计算之后,反方向重复整个数据移动过程,将 数据恢复到初始的位置。
[0093] 以上方法采用Parray代码实现,代码如下所示:
[0094] Parray书写的集群3维FFT代码:
[0095]
[0096]
[0097] 其中,第1行声明自然数组类型HSTS,代表整个数据在集群上的维度划分;第2行 声明自然数组类型HST,引用到HSTS_1维度,代表数据在一个节点上的维度划分;第5~7 行,声明MPI进程数组类型MYTA以及混合数组类型S和T,注意S和T中的对应维度进行了 调整,之后将使用其进行集群上数据的转置通信;进入FFT3D_F0RWARD的执行代码,第8~ 12行,各个节点上分2次将y维度和z维度的8192X8192的数据传输到GPU上进行计算; 第13行copy子程序利用之前声明的混合数组类型S和T进行算法中的集群之间的通信; 第14~17行,各个节点将本地X维度的数据传输到GPU上进行1维FFT的计算;最后,反 方向重复整个数据移动过程,将数据恢复到初始的位置。
[0098] 使用Parray实现的GPU集群3维FFT(PKUFFT)在天河IA上进行了性能测试,并与 IntelMKL10. 3. 1. 048进行了比较。图3是使用本发明提供的GPU集群FFT方法和Intel 公司数学库提供方法进行性能比较的结果示意图;其中,横坐标为进行性能测试的不同的 数据维度大小规模;纵坐标为本发明的GPU集群FFT算法代码和Intel公司数学库提供方 法的性能比较,单位为Gflops,S卩IG次浮点运算每秒。图3给出了它们在对不同规模的单 精度复数数据做3维FFT时的性能;可以看出,PKUFFT的性能远远超出MKL。图4是使用 本发明提供的GPU集群FFT方法处理的代码同Intel公司数学库提供方法进行性能加速 比(即在增加参与计算节点的情况下,性能的提升情况)比较的结果示意图;其中,横坐标 为使用天河IA的节点数目;纵坐标为其取得的性能,其单位为Gflops,即IG次浮点运算每 秒。图4显示出,与MKL相比较,PKUFFT具有更好的性能延展性。
[0099] 需要注意的是,公布实施例的目的在于帮助进一步理解本发明,但是本领域的技 术人员可以理解:在不脱离本发明及所附权利要求的精神和范围内,各种替换和修改都是 可能的。因此,本发明不应局限于实施例所公开的内容,本发明要求保护的范围以权利要求 书界定的范围为准。
【主权项】
1. 一种用于GPU异构集群的高性能FFT方法,所述方法将待处理数据进行维度划分并 表示为数组数据,对数组数据按照划分维度进行分割后将数据分布到GPU异构集群中与划 分维度相同数目的节点上,再进行FFT计算;具体包括如下步骤: 1) 测试获得所使用GPU集群的体系结构特征,包括节点数目、节点上GPU数目、节点内 存容量、GPU设备存储器容量信息;设定d为GPU异构集群的节点数目; 2) 将待处理数据采用数组维度表示方法表示为数组数据;针对X维度进行维度划分,X 维度的大小设为a,^其中,x、y和z为维度的名称,a、b和c为相应维度的大 小; 3) 将步骤2)所述数组数据按照X维度分割为d份,数据分布在a个节点上;每一个节 点的数据为(a/d)*b*c个复数,其中,X维度分裂为xJPX。两 个维度,维度大小分别为d和a/d; 4) 每个节点上的GPU将y维度方向和z维度方向的数据进行FFT计算;具体是进行x。 维度个FFT计算,即进行a/d个2维的FFT计算; 5) 在进行X维度的FFT计算之前,进行集群节点之间的数据转置,将y维度的数据做进 一步的划分在集群上直接进行通信,将y维度和X维度进行交换,,数据按照Y1维度分布在集群节 点上,X维度方向的数据存储在各个节点上; 6) 各个节点分为y。维度大小b/d次,将a*c的数据拷贝到GPU设备存储器上,并进行 二维数据转置,使得X维度的数据完全连续,7) 进行X维度的FFT计算; 8) 反方向重复整个数据移动过程,回溯整个数据转置和传输的过程,将数据恢复为初 始的分布状态,最终将数据恢复到最初始的位置,2. 如权利要求1所述用于GPU异构集群的高性能FFT方法,其特征是,所述FFT计算具 体通过调用FFT数学库函数CUFFT实现。3. 如权利要求1所述用于GPU异构集群的高性能FFT方法,其特征是,所述GPU异构集 群为天河IA系统。4. 如权利要求1~3所述用于GPU异构集群的高性能FFT方法,其特征是,步骤1)所 述GPU异构集群的节点数目d为4096 ;步骤2)所述x、y和z维度相应维度大小a、b和c 均为8192。
【专利摘要】本发明公布了一种用于GPU异构集群的高性能FFT方法,将数据进行维度划分并表示为数组数据,按照划分维度进行分割后分布到GPU异构集群中与划分维度相同数目的节点上,再进行FFT计算,包括:获得GPU集群的节点数目、节点上GPU数目、节点内存容量、GPU设备存储器容量信息;将数据采用数组维度表示为数组数据;针对x维度进行维度划分;按照x维度分割数据,分布在多个节点上;将y和z维度方向的数据进行FFT计算;进行集群节点之间的数据转置;进行x维度的FFT计算。本发明是针对GPU异构集群的多层存储器体系结构特征的FFT方法,具有良好的性能和可延展性。
【IPC分类】G06F17/14
【公开号】CN105224506
【申请号】CN201510725866
【发明人】陈一峯, 崔翔, 王韬, 严磊
【申请人】北京大学
【公开日】2016年1月6日
【申请日】2015年10月29日
当前第2页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1