中文
注册

产品介绍

概念介绍

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当前针对以上五种集合通讯函数做了算法和拓扑感知层面的优化,以保证其在相同组网环境下Bcast小包性能全面超越友商,Allreduce小包性能接近友商。

  • 构筑自由生态

    目前业界领先的MPI库,均采用闭源发布策略,且不支持鲲鹏生态;Hyper MPI则不仅可以在x86服务器上使能,而且可以在以鲲鹏芯片为核心的服务器和集群上发挥作用。相比于x86服务器,鲲鹏服务器具有单节点核数多、指令集简单、耗能低、价格实惠等特点,因此这有利于构建以鲲鹏芯片为硬件核心的计算生态。

功能

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集合操作。
    • 阻塞接口函数原型
      int MPI_Bcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm)
    • 非阻塞接口函数原型
      int MPI_Ibcast(void *buffer, int count, MPI_Datatype datatype, int root, MPI_Comm comm, MPI_Request *request)
    • 函数简介

      Bcast是MPI广播操作函数,root进程将buffer中的信息发送给通讯域内其余进程,使得所有进程获取相同的信息。

  • Barrier集合操作。
    • 阻塞接口函数原型
      int MPI_Barrier(MPI_Comm comm)
    • 非阻塞接口函数原型
      int MPI_Ibarrier(MPI_Comm comm, MPI_Request *request)
    • 函数简介

      Barrier是MPI同步函数,其作用是:该通讯域中全部进程进行同步操作,即保证进程调用函数后具有良好的同步性。

  • 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)
    • 函数简介

      Scatterv是MPI数据分发函数,其作用是:该通讯域中根进程将不同的数据块分发给该通讯域中不同的进程。

Hyper MPI集合通讯算法支持最大发送数据包长度为232字节,超过232字节后提示错误信息并退出,此时需手动切换至Open MPI原生算法。

搜索结果
找到“0”个结果

当前产品无相关内容

未找到相关内容,请尝试其他搜索词