非连续数据网络通信实现方法和性能分析
发布时间:2021-06-08 15:06
非连续数据通信是指发送端将位于不同地址的多块数据传输到接收端的多个非连续地址.这种通信模式在科学计算应用中十分常见,如求解计算、FFT计算、流体力学模拟等应用均涉及矩阵的转置传输,多维矩阵的子矩阵传输,非结构化数据访问等非连续数据通信.所以,非连续数据的通信性能对众多科学计算应用有重要的影响.目前,有多种实现非连续数据通信的卸载或者非卸载的方法,但是迄今没有工作在同一平台对主流的非连续数据通信实现方法进行评测和分析,也没有工作对每一种实现方式适用的情况进行总结.本文首先总结了目前非连续数据通信的实现方式,然后,本文使用已有的测试集和自己设计的测试集对不同方式的非连续数据通信性能进行了详细的对比测试,细粒度地分析了在不同数据分布的情况下数据拷贝和RDMA通信的开销,尤其对基于RDMA sglist(scatter-gather list)和UMR(User-mode Memory Registration)功能的卸载性能进行了分析,并总结了各种非连续数据通信方式的适用情况和存在的问题.最后,本文通过实验验证了分析结果的正确性,并对于该分析结果相关的技术提出了优化的方...
【文章来源】:计算机学报. 2020,43(06)北大核心EICSCD
【文章页数】:16 页
【部分图文】:
人工打包拆包非连续数据通信示意图
MPI提供了一种用户可以自定义衍生数据类型(Derived Data Type,DDT)的机制,图2为OpenMPI中DDT涉及到的层次图,用户使用MPI_Type_vector、MPI_Type_indexed、MPI_Type_struct等函数接口传入对应的非连续数据分布描述(count,length,stride,old datatype)和要创建的自定义类型名newtype,可以分别创建符合vector、index、struct等数据分布的新数据类型———newtype,在调用MPI_Type_Commit(newtype)之后,就可以在以后的程序中,将newtype描述的非连续数据视为连续数据,完成自定义数据类型的数据通信.图3为MPI DDT中常用的类型说明:
(3)struct类型.每个非连续数据块所包含的数据类型和数据长度都可以不一致,非连续数据块之间的间隔可以不一致.以上三种数据分布是MPI DDT中常见的三种基本类型,描述复杂度和使用灵活性逐渐增加.此外MPI还提供了其他的DDT类型和操作,如subarray类型用于描述子数组,MPI_Pack/Unpack函数用于完成人工打包拆包功能等.新创建的数据类型可以直接用于点对点或者集合通信的数据传输,亦可以作为子类型来创建更加复杂的数据类型.
本文编号:3218713
【文章来源】:计算机学报. 2020,43(06)北大核心EICSCD
【文章页数】:16 页
【部分图文】:
人工打包拆包非连续数据通信示意图
MPI提供了一种用户可以自定义衍生数据类型(Derived Data Type,DDT)的机制,图2为OpenMPI中DDT涉及到的层次图,用户使用MPI_Type_vector、MPI_Type_indexed、MPI_Type_struct等函数接口传入对应的非连续数据分布描述(count,length,stride,old datatype)和要创建的自定义类型名newtype,可以分别创建符合vector、index、struct等数据分布的新数据类型———newtype,在调用MPI_Type_Commit(newtype)之后,就可以在以后的程序中,将newtype描述的非连续数据视为连续数据,完成自定义数据类型的数据通信.图3为MPI DDT中常用的类型说明:
(3)struct类型.每个非连续数据块所包含的数据类型和数据长度都可以不一致,非连续数据块之间的间隔可以不一致.以上三种数据分布是MPI DDT中常见的三种基本类型,描述复杂度和使用灵活性逐渐增加.此外MPI还提供了其他的DDT类型和操作,如subarray类型用于描述子数组,MPI_Pack/Unpack函数用于完成人工打包拆包功能等.新创建的数据类型可以直接用于点对点或者集合通信的数据传输,亦可以作为子类型来创建更加复杂的数据类型.
本文编号:3218713
本文链接:https://www.wllwen.com/kejilunwen/xinxigongchenglunwen/3218713.html