Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- ============================================================================
- Name : Lab4.c
- Author : Gabi
- Version :
- Copyright : Your copyright notice
- Description : Hello MPI World in C
- ============================================================================
- */
- #include <stdio.h>
- #include <string.h>
- #include "mpi.h"
- int main(int argc, char* argv[]){
- int my_rank; /* rank of process */
- int p; /* number of processes */
- int tag=0; /* tag for messages */
- MPI_Status status ; /* return status for receive */
- char mes[100];
- int dim;
- int id;
- int s_id;
- int id_virtual;
- int masca;
- int k;
- int destinatie_virtuala;
- int sursa_virtuala;
- MPI_Init(&argc, &argv); /* start up MPI */
- MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); /* find out process rank */
- MPI_Comm_size(MPI_COMM_WORLD, &p); /* find out number of processes */
- id_virtual = id ^ s_id;
- masca = (2<<dim)-1;
- for(k=dim-1; k>=0; k--)
- {
- masca = masca ^ (2<<k);
- if((id_virtual & masca) ==0)
- {
- if((id_virtual & (2<<k)) == 0)
- {
- destinatie_virtuala = id_virtual ^ (2<<k);
- sprintf(mes, "Hello MPI World from process %d!", my_rank);
- MPI_Send(mes, strlen(mes)+1, MPI_CHAR, destinatie_virtuala, tag, MPI_COMM_WORLD);
- }
- else
- {
- sursa_virtuala = id_virtual ^ (2<<k);
- MPI_Recv(mes, 100, MPI_CHAR, sursa_virtuala, tag, MPI_COMM_WORLD, &status);
- printf("%s\n",mes);
- }
- }
- }
- MPI_Finalize(); /* shut down MPI */
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement