OpenMPI 2018 程序啪啪啪
OpenMPI
Concept基本概念
- 单元Unit
- Process进程(MPI 程序中一个独立参与通信的个体)
- Communicator
- Rank
- Process Group进程组(一个 MPI 程序中由部分或全部进程构成的一个有序集合)
- Rank 进程号(用于在该组中标识该进程 )
- MPI_PROC_NULL
- Process进程(MPI 程序中一个独立参与通信的个体)
- 通信器Communicator
- 域内通信器 (intra-communicator)
- 域间通信器 (inter-communicator)
- Property
- MPI_COMM_WORLD
- MPI_COMM_SELF
- Communication通信
- Message
Structure 基本结构
- 引入头文件
#include "mpi.h"
int myrank, nprocs;
- 初始化,必须首先调用
MPI_Init(&argc, &argv);
- 获取指定通信器中进程的数目
MPI_Comm_size(MPI_COMM_WORLD, &nprocs);
- 获取在指定通信器中的进程号
MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
- 退出MPI系统
MPI_Finalize();
环境信息
- MPI_Get_processor_name(processor_name,&namelen); 处理器名称
- char processor_name[MPI_MAX_PROCESSOR_NAME];
- int namelen;
- startwtime = MPI_Wtime(); 获取墙上时间
- double startwtime;
Datatype 原始数据类型(MPI 系统中数据的发送与接收操作都必须指定数据类型 )
- MPI_INT
- MPI_FLOAT
- MPI_DOUBLE
- MPI_SHORT
- MPI_LONG
- MPI_CHAR
- MPI_UNSIGNED_CHAR
- MPI_UNSIGNED_SHORT
- MPI_UNSIGNED
- MPI_UNSIGNED_LONG
- MPI_LONG_DOUBLE
- MPI_BYTE
- MPI_PACKED
Communication通信
- P2P点对点
- blocking阻塞
- MPI_Send
- MPI_Recv
- non-blocking非阻塞
- MPI_Isend
- MPI_Irecv
- Check Status
- MPI_Wait
- MPI_Test
- Mode模式
- Standard标准
- MPI_Send
- buffered缓存
- MPI_Bsend
- synchronous 同步
- MPI_Ssend
- ready 就绪
- MPI_Rsend
- Standard标准
- blocking阻塞
- 聚合通信与同步
- 障碍同步(MPI_Barrier)
- 障碍同步函数 MPI_Barrier 用于一个通信器中所有进程的同步。调用该函数时进程将处于等待状态,直到通信器中所有进程都调用了该函数后才继续执行。
- 广播(MPI_Bcast)
- 一个进程 (称为根进程) 同时发送同样的消息给通信器中的所有其他进程。
- 数据收集(MPI_Gather)
- 数据散发(MPI_Scatter)
- 数据转置(MPI_Alltoall)
- 归约(MPI_Reduce)
- 障碍同步(MPI_Barrier)
tags: MultiCPU
文章目录 |
创建@
2011-02-26
最后修改@
2013-05-04