产品介绍
概念介绍
MPI(Message Passing Interface)是支持多语言编程的并行计算通讯应用接口。它基于Open MPI,结合Open UCG P2P点对点通讯框架开发,专为集合通讯的UCG COLL、UCG优化框架,并在该框架中实现了集合操作加速算法。具有高性能、大规模性和可移植性,以支持制造、气象、政府HPC场景的解决方案,其长远意义在于构建以鲲鹏服务器为硬件基础的高性能计算生态。
价值
MPI集合通信函数包罗万象,仅MPI 3.1标准中定义的集合通信函数就达30多种。在众多集合通信操作函数中,Allreduce、Bcast、Barrier、Allgatherv的阻塞与非阻塞接口和Scatterv的非阻塞接口地位突出,调用占比较高,而在诸多应用中,MPI集合操作多是小包通信。
功能
Hyper MPI是基于Open MPI,结合Open UCG P2P点对点通讯框架,新增了UCG COLL集合通讯优化框架,并在该框架实现了优化算法加速库,构建MPI的集合通信操作性能竞争力。本MPI产品化版本支持的集合通讯操作主要包括:
- Allreduce集合操作。
- 阻塞接口函数原型
int MPI_Allreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
- 非阻塞接口函数原型
int MPI_Iallreduce(const void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm, MPI_Request *request)
- 函数简介
Allreduce是MPI组规约函数。Allreduce将各个独立进程中的send buffer进行某种数学(如:加法或者乘法)或者逻辑(如:求逻辑与、逻辑或)运算,然后将结果同步到通信域内所有进程的receive buffer中。
- 阻塞接口函数原型
- Bcast集合操作。
- Barrier集合操作。
- Allgatherv集合操作。
- 阻塞接口函数原型
int MPI_Allgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, MPI_Comm comm)
- 非阻塞接口函数原型
int MPI_Iallgatherv(const void *sendbuf, int sendcount, MPI_Datatype sendtype, void *recvbuf, const int recvcounts[], const int displs[], MPI_Datatype recvtype, MPI_Comm comm, MPI_Request *request)
- 函数简介
Allgatherv是MPI数据收集函数,其作用是:收集该通讯域中每个进程可变的数据,并将收集的数据传送给该通讯域中的所有进程。
- 阻塞接口函数原型
- Scatterv集合操作。
- 阻塞接口函数原型
int MPI_Scatterv(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm)
- 非阻塞接口函数原型
int MPI_Iscatterv(const void *sendbuf, const int sendcounts[], const int displs[], MPI_Datatype sendtype, void *recvbuf, int recvcount, MPI_Datatype recvtype, int root, MPI_Comm comm, MPI_Request *request)
- 函数简介
- 阻塞接口函数原型
Hyper MPI集合通讯算法支持最大发送数据包长度为232字节,超过232字节后提示错误信息并退出,此时需手动切换至Open MPI原生算法。
父主题: 产品描述