CN113254241B - 一种应用于cfd高性能计算的数据跨进程传输方法 - Google Patents

一种应用于cfd高性能计算的数据跨进程传输方法 Download PDF

Info

Publication number
CN113254241B
CN113254241B CN202110707260.2A CN202110707260A CN113254241B CN 113254241 B CN113254241 B CN 113254241B CN 202110707260 A CN202110707260 A CN 202110707260A CN 113254241 B CN113254241 B CN 113254241B
Authority
CN
China
Prior art keywords
data
basic
length
communication data
communication
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110707260.2A
Other languages
English (en)
Other versions
CN113254241A (zh
Inventor
陈坚强
郭永恒
张勇
赵钟
何先耀
肖中云
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Computational Aerodynamics Institute of China Aerodynamics Research and Development Center
Original Assignee
Computational Aerodynamics Institute of China Aerodynamics Research and Development Center
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Computational Aerodynamics Institute of China Aerodynamics Research and Development Center filed Critical Computational Aerodynamics Institute of China Aerodynamics Research and Development Center
Priority to CN202110707260.2A priority Critical patent/CN113254241B/zh
Publication of CN113254241A publication Critical patent/CN113254241A/zh
Application granted granted Critical
Publication of CN113254241B publication Critical patent/CN113254241B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • G06F30/28Design optimisation, verification or simulation using fluid dynamics, e.g. using Navier-Stokes equations or computational fluid dynamics [CFD]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45579I/O management, e.g. providing access to device drivers or storage
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2111/00Details relating to CAD techniques
    • G06F2111/10Numerical modelling
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2113/00Details relating to the application field
    • G06F2113/08Fluids
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2119/00Details relating to the type or aim of the analysis or the optimisation
    • G06F2119/14Force analysis or force optimisation, e.g. static or dynamic forces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Fluid Mechanics (AREA)
  • Computing Systems (AREA)
  • Algebra (AREA)
  • Mathematical Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Mathematical Physics (AREA)
  • Pure & Applied Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

本发明公开了一种应用于CFD高性能计算的数据跨进程传输方法,首先创建由本质为字符型向量容器的多个基本片段首尾顺次链接构成的动态容器,将CFD数值模拟的不同进程间需要进行通信的数据打包成统一的字符型数据;然后将MPI通信函数封装在动态容器中,进行MPI通信,将动态容器中储存的数据进行传输。其中,基本片段的标准长度上限不超过MPI缓冲区的大小,在进行传输时,可分片执行。本发明对缓冲区的利用率大幅提升的前提下又降低了数据的通信次数,同时,基本片段标准长度上限也有效避免了缓冲区溢出,对于大规模数据的传输,可以通过分片执行的模式,摆脱缓冲区大小的约束,避免通信堵塞的发生。

Description

一种应用于CFD高性能计算的数据跨进程传输方法
技术领域
本发明属于数据跨进程传输领域,具体涉及一种应用于CFD高性能计算的数据跨进程传输方法。
背景技术
计算流体力学(Computational Fluid Dynamics,简称为CFD),是利用计算机和数值方法对流体力学问题进行数值模拟和分析的新兴交叉学科,属于典型的计算、访存密集型的科学计算领域,强烈地依赖于高性能计算机的发展。目前,随着计算机硬件和并行计算技术的发展,为适应航空航天等领域大规模数值模拟的需求,高性能CFD软件的研制引起了日益广泛的关注。至今,以MPI、OpenMP等为代表的并行编程环境已在高性能CFD软件的研制中得到广泛应用。
目前,在国内外已经有了不少的针对基于网格离散的数值模拟领域的并行计算框架,例如OpenFOAM、Moose、Overture、JASMIN/JAUMIN/JCOGIN等。但由于结构网格拓扑的不同,以上并行编程框架基本都是单独针对结构网格或者非结构网格开发的,难以做到并行通信与网格无关。而在CFD工程应用中,非结构网格因其生成简单被广泛应用于复杂几何外形,但离散精度较低;结构网格因其具有较高的离散精度对于特殊问题有不可替代的角色,但生成复杂。如果对于结构、非结构网格分别采用不同的并行计算框架,那么同样的一套计算方法将难以适应于不同的网格类型,难以对不同应用领域实施灵活且精细地数值模拟。
随着高性能计算(High performance computing,缩写HPC)技术不断地更新迭代,其主流体系结构趋向于采用在分布式内存管理模式下的超级计算机集群(简称超算),如Titan、Summit、“神威·太湖之光”等。但在分布式内存管理模式下,伴随着CFD计算网格规模与基于区域分解计算的分区总数的增加以及多学科求解器的融合,跨进程传输的抽象数据总量和次数也相应增加,从而在并行通信方面产生更多的成本开销。在实际运用中,如重叠网格隐式并行算法,数据的跨进程传输量比网格块对接关系高出若干量级。此外,在传统CFD软件中,为降低整体的通信次数,经常将不同精度的数据转化成单一类型的数据(比如将int、float类型提升为double型数据),统一存储在一维数组中;当通信结束后,再执行数据类型的逆转化操作。显然,这种方法增加了通信数据的总长度,不仅对缓冲区造成了浪费,而且产生了额外的通信时间。同时,在给定的操作系统上,单个双精度浮点型数组可分配的连续内存是有限的,缓冲区的大小也是有限的,这就意味着单一数组打包技术对海量数据的运载能力是有限的。尽管MPI为用户提供了结构体数据打包传输接口,但是受内存对齐原理的约束,这种通讯方式仍然造成缓存浪费和通讯成本的增加。
发明内容
本发明的目的在于:针对上述存在的问题,提供一种应用于CFD高性能计算的数据跨进程传输方法,将不同进程间需要进行通信的数据利用动态容器进行打包,利用动态容器打包后的通信数据全部转换成了统一的字符型数据,动态容器中首尾链接的基本片段有长度上限,在进行数据传输时,可以摆脱缓冲区大小的约束,不会造成通信阻塞,且大大减少了通信次数。传输完成后只需要根据动态容器的全局指针和基本片段的局部指针,将不同类型的数据元素依次读出,并进行逆向解码,即可得到打包前的原数据类型的通信数据。
本发明目的通过下述技术方案来实现:一种应用于CFD高性能计算的数据跨进程传输方法,包括:
S1、数据打包:创建动态容器,将CFD数值模拟中不同进程间需要进行通信的各种类型的通信数据拷贝至所述动态容器中,完成数据打包;
S2、将MPI通信函数封装在所述动态容器中;
S3、进行MPI通信,将所述动态容器打包后的所述通信数据在不同进程间进行传输;
其中,所述动态容器由首尾顺次链接的基本片段构成,每个所述基本片段的核心数据为字符型向量容器;每个所述基本片段对应的标准长度上限为1024000000。
本发明的动态容器由首尾链接的基本片段构成,而基本片段的本质是字符型向量容器,动态容器可以将不同类型的数据都压缩为字符型数据,实现任意类型网格的并行计算的兼容性。且基本片段的标准长度上限为10240000000,在MPI通信进行数据传输时,可以通过分片执行的模式,摆脱MPI缓冲区大小的约束,避免通信发生阻塞。
优选地,所述不同进程间需要进行通信的各种类型的通信数据包括当前进程的数据和/或其他多个进程的数据。
本发明的数据打包不仅应用于当前进程,而且应用于多进程的分散数据的收集与共享,可将多个进程的数据统一打包传输。
优选地,步骤S1包括:
S11、创建所述基本片段,所述基本片段是字符型向量容器,通过指针记录对所述字符型向量容器内的数据进行读写操作;所述动态容器由若干个所述基本片段利用指针首尾顺次链接而成,且每个所述基本片段有确定的序列编号;所述动态容器初始为单个所述基本片段,后续增加的所述基本片段的个数由需要存储的数据长度确定;
S12、获取不同类型的所述通信数据,并将所述通信数据赋值给每个类型的数据对应的临时数组中;
S13:利用memcpy函数,将所述临时数组中的值拷贝至所述基本片段中,将所述通信数据中不同类型数据转化为单一的字符型数据;
S14:在对所述通信数据进行存储时,统计所述通信数据的长度,并比较所述通信数据的长度与当前基本片段实际长度、新增长度与标准长度上限之间的关系,将所述通信数据顺序写入所述动态容器中;
S15:重复步骤S14的操作,直至所有所述通信数据完整地存储在所述动态容器中,完成数据打包。
将不同进程间需要进行通信的数据拷贝到动态容器中时,利用通信数据的长度与当前基本片段的实际长度、新增长度与标准长度上限之间的关系,可以决定当前基本片段的内存增量以及新基本片段的创建和链接,拷贝进动态容器中的数据间没有间隔,读取方便。
优选地,步骤S14中,当所述通信数据的长度与当前基本片段实际长度之和小于或等于标准长度上限时,将所述通信数据直接拷贝至当前基本片段中,并同时记录当前末尾字符的局部指针和全局位置指针。
当通信数据的长度与当前基本片段实际长度之和小于或等于标准长度上限时,则当前基本片段的剩余长度足够存储通信数据,根据通信数据的剩余长度即可得到当前基本片段的内存增量,通信数据剩余多少长度,当前基本片段就新增多少长度。
优选地,步骤S14中,当所述通信数据的长度与当前基本片段实际长度之和大于标准长度上限时,将部分所述通信数据填充至当前基本片段的剩余空间,记录所述通信数据的剩余长度,通过全局指针的位置与标准长度上限的值做对比,获得需要新创建的基本片段个数,并确定新创建基本片段在动态容器中的序列编号,此时用于记录当前末尾字符的局部位置的指针位于新基本片段的首端,然后将剩余的所述通信数据填充至新的基本片段中。
当所述通信数据的长度与当前基本片段实际长度之和大于标准长度上限时,则当前基本片段不能将通信数据全部储存完,需要创建新的基本片段,利用全局指针的位置与基本片段的标准长度上限值确定需要新创建的基本片段个数,并确定新创建的基本片段的序列编号。通过序列编号和局部指针在读取数据时,可以确定数据在动态容器中的位置。
优选地,步骤S3中,数据进行传输时,将所述动态容器中的多个所述基本片段按照所述序列编号依次传输,执行完一个所述基本片段的发送-接受,或广播通讯后,再按照所述序列编号依次对所述基本片段进行处理,直到数据传输完成。
对于大规模数据,一般需要若干个基本片段依次存储。每个基本数据片段的长度阈值不超过MPI缓冲区的限制。在MPI环境中,按照序列编号从小到大的顺序对基本片段进行传输,执行完发送-接受,或者广播等通讯之后,再进行下一数据片段的处理。可以实现分片执行的模式,摆脱缓冲区大小的约束,避免通信堵塞的发生。
优选地,还包括,传输完成后,获取接收到的所述动态容器中每个所述基本片段的长度以及所述基本片段的元素个数,将所述动态容器中的所述通信数据依次读出,并对所述通信数据进行逆向解码,将所述通信数据转换为打包前的原本数据类型,并释放所述动态容器。
传输完成后,为了实现消息的长度匹配,仅关注每个基本片段的长度以及基本片段链表的元素个数,而不必关注基本片段内部压缩信息的原始类型,即可将动态容器中的数据依次读出,完成不同类型数据的跨进程传输。
前述本发明主方案及其各进一步选择方案可以自由组合以形成多个方案,均为本发明可采用并要求保护的方案;且本发明,(各非冲突选择)选择之间以及和其他选择之间也可以自由组合。本领域技术人员在了解本发明方案后根据现有技术和公知常识可明了有多种组合,均为本发明所要保护的技术方案,在此不做穷举。
本发明的有益效果:
1、本发明的基本片段有标准长度上限,与MPI自带的打包信息传输机制相比,本发明对缓冲区的利用率大幅提升的前提下又降低了数据的通信次数,同时,标准片段长度阈值m也有效避免了缓冲区溢出,对于大规模数据的传输,可以通过分片执行的模式,摆脱缓冲区大小的约束,避免通信堵塞的发生,降低通信次数。
2、本发明的动态容器,为基本片段都设置了序列编号,在进行逆向解码时,可以快速的确定不同类型数据的位置,便于解码,仅需关注每个基本片段的长度以及基本片段链表的元素个数,而不必关注基本片段内部压缩信息的原始类型。
3、本发明提出的方法,不仅可以实现任意类型网格的并行计算兼容性,它还可以在充分利用缓存空间的前提下降低数据的通信次数。同时,对于大规模数据的传输,可以通过分片执行的模式,摆脱缓冲区大小的约束,避免通信堵塞的发生。将CFD高性能计算中的并行编程表现为数据打包、数据传输、数据解码三个过程,极大提升了软件开发的效率。
附图说明
图1是本发明的方法流程图。
图2是本发明实施例的动态容器结构示意图。
图3是本发明实施例的数据打包示意图。
图4是本发明实施例的网格块-交界面-数据交换机制。
图5是本发明实施例的数据打包前后通信次数统计对比图。
具体实施方式
下列非限制性实施例用于说明本发明。
实施例
参照图1,一种应用于CFD高性能计算的数据跨进程传输方法,包括以下步骤:
S1、数据打包:创建动态容器,将CFD数值模拟中不同进程间需要进行通信的各种类型通信数据拷贝至所述动态容器中,完成数据打包;
S11、创建所述基本片段,所述基本片段是字符型向量容器,通过指针记录对所述字符型向量容器内的数据进行读写操作;所述动态容器由若干个所述基本片段利用指针首尾顺次链接而成,且每个所述基本片段有确定的序列编号;所述动态容器初始为单个所述基本片段,后续增加的所述基本片段的个数由需要存储的数据长度确定;
S12、获取不同类型的所述通信数据,并将所述通信数据赋值给每个类型数据的对应临时数组中;
S13:利用memcpy函数,将所述临时数组中的值拷贝至字符型向量容器中,将所述通信数据中不同类型数据转化为单一的字符型数据,即char型数据;
S14:在对所述通信数据进行存储时,统计所述通信数据的长度,并比较所述通信数据的长度与当前基本片段实际长度、新增长度与标准长度上限之间的关系,将通信数据顺序写入动态容器中。
参照图2,所述动态容器由首尾顺次链接的基本片段构成,每个所述基本片段的核心数据为字符型向量容器。将每个所述基本片段的标准长度上限设置为1024000000,一方面是因为内存管理系统不允许开辟过长的连续内存;另一方面,在后续的MPI通信过程中,MPI通信函数对应的缓冲区有一定的限制,限制所述基本片段的标准长度上限,可以摆脱缓冲区大小的约束,避免同心发生阻塞。
所述基本片段可以将int、float、double、C++基本数据类型等不同类型的数据均转换成字符型数据,即char型数据,char为占一个字节的基本字符类型,能确保可存放机器基本字符集中任意对应的数字。每个所述基本片段对应的标准长度上限m为1024000000,即每个所述基本片段可以存储1024000000个字符型数据。
参照图3,当通信数据的长度与当前基本片段实际长度之和小于或等于标准长度上限时,将通信数据直接拷贝至当前基本片段中,并同时记录当前末尾字符的局部指针和全局位置指针;其中,当前基本片段实际长度为,当前基本片段已储存有数据的长度。当前基本片段的内存增量即为通信数据的剩余长度,数据有多少,内存就新增多少,节约了内存空间的同时,保证了每位数据之间没有间隔,便于数据读取时的定位。
当通信数据的长度与当前基本片段实际长度之和大于标准长度上限时,将部分通信数据填充至当前基本片段的剩余空间,然后创建新的基本片段,将通信数据的剩余部分填充至新的基本片段中。
当通信数据的长度与当前基本片段实际长度之和大于标准长度上限时,将部分通信数据填充至当前基本片段剩余空间中。记录通信数据的剩余长度,即还未进行存储的通信数据的长度;通过全局指针的位置与标准长度上限的值做对比,获得需要新创建的基本片段个数以及每个新创建的基本片段在动态容器中的序列编号n,其中,n的取值为自然数1,2,3,...n;此时用于记录当前末尾字符的局部位置的指针位于新基本片段的首端,然后将剩余的通信数据填充至新的基本片段中。
S15:重复步骤S14的操作,直至所有所述通信数据完整地存储在动态容器中,完成数据打包。
利用动态容器对数据进行存储的过程是内存空间动态增长过程,该过程通过反复比较当前基本片段实际长度、新增长度与标准长度上限之间的关系,决定当前基本片段的内存增量以及新的基本片段的生成与链接,并通过递归调用自定义的读写函数实现数据之间的转换和存储过程。这种增长方式是一种有计划的比较前提下的动态增长,字符型向量容器的push_back操作应加以避免,而应该使用resize操作完成上述过程。一般地,本实施例中的动态容器,这种新型的数据打包存储结构适用于较大规模的抽象数据二进制转化以及逆向解码,其生存周期控制在较短的范围内,传输且数据读取结束后即进行释放。
本方法中,不同进程间需要进行通信的各种类型通信数据包括当前进程的数据和/或其他多个进程的数据。在实际运用中,如大规模重叠网格隐式并行装配算法,数据的跨进程传输量比网格块对接关系高出若干量级。该数据打包技术不仅应用于当前进程,而且应用于多进程的分散数据的收集与共享。因为单个数组的运载能力有限,所以在该技术使用之前,仅能处理3000万量级重叠网格的几何装配,而采用数据打包技术之后,网格处理能力突破了数亿量级。非重叠网格计算节点到部件壁面的距离时,也会涉及壁面几何信息的收集。因为壁面几何数据可能分布于各个进程。所以,本发明的方法中,进行数据打包的通信数据可能来自当前进程,或者是其他多个进程;打包后的数据,传输简便,通信次数大大减少。
S2、将MPI通信函数封装在所述动态容器中。
在数据打包过程完成之后,将MPI通信函数封装在基本片段中,当整体存储结构发生跨进程传输时,利用MPI通信函数进行通信。
S3、进行MPI通信,将所述动态容器打包后的所述通信数据在不同进程间进行传输。
这个传输过程为每个基本片段内部连续缓冲数据的阻塞或非阻塞的发送-接收操作以及广播操作等等,将动态容器中的多个基本片段按照序列编号依次传输,执行完一个基本片段的发送-接受,或广播等通讯后,再按照所述序列编号依次对所述基本片段进行处理,并基于网格分区块的循环遍历完成不同网格块之间的通信。
传输完成后,获取接收到的所述动态容器中每个基本片段的长度以及基本片段链的元素个数,将所述动态容器中的所述通信数据依次读出,并对所述通信数据进行逆向解码,将所述通信数据转换为打包前的原本数据类型,并释放所述动态容器。
数据传输过程完成之后,为了实现消息的长度匹配,用户仅关注每个基本片段的长度以及基本片段链表的元素个数,而不必关注基本片段内部压缩信息的原始类型,即可将动态容器中的数据依次读出,完成不同类型数据的跨进程传输。
本实施例在NNW-PHengLEI软件平台上,需要进行的并行通信过程包括:①进程内的结构多块网格交界面数据;②节点内任意网格块交界面数据,主要用于OpenMP并行化和结构/非结构耦合计算;③进程间的相邻网格块交界面数据,主要用于MPI通信.④结构网格与非结构网格块间的数据交换.为了实现以上信息交换功能,NNW-PHengLEI将数据打包存储与跨进程传输技术加以应用。
参照图4,其中,网格块grid[iS-1]为i进程中对应任意类型的网格,dc[iS-1]为i进程中的动态容器,其中S的取值为为自然数0,1,2...S;的网格块grid[iT-1]为j进程中对应任意类型的网格,dc[iT-1]为j进程中的动态容器,其中T的取值为自然数0,1,2...T;由于CFD数值模拟基本上都是采用迭代方法进行,因此在每一个迭代步上都需要进行通信。每进行完一步迭代计算后,在求解器的后处理过程中进行MPI通信。整个数据通信过程包括三个步骤,即数据压缩、MPI通信以及数据解码。在数据压缩步骤中,第i和j进程分别将自身拥有的网格块交界面信息压缩到所述动态容器中,目的是将两两进程间需要通信的数据打包,这既能通过封装实现任意类型数据的交换又能减少通信次数。在这种数据交换模式中,将任意类型网格块的交界面数据按照接口标准压缩到所述动态容器中,不同进程间只进行所述动态容器数据的并行通信,将数据结构隔离在并行通信的底层,从而实现任意类型网格的并行计算兼容性。
参照图5,是采用本发明的方法进行数据打包跨进程传输时,对于32768块网格,2048进程下,是否打包通信的通信次数对比,可见数据打包技术使总的通信次数有量级上的减少。
综上所述,本发明提供的一种应用于CFD高性能计算的数据打包与跨进程传输方法,将不同进程间需要进行传输的数据利用动态容器进行打包,将不同类型的通信数据统一转化成字符型数据,将数据结构隔离在并行通信的底层,实现了任意类型网格的并行计算兼容性,且动态容器的基本片段中的压缩信息不存在间隔,与MPI自带的打包信息传输机制相比,本发明对缓冲区的利用率大幅提升,使用组合基本片段的概念有效规避了单个数组的运载能力的限制,限制了基本片段的标准长度上限也有效避免了缓冲区溢出。
前述本发明基本例及其各进一步选择例可以自由组合以形成多个实施例,均为本发明可采用并要求保护的实施例。以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (8)

1.一种应用于CFD高性能计算的数据跨进程传输方法,其特征在于,包括:
S1、数据打包:创建动态容器,利用memcpy函数将CFD数值模拟中不同进程间需要进行通信的各种类型的通信数据拷贝至所述动态容器中,完成数据打包;
S2、将MPI通信函数封装在所述动态容器中;
S3、进行MPI通信,将所述动态容器打包后的所述通信数据在不同进程间进行传输;
其中,所述动态容器由首尾顺次链接的基本片段构成,每个所述基本片段的核心数据为字符型向量容器;每个所述基本片段对应的标准长度上限为1024000000。
2.根据权利要求1所述的一种应用于CFD高性能计算的数据跨进程传输方法,其特征在于,步骤S1中,所述不同进程间需要进行通信的各种类型的通信数据包括当前进程的数据和/或其他多个进程的数据。
3.根据权利要求1所述的一种应用于CFD高性能计算的数据跨进程传输方法,其特征在于,步骤S1包括:
S11、创建所述基本片段,所述基本片段是字符型向量容器,通过指针记录对所述字符型向量容器内的数据进行读写操作;所述动态容器由若干个所述基本片段利用指针首尾顺次链接而成,且每个所述基本片段有确定的序列编号;所述动态容器初始为单个所述基本片段,后续增加的所述基本片段的个数由需要存储的数据长度确定;
S12、获取不同类型的所述通信数据,并将所述通信数据赋值给每个类型的数据对应的临时数组中;
S13:利用memcpy函数,将所述临时数组中的值拷贝至所述基本片段中,将所述通信数据中不同类型数据转化为单一的字符型数据;
S14:在对所述通信数据进行存储时,统计所述通信数据的长度,并比较所述通信数据的长度与当前基本片段实际长度、新增长度与标准长度上限之间的关系,将所述通信数据顺序写入所述动态容器中;
S15:重复步骤S14的操作,直至所有所述通信数据完整地存储在所述动态容器中,完成数据打包。
4.根据权利要求3所述的一种应用于CFD高性能计算的数据跨进程传输方法,其特征在于,步骤S14中,当所述通信数据的长度与当前基本片段实际长度之和小于或等于标准长度上限时,将所述通信数据直接拷贝至当前基本片段中,并同时记录当前末尾字符的局部指针和全局位置指针。
5.根据权利要求3所述的一种应用于CFD高性能计算的数据跨进程传输方法,其特征在于,步骤S14中,当所述通信数据的长度与当前基本片段实际长度之和大于标准长度上限时,将部分所述通信数据填充至当前基本片段的剩余空间,然后创建新的基本片段,将通信数据的剩余部分填充至新的基本片段中。
6.根据权利要求5所述的一种应用于CFD高性能计算的数据跨进程传输方法,其特征在于,当所述通信数据的长度与当前基本片段实际长度之和大于标准长度上限时,首先记录所述通信数据的剩余长度,通过全局指针的位置与标准长度上限的值做对比,获得需要新创建的基本片段个数,并确定新创建基本片段在动态容器中的序列编号,此时用于记录当前末尾字符的局部位置的指针位于新基本片段的首端,然后将剩余的所述通信数据填充至新的基本片段中。
7.根据权利要求6所述的一种应用于CFD高性能计算的数据跨进程传输方法,其特征在于,步骤S3中,数据进行传输时,将所述动态容器中的多个所述基本片段按照所述序列编号依次传输,执行完一个所述基本片段的发送-接受,或广播通讯后,再按照所述序列编号依次对所述基本片段进行处理,直到数据传输完成。
8.根据权利要求7所述的一种应用于CFD高性能计算的数据跨进程传输方法,其特征在于,还包括,传输完成后,获取接收到的所述动态容器中每个所述基本片段的长度以及所述基本片段的元素个数,将所述动态容器中的所述通信数据依次读出,并对所述通信数据进行逆向解码,将所述通信数据转换为打包前的原本数据类型,并释放所述动态容器。
CN202110707260.2A 2021-06-25 2021-06-25 一种应用于cfd高性能计算的数据跨进程传输方法 Active CN113254241B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110707260.2A CN113254241B (zh) 2021-06-25 2021-06-25 一种应用于cfd高性能计算的数据跨进程传输方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110707260.2A CN113254241B (zh) 2021-06-25 2021-06-25 一种应用于cfd高性能计算的数据跨进程传输方法

Publications (2)

Publication Number Publication Date
CN113254241A CN113254241A (zh) 2021-08-13
CN113254241B true CN113254241B (zh) 2021-09-21

Family

ID=77189631

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110707260.2A Active CN113254241B (zh) 2021-06-25 2021-06-25 一种应用于cfd高性能计算的数据跨进程传输方法

Country Status (1)

Country Link
CN (1) CN113254241B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114338672B (zh) * 2021-12-29 2023-10-27 安天科技集团股份有限公司 数据传输方法及数据传输系统
CN114756355B (zh) * 2022-06-14 2022-10-18 之江实验室 一种计算机操作系统的进程自动快速恢复的方法和装置
CN116225722B (zh) * 2023-05-08 2023-07-14 中国空气动力研究与发展中心计算空气动力研究所 流场变量的通信方法、装置、终端设备及存储介质

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108322307A (zh) * 2017-01-16 2018-07-24 中标软件有限公司 基于内核内存共享的容器间通讯系统及方法
CN109189995A (zh) * 2018-07-16 2019-01-11 哈尔滨理工大学 基于mpi的云存储中数据消冗方法
CN109445953A (zh) * 2018-08-30 2019-03-08 北京大学 一种面向大规模机器学习系统的机器学习模型训练方法
CN109564568A (zh) * 2017-02-13 2019-04-02 赛思研究所 分布式数据集索引
CN110032455A (zh) * 2017-12-21 2019-07-19 布尔股份公司 通过运行时间合作进行高效通信重叠
CN110543663A (zh) * 2019-07-22 2019-12-06 西安交通大学 一种面向粗粒度MPI+OpenMP混合并行的结构网格区域划分方法
CN110795219A (zh) * 2019-10-24 2020-02-14 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 适用于多种计算框架的资源调度方法及系统
CN111932663A (zh) * 2020-08-11 2020-11-13 中国空气动力研究与发展中心计算空气动力研究所 基于多层级非对称通信管理的并行绘制方法
CN112764922A (zh) * 2021-01-12 2021-05-07 中国人民解放军国防科技大学 基于负载均衡的并行序列比对方法、装置和计算机设备

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10346454B2 (en) * 2017-04-17 2019-07-09 Mammoth Medical, Llc System and method for automated multi-dimensional network management
US10956628B2 (en) * 2017-04-27 2021-03-23 Autodesk, Inc. High performance computing on a public grid
CN112540936A (zh) * 2019-09-23 2021-03-23 无锡江南计算技术研究所 面向异构众核架构的离散访存读写方法

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108322307A (zh) * 2017-01-16 2018-07-24 中标软件有限公司 基于内核内存共享的容器间通讯系统及方法
CN109564568A (zh) * 2017-02-13 2019-04-02 赛思研究所 分布式数据集索引
CN110032455A (zh) * 2017-12-21 2019-07-19 布尔股份公司 通过运行时间合作进行高效通信重叠
CN109189995A (zh) * 2018-07-16 2019-01-11 哈尔滨理工大学 基于mpi的云存储中数据消冗方法
CN109445953A (zh) * 2018-08-30 2019-03-08 北京大学 一种面向大规模机器学习系统的机器学习模型训练方法
CN110543663A (zh) * 2019-07-22 2019-12-06 西安交通大学 一种面向粗粒度MPI+OpenMP混合并行的结构网格区域划分方法
CN110795219A (zh) * 2019-10-24 2020-02-14 华东计算技术研究所(中国电子科技集团公司第三十二研究所) 适用于多种计算框架的资源调度方法及系统
CN111932663A (zh) * 2020-08-11 2020-11-13 中国空气动力研究与发展中心计算空气动力研究所 基于多层级非对称通信管理的并行绘制方法
CN112764922A (zh) * 2021-01-12 2021-05-07 中国人民解放军国防科技大学 基于负载均衡的并行序列比对方法、装置和计算机设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"cfdmpi并行程序设计初步";李新亮;《百度文库》;20200620;第1-55页 *
"Development of a Parallel Explicit Finite-Volume Euler Equation Solver using the Immersed Boundary Method with Hybrid MPI-CUDA Paradigm";F.A.Kuo;《JOURNAL OF MECHANICS》;20191031;第36卷(第1期);第1-16页 *
"基于GPU并行算法的海洋平台及船舶结构冰荷载的离散元分析";狄少丞;《中国博士学位论文全文数据库 工程科技II辑》;20170315(第03期);第C036-1页 *

Also Published As

Publication number Publication date
CN113254241A (zh) 2021-08-13

Similar Documents

Publication Publication Date Title
CN113254241B (zh) 一种应用于cfd高性能计算的数据跨进程传输方法
Lemire et al. Consistently faster and smaller compressed bitmaps with roaring
CN102457283B (zh) 一种数据压缩、解压缩方法及设备
Deavours et al. An efficient disk-based tool for solving large Markov models
Hogg et al. A sparse symmetric indefinite direct solver for GPU architectures
CN106570113B (zh) 一种海量矢量切片数据云存储方法及系统
EP4283475A2 (en) Moving data in a memory and command for memory control
JP4673299B2 (ja) 情報処理方法及び情報処理システム
Wan et al. Data management challenges of exascale scientific simulations: A case study with the Gyrokinetic Toroidal Code and ADIOS
CN102207964B (zh) 实时海量数据索引建立方法及系统
Onai et al. Architecture of a reduction-based parallel inference machine: PIM-R
CN116128701A (zh) 一种用于执行图计算任务的装置、图计算方法
Unger et al. An external state management system for optimistic parallel simulation
Roussel et al. PDI, an approach to decouple I/O concerns from high-performance simulation codes
Poyraz et al. Application-specific I/O optimizations on petascale supercomputers
Jin et al. Adaptive io system (adios)
Klinkovský et al. Configurable Open-source Data Structure for Distributed Conforming Unstructured Homogeneous Meshes with GPU Support
Bicer et al. Improving I/O throughput of scientific applications using transparent parallel compression
Aarnio Parallel data processing with MapReduce
CN107346331A (zh) 一种基于Spark云计算平台的并行序列模式挖掘方法
CN107169098B (zh) 数据搬运方法、数据搬运装置及电子设备
CN117494509B (zh) 一种基于多物理场的块结构自适应网格细化方法
Zhou et al. Mermaid: Integrating vertex-centric with edge-centric for real-world graph processing
Casanı et al. Performance improvements of eventindex distributed system at CERN
US20240134929A1 (en) Column-partitioned sparse matrix multiplication

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant