SHARE
TWEET

Untitled

a guest Oct 23rd, 2019 76 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /*
  2.  ============================================================================
  3.  Name        : Lab4.c
  4.  Author      : Gabi
  5.  Version     :
  6.  Copyright   : Your copyright notice
  7.  Description : Hello MPI World in C
  8.  ============================================================================
  9.  */
  10. #include <stdio.h>
  11. #include <string.h>
  12. #include "mpi.h"
  13.  
  14. int main(int argc, char* argv[]){
  15.     int  my_rank; /* rank of process */
  16.     int  p;       /* number of processes */
  17.     int tag=0;    /* tag for messages */
  18.     MPI_Status status ;   /* return status for receive */
  19.     char mes[100];
  20.     int dim;
  21.     int id;
  22.     int s_id;
  23.     int id_virtual;
  24.     int masca;
  25.     int k;
  26.     int destinatie_virtuala;
  27.     int sursa_virtuala;
  28.    
  29.     MPI_Init(&argc, &argv); /* start up MPI */
  30.     MPI_Comm_rank(MPI_COMM_WORLD, &my_rank); /* find out process rank */
  31.     MPI_Comm_size(MPI_COMM_WORLD, &p); /* find out number of processes */
  32.    
  33.     id_virtual = id ^ s_id;
  34.     masca = (2<<dim)-1;
  35.  
  36.     for(k=dim-1; k>=0; k--)
  37.     {
  38.         masca = masca ^ (2<<k);
  39.         if((id_virtual & masca) ==0)
  40.         {
  41.             if((id_virtual & (2<<k)) == 0)
  42.             {
  43.                 destinatie_virtuala = id_virtual ^ (2<<k);
  44.                 sprintf(mes, "Hello MPI World from process %d!", my_rank);
  45.                 MPI_Send(mes, strlen(mes)+1, MPI_CHAR, destinatie_virtuala, tag, MPI_COMM_WORLD);
  46.             }
  47.             else
  48.             {
  49.                 sursa_virtuala = id_virtual ^ (2<<k);
  50.                 MPI_Recv(mes, 100, MPI_CHAR, sursa_virtuala, tag, MPI_COMM_WORLD, &status);
  51.                 printf("%s\n",mes);
  52.             }
  53.         }
  54.     }
  55.  
  56.     MPI_Finalize(); /* shut down MPI */
  57.    
  58.     return 0;
  59. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top