1.一种应用于cfd高性能计算的数据跨进程传输方法,其特征在于,包括:
s1、数据打包:创建动态容器,将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高性能计算的数据跨进程传输方法,其特征在于,步骤s3中,数据进行传输时,将所述动态容器中的多个所述基本片段按照所述序列编号依次传输,执行完一个所述基本片段的发送-接受,或广播通讯后,再按照所述序列编号依次对所述基本片段进行处理,直到数据传输完成。
7.根据权利要求6所述的一种应用于cfd高性能计算的数据跨进程传输方法,其特征在于,还包括,传输完成后,获取接收到的所述动态容器中每个所述基本片段的长度以及所述基本片段的元素个数,将所述动态容器中的所述通信数据依次读出,并对所述通信数据进行逆向解码,将所述通信数据转换为打包前的原本数据类型,并释放所述动态容器。