并行程序设计-第六讲.MPI编程


第六讲 MPI编程

MPI概念和基本原语

消息传递和MPI

  • 消息传递是超级计算机和集群主要的编程模型
  • MPI是什么
    • 消息传递编程模型标准,取代专有库
    • 编程角度
    • 基于单程序多数据流(SPMD)
    • 隔离了独立地址空间
      • 不会有数据竞争,但可能有通信错误

消息传递库特性

  • 所有通信、同步都需调用函数完成

    • 无共享变量
  • 提供如下类别的函数

    • 通信

      • 点对点通信:消息从特性的发送进程(点A)发送到特定的接收进程(点B)
      • 多处理器参与的组通信
        • 移动数据:广播、散发/收集
        • 计算并移动数据:归约、全归约
    • 同步

      • 障碍
      • 无锁机制,因为没有共享变量需要保护
    • 查询

      • 多少个进程?哪个是我?有处于等待状态的信息?

基本接口

  • MPI_Comm_size报告进程数
    • int MPI_Comm_size(MPI_Comm comm,int *size)
  • MPI_Comm_rank报告识别调用进程的rank,值从0~size-1
    • int MPI_Comm_rank(MPI_Comm comm,int *rank)

编译–Linux平台

image-20221121144656484

image-20221121144808070

运行MPI程序

image-20221121145434261

MPI初始化和结束处理

  • MPI_Init

    • 令MPI进行必要的初始化工作
    • image-20221121145615335
  • MPI_Finalize

    • 告诉MPI程序已结束,进行清理工作
    • int MPI_Finalize(void)

MPI程序基本结构

image-20221121145951697

MPI消息传递

image-20221121150207143

  • 消息传递最基本的函数:
    • send
      • image-20221121151703266
    • receive
      • image-20221121151832262
  • 需要明确
    - 如何描述数据
    - MPI强数据类型
    - 在传输之前必须指明数据是什么类型、数据个数等信息
    - 如何标识进程
    - rank
    - 接收方如何识别信息

    • 操作完成意味着什么

一些基本概念

image-20221121152126455

image-20221121152225212

image-20221121152446813

这块看pppt

MPI编程模型


文章作者: zxn
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 zxn !
  目录