HMPI基础知识简介
发表于 2023/04/26
0
尊敬的鲲鹏开发者你好,为了使鲲鹏开发者能够更好的使用HMPI,使能开发者高效创新,帮助开发者更便捷地进行鲲鹏开发,您可以通过本文的学习来完成鲲鹏HMPI的快速入门。
本文主要介绍了以下知识:
(1)鲲鹏HMPI的概念及软件架构
(2)如何编译安装HMPI
(3)如何生成HMPI可执行测试程序及HMPI使用
HMPI简介
在探索HMPI的使用之前,我们先来了解一下什么是HMPI,掌握了HMPI的概念及具体内容后,后续的工具使用方法的学习会更加轻松。
1. 什么是HMPI
华为高性能通信库(Hyper MPI)是支持多语言编程的并行计算通讯应用接口。它基于Open MPI,结合Open UCX P2P点对点通讯框架开发,专为集合通讯的UCX COLL、UCG优化框架,并在该框架中实现了优化集合操作加速算法,构建MPI的集合通信操作性能竞争力。具有高性能、大规模性和可移植性,以支持制造、气象、政府HPC场景的解决方案,其长远意义在于构建以鲲鹏服务器为硬件基础的高性能计算生态。
HMPI产品化版本支持的优化集合通讯操作主要包括:
MPI_Allreduce集合操作:
(1)函数原型
int MPI_Allreduce(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
(2)函数简介
MPI_Allreduce是MPI组规约函数。MPI_Allreduce将各个独立进程中的send buffer进行某种数学(如:加法或者乘法)或者逻辑(如:求逻辑与、逻辑或)运算,然后将结果同步到通信域内所有进程的receive buffer中。
MPI_Bcast集合操作:
(1)函数原型
int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm)
(2)函数简介
MPI_Bcast是MPI广播操作函数,root进程将buffer中的信息发送给通讯域内其余进程,使得所有进程获取相同的信息。
MPI_Barrier集合操作:
(1)函数原型
int MPI_Barrier(MPI_Comm comm)
(2)函数简介
MPI_Barrier是MPI同步函数,其作用是:该通讯域中全部进程进行同步操作,即保证进程调用函数后具有良好的同步性。
2. HMPI的软件架构
Hyper MPI基于Open MPI的MCA框架和Open UCX的分层结构,进行自定义组件新增和优化。
与Open MPI相似之处:Hyper MPI包含两个软件层:UCX(Unified Communication X)和OMPI层,即HUCX和Hyper MPI。
与Open MPI不同之处:Open MPI采用P2P方式,Hyper MPI在UCX框架基础上增加集合通讯模块(UCG模块)。该模块南向接口直接依赖于UCT传输层,和协议层UCP相互并列;北向接口支持OMPI的MCA框架中的集合操作组件。
Hyper MPI软件架构中各模块说明:
软件层 | 模块名称 | 用途 |
---|---|---|
Hyper MPI | P2P | MCA框架中的点对点集合操作组件 |
Hyper MPI | COLL | MCA框架中的华为集合操作组件 |
HUCX | UCP | UCP协议层,协议层API,基于UCT构建通用协议的实现,包括MPI、OpenSHMEM、PGAS等 |
HUCX | UCG | 集合通讯模块,UCX中的新增集合通讯组件,包含UCG集合通讯框架和UCG算法加速组件 |
HUCX | UCT | 通讯传输模块,基于硬件的底层API,提供基本的网络收发操作 |
HUCX | UCS | 通用服务与工具,包含一系列数据结构、算法以及通用的系统工具 |
上面就是HMPI的介绍以及软件架构,接下来我们学习如何搭建安装HMPI。