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