Skip to content
Snippets Groups Projects
syncsend.cpp 634 B
Newer Older
  • Learn to ignore specific revisions
  • Ondrej Meca's avatar
    Ondrej Meca committed
    
    #include "mpi.h"
    #include <vector>
    #include <sstream>
    
    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);
    
    	std::stringstream ss(argv[1]);
    	int datasize;
    	ss >> datasize;
    
    	std::vector<double> send(datasize);
    	std::vector<double> recv(datasize);
    
    	int SOURCE = (size + rank - 1) % size;
    	int TARGET = (size + rank + 1) % size;
    	MPI_Send(send.data(), send.size(), MPI_DOUBLE, TARGET, 0, MPI_COMM_WORLD);
    	MPI_Recv(recv.data(), recv.size(), MPI_DOUBLE, SOURCE, 0, MPI_COMM_WORLD, MPI_STATUS_IGNORE);
    
    	MPI_Finalize();
    	return 0;
    }