⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 11.cpp

📁 10 Mpi source examples for begginers
💻 CPP
字号:
#include <mpi.h>
#include <stdio.h>
#include <malloc.h>

int main(int argc, char** argv)
{
	MPI_Init(&argc, &argv);

	int size, rank;
	char *ms="Message";
	char rms[8];
	double t1, t2, dev1, dev2;
	int flag=0;
	MPI_Status status;
	MPI_Request request1, request2;	
	MPI_Comm_size(MPI_COMM_WORLD, &size);
	MPI_Comm_rank(MPI_COMM_WORLD, &rank);

//I

	t1 = MPI_Wtime();
	MPI_Isend(ms, 7, MPI_CHAR,size-rank-1, 0, MPI_COMM_WORLD, &request1); 
	MPI_Irecv(&rms, 7, MPI_CHAR, size-rank-1, 0, MPI_COMM_WORLD, &request2);
	while(!flag)
	{
		MPI_Test(&request2, &flag, &status);
	}
	MPI_Barrier(MPI_COMM_WORLD);
	t2 = MPI_Wtime();
	if(rank==0)
	{
		dev1 = t2 - t1;
		printf(" TIME: Isend+Irecv : %f \n", dev1);
	}

	
//SENDRECV
	t1 = MPI_Wtime();
	MPI_Sendrecv(ms, 7, MPI_CHAR,size-rank-1, 0, rms, 7, MPI_CHAR, size-rank-1, 0, MPI_COMM_WORLD, &status); 
	while(!flag)
	{
		MPI_Test(&request2, &flag, &status);
	}
	MPI_Barrier(MPI_COMM_WORLD);
	t2 = MPI_Wtime();	
	if(rank==0)
	{
		dev2 = t2 - t1;
		printf(" TIME: Sendrecv : %f \n\n", dev2);
				if (dev2>dev1)
			{
				printf("\nIsend+Irecv faster then Sendrecv ");
			}
			else
			{
				printf("\nSendrecv faster then Isend+Irecv\n ");
			}
	}
	
	MPI_Finalize();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -