用于cfd的并行计算方法及系统的制作方法

文档序号:6634658阅读:405来源:国知局
用于cfd的并行计算方法及系统的制作方法
【专利摘要】本发明公开了一种用于CFD的大规模并行计算方法及系统。其中,并行计算方法基于多个计算节点形成的异构体系结构,每一计算节点包括至少一个CPU和至少一个GPU;包括如下步骤:将CFD的计算任务分解为多个不同类型的任务流;将分解的获取的任务流分配给异构体系中的各个计算节点;对于每一计算节点,在接收到不同种类的多个任务流后,根据各个任务流所需浮点计算量的大小,确定由CPU处理或是由GPU处理;在每一计算节点的所有CPU和所有GPU完成接收的所有任务流后,完成CPU和GPU的同步。本发明突破了摩尔效应的限制,发挥了GPU的强大浮点计算能力和CPU的逻辑判断等能力,提高了计算效率。
【专利说明】用于CFD的并行计算方法及系统

【技术领域】
[0001]本发明涉及计算机并行技术,尤其涉及一种用于CFD (Computat1nal FluidDynamics,计算流体力学)的大规模并行计算方法及系统。

【背景技术】
[0002]目前,CFD大规模并行技术主要是基于CPU (Central Processing Unit,中央处理器)众核的粗粒度并行。
[0003]CPU功能强大,可以完成几乎所有的计算任务。然而,其浮点计算能力受到摩尔定律的限制,随着部件尺度的越来越小,量子效应(霍尔效应)对计算能力的继续提高形成了瓶颈。
[0004]CFD计算包括很多种类型,例如,CFD涉及边界面通量计算、网格节点间数据交换、交换面通量计算、内部面通量计算等等。这些不同类型的计算,有些所需浮点计算量大、有些所需的逻辑计算量大,因此,若全部采用CPU或CPU的组合作为网格节点进行计算,由于量子效应造成的计算能力的瓶颈,将严重影响并行计算的效率。


【发明内容】

[0005]有鉴于此,本发明提出一种用于CFD的并行计算方法及系统,旨在突破摩尔效应的限制,提高并行计算的效率。
[0006]第一方面,本发明提供了一种用于CFD的并行计算方法,所述方法基于多个计算节点形成的异构体系结构,每一所述计算节点包括至少一个CPU和至少一个GPU (GraphicProcessing Unit,中文翻译为“图形处理单元”),并且,两个计算节点间通过CPU互联;所述用于CFD的并行计算方法包括如下步骤:分解步骤,将CFD的计算任务分解为多个不同类型的任务流;第一分配步骤,将分解获取的任务流分配给所述异构体系结构中的各个计算节点;第二分配步骤,对于所述每一计算节点,在接收到不同种类的多个任务流后,根据各个任务流所需浮点计算量的大小,确定由CPU处理或是由GPU处理;计算及同步步骤,在每一计算节点的所有CPU和所有GPU完成接收的所有任务流后,完成CPU和GPU的同步;并且,不同计算节点的并行通过MPI实现。
[0007]进一步地,上述用于CFD的并行计算方法的所述分解步骤中,所述不同类型的任务流包括:内部面通量任务流、边界面通量任务流、交换面通量任务流、节点间数据交换任务流和CPU/GPU数据映射任务流。
[0008]进一步地,上述用于CFD的并行计算方法的所述第一分配步骤中,将所述分解获取的任务流重新进行组合,确定组合后所需的计算量,并将组合的任务流分配给与计算能力相匹配的计算节点。
[0009]进一步地,上述用于CFD的并行计算方法所述第二分配步骤中:由所述计算节点中的所述CPU进行所述边界面通量任务流和所述交换面通量任务流的计算。
[0010]进一步地,上述用于CFD的并行计算方法所述第二分配步骤中:由所述计算节点中的所述GPU进行所述内部面通量任务流的计算。
[0011]进一步地,上述用于CFD的并行计算方法所述第二分配步骤中:由所述计算节点间的CPU进行节点间数据交换的计算。
[0012]进一步地,上述用于CFD的并行计算方法所述第二分配步骤中:所述CPU/GPU数据映射任务流是由CPU和GPU共同完成,包括数据互相拷贝、数据发送和数据接收。
[0013]进一步地,上述用于CFD的并行计算方法还包括:在所述分解步骤前,还包括:网格读入及映射步骤,将网格读入内存中,通过显存映射模型,将网格映射到显存。
[0014]与现有技术相比,本发明用于CFD的并行计算方法具有如下优势:
[0015]第一、本发明将CFD的计算任务分解为多个不同类型的细粒度任务流细粒度,并行效率闻;
[0016]第二、本发明一方面发挥CPU的逻辑分支计算能力,采用CPU处理浮点计算量小的任务流,另一方面可以发挥GPU的浮点计算能力,采用GPU处理浮点计算量大的任务流;因此,突破了摩尔效应的限制,解决了量子效应造成的计算能力的瓶颈问题,提高了并行计算的效率。
[0017]第二方面,本发明还提供了一种用于CFD的并行计算系统,包括基于多个计算节点形成的异构体系结构,每一所述计算节点包括至少一个CPU和至少一个GPU,并且,两个计算节点间通过CPU互联;
[0018]其中,所述计算节点中的CPU用于执行边界面通量任务流和交换面通量任务流的计算;所述计算节点中的GPU进行内部面通量任务流的计算;所述计算节点间的CPU进行节点间数据交换的计算;以及,由CPU和GPU共同完成数据映射任务流的计算,包括数据互相拷贝、数据发送和数据接收;并且,不同计算节点的并行通过MPI实现。
[0019]与现有技术相比,本发明用于CFD的并行计算系统具有如下优势:
[0020]第一、CFD的并行计算系统将CFD的计算任务分解为多个不同类型的细粒度任务流细粒度,并行效率高;
[0021]第二、CFD的并行计算系统一方面发挥CPU的逻辑分支计算能力,采用CPU处理浮点计算量小的任务流(例如,边界面通量任务流和交换面通量任务流),另一方面可以发挥GTO的浮点计算能力,采用GPU处理浮点计算量大的任务流(例如,内部面通量任务流);因此,突破了摩尔效应的限制,解决了量子效应造成的计算能力的瓶颈问题,提高了并行计算的效率。

【专利附图】

【附图说明】
[0022]构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0023]图1为本发明用于CFD的并行计算方法第一实施例的步骤流程图;
[0024]图2为本发明用于CFD的并行计算方法第二实施例的步骤流程图;
[0025]图3是本发明用于CFD的并行计算方法另一实施例中,CPU和GPU的分工示意图。

【具体实施方式】
[0026]需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本发明。
[0027]参照图1,图1为本发明用于CFD的并行计算方法实施例的步骤流程图。
[0028]本实施例用于CFD的并行计算方法基于多个计算节点形成的异构体系结构,所述每一计算节点包括至少一个CPU和至少一个GPU,并且,两个计算节点间通过CPU互联;所述并行计算方法包括如下步骤:
[0029]分解步骤SllO JfCFD的计算任务分解为多个不同类型的任务流;第一分配步骤S120,将分解的获取的任务流分配给所述异构体系中的各个计算节点;第二分配步骤S130,对于所述每一计算节点,在接收到不同种类的多个任务流后,根据各个任务流所需浮点计算量的大小,确定由CPU处理或是由GPU处理;计算及同步步骤S140,在每一计算节点的所有CPU和所有GPU完成接收的所有任务流后,完成CPU和GPU的同步;并且,不同计算节点的并行通过MPI (Message Passing Interface,信息传递接口)实现。
[0030]进一步优选地,上述分解步骤SllO中,所述不同类型的任务流包括:内部面通量任务流、边界面通量任务流、交换面通量任务流、节点间数据交换任务流和CPU/GPU数据映射任务流。这些是CFD典型的几类任务流。当然,还可以包括其他类型的任务流,本实施例在此不再列举。
[0031]并且,所述第一分配步骤S120中,将所述分解获取的多个任务流重新进行组合,确定组合后所需的计算量,并将组合的任务流分配给与计算能力相匹配的计算节点。
[0032]例如,在一个实施例中,一个计算任务包括多个内部面通量任务流、边界面通量任务流、交换面通量任务流、节点间数据交换任务流和CPU/GPU数据映射任务流。将这些个任务流重新组合,形成多组任务流。其中,一个计算节点分配有这样一组任务流,该任务流包括3个内部面通量任务流、5个边界面通量任务流和6个交换面通量任务流。之所以这样分配,是因为这个计算节点的计算能力与这组任务流的计算量相匹配。
[0033]进一步地,第二分配步骤S130中,更为优选地,由所述计算节点中的所述CPU进行所述边界面通量任务流和所述交换面通量任务流的计算。由所述计算节点中的所述GPU进行所述内部面通量任务流的计算。由所述计算节点间的CPU进行节点间数据交换的计算。此外,所述CPU/GPU数据映射任务流是由CPU和GPU共同完成,包括数据互相拷贝、数据发送和数据接收。
[0034]边界面通量任务流、节点间数据交换和交换面通量任务流之所以交由CPU执行的原因在于:边界面通量浮点计算量小,可以在GPU完成大量内部面通量计算的同时由CPU同时计算;节点间数据交换必须发生在节点与节点的CPU之上,这是由于计算机的架构特点所决定的;交换面通量需要节点间数据交换的结果进行计算,因此交由CPU计算。内部面通量的浮点计算量巨大,因此交由浮点计算能力突出的GPU完成。
[0035]与现有技术相比,本实施例用于CFD的并行计算系统具有如下优势:
[0036]第一、CFD的并行计算系统将CFD的计算任务分解为多个不同类型的细粒度任务流细粒度,并行效率高;
[0037]第二、CFD的并行计算系统一方面发挥CPU的逻辑分支计算能力,采用CPU处理浮点计算量小的任务流(例如,边界面通量任务流和交换面通量任务流),另一方面可以发挥GTO的浮点计算能力,采用GPU处理浮点计算量大的任务流(例如,内部面通量任务流);因此,突破了摩尔效应的限制,解决了量子效应造成的计算能力的瓶颈问题,提高了并行计算的效率。
[0038]进一步优选地,上述实施例中,在所述分解步骤SllO前,还包括网格读入及映射步骤,具体为,将网格读入内存中,通过显存映射模型,将网格映射到显存。
[0039]然后可以采用网格分解技术,获取每一计算节点所对应的分区映射子图。进而,可以依据每一计算节点的分区映射子图确定其计算能力。进而接收与其匹配的任务流总和。
[0040]优选地,可以选用网格自动分解技术,获取每一计算节点的分区映射子图。例如,首先将网格读入内存中,以获得内存中的初始映射。在大规模并行计算机上,特别是巨型机上,一般计算节点的设计和分布是差别化的。根据计算节点计算能力的不同,构造优化分布函数,获得每个节点的最优匹配计算量。然后,提取网格特征,主要是六面体、四面体、三棱柱和金字塔特征。通过粗化模型,对网格特征进行粗化,直至最底层以得到粗化图。进而,对粗化图施加多层次并行飘带算法,加以分区得到各个节点上的分区映射子图。之后,将分区映射子图进行细化,期间运用精化算法,直至最顶层,从而获得各个计算节点上的细化分区映射子图,每一细化分区映射子图与对应的计算节点的最优匹配计算量相匹配。
[0041]其中,如上所述,粗化模型为现有技术中通常采用的模型。在具体实施时,可以根据经验选取。优化分布函数有很多,例如,李朴雅诺夫势能函数等。同时,确定优化分布函数选取的依据是最优化理论中的相关理论。由于最优分布函数的种类和选取依据对于本领域技术人员而言是习知的,因此,本发明对此不做更多说明。
[0042]采用网格自动分解技术的好处是,将网格映射到内存中,确定计算节点的计算能力,并站在系统的角度使各个计算节点获得满足该计算节点最优匹配计算量的细化分区映射子图,即,将网格分裂为小规模映射子图,以实现结合节点计算能力提高并行计算效率。可以对任意类型网格的自动分解能力,且能够实现负载平衡,大大提高并行计算效率,耗时较短。
[0043]参照图2,图2为本发明用于CFD的并行计算方法第二实施例的步骤流程图。
[0044]首先将网格读入CPU内存中,通过显存映射模型,将网格映射到显存中。然后通过任务流分解系统,将计算任务流分解为内部面通量、边界面通量、交换面通量、节点间数据交换、CPU/GPU数据映射等多个任务流。通过任务流自动规划系统,将任务流分解和分配到各个计算节点上。之后,根据任务流类型的不同,创建多个任务流,用CPU计算边界面通量、完成数据交换和交换面通量计算,与此同时用GPU计算内部面通量,最后完成CPU和GPU的同步。在每一个迭代步中,都要重复完成上述工作,直至计算结束,将结果文件写入预设接口的文件中。需要说明的是,不同计算节点中的并行是通过MPI实现的。
[0045]CPU与GPU对任务流的详细分工示意图详见图3。
[0046]第二方面,本发明还提供了一种用于CFD的并行计算系统,包括基于多个计算节点形成的异构体系结构,所述每一计算节点包括至少一个CPU和至少一个GPU,并且,两个计算节点间通过CPU互联;其中,所述计算节点中的CPU用于执行边界面通量任务流和交换面通量任务流的计算;所述计算节点中的GPU进行内部面通量任务流的计算;所述计算节点间的CPU进行节点间数据交换的计算;以及由CPU和GPU共同完成数据映射任务流的计算,包括数据互相拷贝、数据发送和数据接收;并且,不同计算节点的并行通过MPI实现。
[0047]本实施例与上述用于CFD的并行计算系统的原理相同,相关之处参照上述说明即可,本发明对此不再赘述。
[0048]与现有技术相比,本实施例用于CFD的并行计算系统具有如下优势:
[0049]第一、CFD的并行计算系统将CFD的计算任务分解为多个不同类型的细粒度任务流细粒度,并行效率高;
[0050]第二、CFD的并行计算系统一方面发挥CPU的逻辑分支计算能力,采用CPU处理浮点计算量小的任务流(例如,边界面通量任务流和交换面通量任务流),另一方面可以发挥GTO的浮点计算能力,采用GPU处理浮点计算量大的任务流(例如,内部面通量任务流);因此,突破了摩尔效应的限制,解决了量子效应造成的计算能力的瓶颈问题,提高了并行计算的效率。
[0051]以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
【权利要求】
1.一种用于CFD的并行计算方法,其特征在于,所述方法基于多个计算节点形成的异构体系结构,每一所述计算节点包括至少一个CPU和至少一个GPU,并且,两个计算节点间通过CPU互联;所述用于CFD的并行计算方法包括如下步骤: 分解步骤,将CFD的计算任务分解为多个不同类型的任务流; 第一分配步骤,将分解获取的任务流分配给所述异构体系结构中的各个计算节点;第二分配步骤,对于所述每一计算节点,在接收到不同种类的多个任务流后,根据各个任务流所需浮点计算量的大小,确定由CPU处理或是由GPU处理; 计算及同步步骤,在每一计算节点的所有CPU和所有GPU完成接收的所有任务流后,完成CPU和GPU的同步; 并且,不同计算节点的并行通过MPI实现。
2.根据权利要求1所述的用于CFD的并行计算方法,其特征在于, 所述分解步骤中,所述不同类型的任务流包括:内部面通量任务流、边界面通量任务流、交换面通量任务流、节点间数据交换任务流和CPU/GPU数据映射任务流。
3.根据权利要求2所述的用于CFD的并行计算方法,其特征在于, 所述第一分配步骤中,将所述分解获取的任务流重新进行组合,确定组合后所需的计算量,并将组合的任务流分配给与计算能力相匹配的计算节点。
4.根据权利要求3所述的用于CFD的并行计算方法,其特征在于,所述第二分配步骤中: 由所述计算节点中的所述CPU进行所述边界面通量任务流和所述交换面通量任务流的计算。
5.根据权利要求4所述的用于CFD的并行计算方法,其特征在于,所述第二分配步骤中: 由所述计算节点中的所述GPU进行所述内部面通量任务流的计算。
6.根据权利要求5所述的用于CFD的并行计算方法,其特征在于,所述第二分配步骤中: 由所述计算节点间的CPU进行节点间数据交换的计算。
7.根据权利要求6所述的用于CFD的并行计算方法,其特征在于, 所述CPU/GPU数据映射任务流是由CPU和GPU共同完成,包括数据互相拷贝、数据发送和数据接收。
8.根据权利要求1至7中任一项所述的用于CFD的并行计算方法,其特征在于,还包括:在所述分解步骤前,还包括: 网格读入及映射步骤,将网格读入内存中,通过显存映射模型,将网格映射到显存。
9.一种用于CFD的并行计算系统,其特征在于,包括: 基于多个计算节点形成的异构体系结构,每一所述计算节点包括至少一个CPU和至少一个GPU,并且,两个计算节点间通过CPU互联; 其中,所述计算节点中的CPU用于执行边界面通量任务流和交换面通量任务流的计算; 所述计算节点中的GPU进行内部面通量任务流的计算; 所述计算节点间的CPU进行节点间数据交换的计算;以及由CPU和GPU共同完成数据映射任务流的计算,包括数据互相拷贝、数据发送和数据接收;并且,不同计算节点的并行通过MPI实现。
【文档编号】G06F9/38GK104331271SQ201410658521
【公开日】2015年2月4日 申请日期:2014年11月18日 优先权日:2014年11月18日
【发明者】李桦, 刘枫, 田正雨, 潘沙 申请人:李桦, 刘枫
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1