产品介绍
概念介绍
Message Passing Interface(MPI)是支持多编程语言编程的并行计算通讯应用接口。它基于Open MPI,结合Open UCX P2P点对点通讯框架开发,专为集合通讯的UCX COLL、UCG优化框架,并在该框架中实现了优化算法加速库。具有高性能、大规模性和可移植性,以支持制造、气象、中小超算场景的解决方案,其长远意义在于构建以鲲鹏服务器为硬件基础的高性能计算生态。
价值
MPI集合通信函数包罗万象,仅MPI 3.1标准中定义的集合通信函数就达30多种。在众多集合通信操作函数中,MPI_Allreduce,MPI_Bcast和MPI_Barrier地位突出,调用占比较高,而在诸多应用中,MPI集合操作多是小包通信。
- 性价比最优
Hyper MPI当前针对以上三种集合通讯函数做了算法和拓扑感知层面的优化,以保证其在相同组网环境下MPI_Bcast小包情况下性能全面超越友商,MPI_Allreduce小包情况下性能接近友商。
- 构筑自由生态
业界中公认性能最优的MPI实现是intel公司的Intel MPI,但由于硬件的依赖性,Intel MPI只能使能于以x86芯片为核心的服务器和集群上;Hyper MPI则不仅可以在x86服务器上使能,而且可以在以ARM芯片为核心的服务器和集群上发挥作用。相比于x86服务器,ARM服务器具有单节点核数多、指令集简单、耗能低、价格实惠等特点,因此这有利于构建以ARM芯片为硬件核心的计算生态。
功能
Hyper MPI是基于Open MPI,结合Open UCX P2P点对点通讯框架,新增了UCX COLL集合通讯优化框架,并在该框架实现了优化算法加速库,构建MPI的集合通信操作性能竞争力。本MPI产品化版本支持的集合通讯操作主要包括:
- AllReduce集合操作。
函数原型:int MPI_Allreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
MPI_Allreduce是MPI组规约函数。Allreduce将各个独立进程中的send buffer进行某种数学的(如:加法或者乘法)或者逻辑的(如:求逻辑与、逻辑或)运算,然后将结果同步到通信域内所有进程的receive buffer中。
- Bcast集合操作。
函数原型:int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm)
MPI_Bast是MPI广播操作函数,root进程将buffer中的信息发送给通讯域内其余进程,使得所有进程获取相同的信息。
- Barrier集合操作。
函数原型:int MPI_Barrier(MPI_Comm comm)
MPI_Barrier是MPI同步函数,其作用是:该通讯域中全部进程进行同步操作,即保证进程调用函数后具有良好的同步性。
Hyper MPI集合通讯算法支持最大发送数据包长度为2^32字节,超过2^32字节后提示错误信息并退出。对于超过2^32字节的情况,用户需手动切换至Open MPI原生算法。