特性支持与功能回退说明

Hyper MPI中并非每一个算法都支持所有的场景,以下几种场景属于部分算法支持。

场景一:节点进程不均衡(即PPN不均衡)

使用mpirun命令提交任务不指定PPN或者使用rankfile等情况下,可能出现节点进程不均衡的场景,Hyper MPI中仅MPI_Allreduce算法1、2、4,MPI_Bcast算法2,MPI_Barrier算法1、2,MPI_Alltoallv算法1支持节点进程不均衡场景,当指定其他算法时,将自动回退至支持的算法。

场景二:socket进程不均衡

所有的Socket-aware算法都要求socket进程数均衡;指定Socket-aware算法且socket进程数不均衡时,会回退到Node-aware算法。

场景三:非对易操作

MPI标准支持用户在MPI_Allreduce内进行自定义数学操作,即不局限于求和(MPI_SUM)、乘积(MPI_PROC)等MPI内置的数学操作;用户在自定义数学操作时会出现操作本身不对弈的情况,如矩阵乘法。MPI_Allreduce算法1和算法4支持此类操作。

当用户指定算法不是算法1或算法4时,Hyper MPI会根据数据包大小回退成算法1(中小包)或者算法4(大包)。

场景四:超大数据类型

MPI支持自定义数据类型,用户自定义的数据类型过长有可能导致出错。MPI_Allreduce算法1和算法4支持此类操作。

场景五:MPI_Allreduce算法8,socket内仅有一个进程

由于算法8实现的特殊性,当指定算法8且socket内仅有一个进程时,会被回退成算法7。

场景六:使用拓扑感知算法,但感知单元内进程号不连续

只有非拓扑算法、MPI_Allreduce算法2、MPI_Bcast算法2、MPI_Alltoallv算法1支持此场景;当指定算法不在这几个算法之列时,会自动回退算法。

场景七:用户指定MPI_Allreduce算法12、13和14

场景八:用户指定MPI_Alltoallv算法1

算法1不支持非连续及超大MPI数据类型,在该两种场景下,将回退至Open MPI默认算法。

场景十:用户指定MPI_Alltoallv算法2

算法2不支持sdispls(发送偏移量)与rdispls (接收偏移量)非单调递增场景,将回退至算法1。