学习笔记
-> MPI初始化: 通过 MPI_Init 函数进入MPI环境并完成所有的初始化工作。
int MPI_Init(int *argc, char *** argv)
->MPI结束: 通过 MPI_Finalize 函数从 MPI 环境中退出。
int MPI_Finalize(void)
->获取进程编号: 调用 MPI_Comm_rank 函数获得当前进程在指定通信域中的编号,将自身与其他程序区分。
int MPI_Comm_rank(MPI_Comm comm, int *rank)
-> 获取指定通信域的进程数: 调用 MPI_Comm_size 函数获取指定通信域的进程个数,确定自身完成任务比例。
int MPI_Comm_size( MPI_Comm comm, int *size)
->消息发送: MPI_Send 函数用于发送一个消息到目标进程。
int MPI_Send(void *buf, int count, MPI_Datatype datatype, int dest, int tag, MPI_Comm comm)
->消息接受: MPI_Recv 函数用于从指定进程接收一个消息。
int MPI_Recv(void *buf, int count, MPI_Datatype datatype, int source, int tag, MPI_Comm comm, MPI_Status *status)
例子:
#include "mpi.h" /*MPI 头函数,提供了MPI函数和数据类型定义*/
int main(int argc, char ** argv)
{
int rank,size,tag=1;
int senddata, recvdata;
MPI_Status status;
MPI_Init(&argc, &argv); /*MPI 初始函数*/
MPI_Comm_rank(MPI_COMM_WORLD, &rank); /*该进程编号*/
MPI_Comm_size(MPI_COMM_WORLD, &size); /*总进程数目*/
if(rank==0){
senddata=9999;
MPI_Send(&senddata,1,MPI_INT, 1, tag, MPI_COMM_WORLD); /*发送数据到进程1*/
}
if ( rank==1){
MPI_Recv(&recvdata,1,MPI_INT,0,tag, MPI_COMM_WORLD, &status); /*从进程0接收数据*/
}
MPI_Finalize(); /*MPI结束函数*/
return 0;
}
学习感想
6个基本函数,考虑到的是 开始、结束、进程号、进程数、发送、接收。
程序的结构:初始化,获取进程号,进程数,发送/接收操作,结束。
浙公网安备 33010602011771号