第六讲 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平台
运行MPI程序
MPI初始化和结束处理
MPI_Init
- 令MPI进行必要的初始化工作
MPI_Finalize
- 告诉MPI程序已结束,进行清理工作
- int MPI_Finalize(void)
MPI程序基本结构
MPI消息传递
- 消息传递最基本的函数:
- send
- receive
- send
需要明确
- 如何描述数据
- MPI强数据类型
- 在传输之前必须指明数据是什么类型、数据个数等信息
- 如何标识进程
- rank
- 接收方如何识别信息- 操作完成意味着什么
一些基本概念
这块看pppt