Révision 80 Pi/C/MPI/Pi_MPI.c

Pi_MPI.c (revision 80)
82 82
#endif
83 83

  
84 84
  MPI_Status Stat;
85
  MPI_Request RequestSend, RequestRecv, RequestSend2, RequestRecv2;
86
     
85

  
87 86
  rc = MPI_Init(&argc,&argv);
88 87
  if (rc != MPI_SUCCESS) {
89 88
    printf ("Error starting MPI program. Terminating.\n");
......
117 116
    for (i=1;i<numtasks;i++) {
118 117
      
119 118
#ifdef LONG
120
      rc = MPI_Isend(&part_iterations, 1, MPI_LONG_LONG, i, tag, 
121
		     MPI_COMM_WORLD,&RequestSend);
119
      rc = MPI_Send(&part_iterations, 1, MPI_LONG_LONG, i, tag, 
120
                    MPI_COMM_WORLD);
122 121
#else
123
      rc = MPI_Isend(&part_iterations, 1, MPI_INT, i, tag, 
124
		     MPI_COMM_WORLD,&RequestSend);
125
#endif      
122
      rc = MPI_Send(&part_iterations, 1, MPI_INT, i, tag, 
123
                    MPI_COMM_WORLD);
124
#endif
126 125
    }
127
    MPI_Wait(&RequestSend, &Stat);
128 126
    
129 127
#ifdef TIME
130 128
    gettimeofday(&start,(struct timezone *)0);
......
147 145
    // Join part of code
148 146
      for (i=1;i<numtasks;i++) {
149 147
#ifdef LONG
150
	rc = MPI_Irecv(&inside[i], 1, MPI_LONG_LONG, i, tag, 
151
		      MPI_COMM_WORLD, &RequestRecv2);
148
	rc = MPI_Recv(&inside[i], 1, MPI_LONG_LONG, i, tag, 
149
		      MPI_COMM_WORLD, &Stat);
152 150
#else
153
	rc = MPI_Irecv(&inside[i], 1, MPI_INT, i, tag, 
154
		      MPI_COMM_WORLD, &RequestRecv2);
151
	rc = MPI_Recv(&inside[i], 1, MPI_INT, i, tag, 
152
		      MPI_COMM_WORLD, &Stat);
155 153
#endif
156
	MPI_Wait(&RequestRecv2, &Stat);
157
	
158 154
	printf("\tReceive %lu inside from rank %i\n",(unsigned long)inside[i],i);
159 155
	insides+=inside[i];
160 156
      }
......
169 165
    {
170 166
      // Receive information from master
171 167
#ifdef LONG
172
      rc = MPI_Irecv(&part_iterations, 1, MPI_LONG_LONG, 0, tag, 
173
                    MPI_COMM_WORLD, &RequestRecv);
168
      rc = MPI_Recv(&part_iterations, 1, MPI_LONG_LONG, 0, tag, 
169
                    MPI_COMM_WORLD, &Stat);
174 170
#else
175
      rc = MPI_Irecv(&part_iterations, 1, MPI_INT, 0, tag, 
176
                    MPI_COMM_WORLD, &RequestRecv);
171
      rc = MPI_Recv(&part_iterations, 1, MPI_INT, 0, tag, 
172
                    MPI_COMM_WORLD, &Stat);
177 173
#endif
178
      MPI_Wait(&RequestRecv, &Stat);
179 174
      
180 175
      printf("\tOn %s with rank %i, receive from master %lld\n",
181 176
             hostname,rank,(long long)part_iterations);
......
200 195
#endif
201 196
      
202 197
#ifdef LONG
203
      rc = MPI_Isend(&part_inside, 1, MPI_LONG_LONG, 0, tag, MPI_COMM_WORLD,&RequestSend2);
198
      rc = MPI_Send(&part_inside, 1, MPI_LONG_LONG, 0, tag, MPI_COMM_WORLD);
204 199
#else
205
      rc = MPI_Isend(&part_inside, 1, MPI_INT, 0, tag, MPI_COMM_WORLD,&RequestSend2);
200
      rc = MPI_Send(&part_inside, 1, MPI_INT, 0, tag, MPI_COMM_WORLD);
206 201
#endif
207
      MPI_Wait(&RequestSend2, &Stat);
208 202

  
209 203
    }
210 204
  

Formats disponibles : Unified diff