й1.cpp

来自「10 Mpi source examples for begginers」· C++ 代码 · 共 40 行

CPP
40
字号
#include <mpi.h>
#include <stdio.h>
#define NAME 128
struct {
		int rank;
		char host[NAME];
	} s;

int main(int argc, char** argv)
{
	MPI_Datatype MPIStruct;
	MPI_Init(&argc, &argv);
	int n;
	MPI_Comm_rank(MPI_COMM_WORLD, &(s.rank));
	MPI_Get_processor_name(s.host, &n);	
	int block_lengths[2]={1,NAME};
	MPI_Aint ind[2]={0, 4}; 
	MPI_Datatype oldtypes[2]={MPI_INT, MPI_CHAR};
	MPI_Type_struct(2, block_lengths, ind, oldtypes, &MPIStruct);
	MPI_Type_commit(&MPIStruct);
	int size;
	MPI_Comm_size(MPI_COMM_WORLD, &size);
	MPI_Request request;
	MPI_Isend(&s, 1, MPIStruct, 0, 0, MPI_COMM_WORLD, &request);
	//printf("current rank: %d\n", s.rank);
	if(s.rank==0)
	{	
		MPI_Status status;
		for(int i=0; i<size; i++)
		{
			MPI_Recv(&s, 1, MPIStruct, i, 0, MPI_COMM_WORLD, &status);
			printf("current rank: %d, HostName: %s\n", s.rank, s.host);
		}
	}

	
	MPI_Type_free(&MPIStruct);
	MPI_Finalize();
}

⌨️ 快捷键说明

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