Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <mpi.h>
- #include <iostream>
- using namespace std;
- /*
- void Circle(int rank, int size)
- {
- if (rank == 0)
- {
- MPI_Status status;
- int msg = 777;
- MPI_Send(&msg, 1, MPI_INT, rank + 1, 1, MPI_COMM_WORLD);
- printf("Processor #%d send message %d to processor #%d\n", rank, msg, rank + 1);
- MPI_Recv(&msg, 1, MPI_INT, size - 1, 1, MPI_COMM_WORLD, &status);
- printf("Processor #%d got message %d from processor #%d\n", rank, msg, size - 1);
- msg++;
- MPI_Send(&msg, 1, MPI_INT, rank + 1, 1, MPI_COMM_WORLD);
- printf("Processor #%d send message %d to processor #%d\n", rank, msg, rank + 1);
- MPI_Recv(&msg, 1, MPI_INT, size - 1, 1, MPI_COMM_WORLD, &status);
- printf("Processor #%d got message %d from processor #%d\n", rank, msg, size - 1);
- }
- if (rank == size - 1)
- {
- MPI_Status status;
- int msg = 0;
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &status);
- printf("Processor #%d got message %d from processor #%d\n", rank, msg, rank - 1);
- msg++;
- MPI_Send(&msg, 1, MPI_INT, 0, 1, MPI_COMM_WORLD);
- printf("Processor #%d send message %d to processor #%d\n", rank, msg, 0);
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &status);
- printf("Processor #%d got message %d from processor #%d\n", rank, msg, rank - 1);
- msg++;
- MPI_Send(&msg, 1, MPI_INT, 0, 1, MPI_COMM_WORLD);
- printf("Processor #%d send message %d to processor #%d\n", rank, msg, 0);
- }
- if (rank > 0 && rank < size - 1)
- {
- MPI_Status status;
- int msg = 0;
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &status);
- printf("Processor #%d got message %d from processor #%d\n", rank, msg, rank - 1);
- MPI_Send(&msg, 1, MPI_INT, rank + 1, 1, MPI_COMM_WORLD);
- printf("Processor #%d send message %d to processor #%d\n", rank, msg, rank + 1);
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &status);
- printf("Processor #%d got message %d from processor #%d\n", rank, msg, rank - 1);
- MPI_Send(&msg, 1, MPI_INT, rank + 1, 1, MPI_COMM_WORLD);
- printf("Processor #%d send message %d to processor #%d\n", rank, msg, rank + 1);
- }
- }*/
- int k =0;
- void Circle(int rank, int size){
- k++;
- if(rank==0){
- int msg = 123;
- MPI_Status st;
- MPI_Send(&msg, 1, MPI_INT, rank + 1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << " sends " << msg << "to proc " << rank +1 << "\n";
- MPI_Recv(&msg, 1, MPI_INT, size -1, 1, MPI_COMM_WORLD, &st);
- cout << "Process "<< rank << "got " << msg << "with proc " << "5" << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank + 1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << " sends " << msg << "to proc " << rank +1 << "\n";
- }
- if(rank>0 && rank<(size-1)){
- int msg =0;
- MPI_Status st;
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank + 1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank + 1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- }
- /*if(rank==1){
- int msg =0;
- MPI_Status st;
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank + 1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank + 1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- }
- if(rank==2){
- int msg =0;
- MPI_Status st;
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank+1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank + 1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- }
- if(rank==3){
- int msg =0;
- MPI_Status st;
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank+1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank + 1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- }
- if(rank==4){
- int msg =0;
- MPI_Status st;
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank+1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- MPI_Send(&msg, 1, MPI_INT, rank + 1 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- }*/
- if(rank==size -1){
- int msg =0;
- MPI_Status st;
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- // if(k<2){
- MPI_Send(&msg, 1, MPI_INT, 0 , 1, MPI_COMM_WORLD);
- cout << "Process "<< rank << "sends " << msg << "to proc " << rank+1 << "\n";
- //}
- MPI_Recv(&msg, 1, MPI_INT, rank - 1, 1, MPI_COMM_WORLD, &st);
- msg++;
- cout << "Process "<< rank << " got " << msg << "with proc " << rank-1 << "\n";
- }
- /*if(rank > 0 && rank < size-1){
- int msg = 0;
- MPI_Status st;
- }*/
- }
- int main(int argc, char *argv[])
- {
- int COUNT=100;
- MPI_Init(&argc, &argv);
- int rank, size;
- MPI_Comm_rank(MPI_COMM_WORLD, &rank);
- MPI_Comm_size(MPI_COMM_WORLD, &size);
- cout << "rank "<< rank << " size is " << size << "\n";
- Circle(rank, size);
- MPI_Finalize();
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement