Skip to content
Snippets Groups Projects
varysize.cpp 648 B
Newer Older
  • Learn to ignore specific revisions
  • Ondrej Meca's avatar
    Ondrej Meca committed
    
    #include "mpi.h"
    #include <cstring>
    
    int main(int argc, char **argv) {
    	MPI_Init(&argc, &argv);
    
    	int rank, size;
    	MPI_Comm_rank(MPI_COMM_WORLD, &rank);
    	MPI_Comm_size(MPI_COMM_WORLD, &size);
    
    	if (rank == 0) {
    		const char* data = "random size value";
    		MPI_Send(data, strlen(data), MPI_CHAR, 1, 0, MPI_COMM_WORLD);
    	} else {
    		char* data;
    		MPI_Status status;
    		MPI_Probe(0, 0, MPI_COMM_WORLD, &status);
    		int size;
    		MPI_Get_count(&status, MPI_CHAR, &size);
    		data = new char[size];
    		MPI_Recv(data, size, MPI_CHAR, 0, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
    		printf("received: %s\n", data);
    		delete[] data;
    	}
    
    	MPI_Finalize();
    	return 0;
    }