鲲鹏社区首页
中文
注册
HMPI基础知识简介

HMPI基础知识简介

HPC

发表于 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。