4 |
|
|
5 |
|
#ifdef IS_MPI |
6 |
|
#include <mpi.h> |
7 |
– |
#include <mpi++.h> |
7 |
|
#include "mpiSimulation.hpp" |
8 |
|
#define TAKE_THIS_TAG_CHAR 1 |
9 |
|
#define TAKE_THIS_TAG_INT 2 |
72 |
|
char tempBuffer[BUFFERSIZE]; |
73 |
|
char writeLine[BUFFERSIZE]; |
74 |
|
|
75 |
< |
int i, j, which_node, done, game_over, which_atom, local_index; |
75 |
> |
int i, j, which_node, done, which_atom, local_index; |
76 |
|
double q[4]; |
77 |
|
DirectionalAtom* dAtom; |
78 |
|
int nAtoms = entry_plug->n_atoms; |
133 |
|
int myStatus; // 1 = wakeup & success; 0 = error; -1 = AllDone |
134 |
|
int haveError; |
135 |
|
|
136 |
< |
MPI::Status istatus; |
136 |
> |
MPI_Status istatus; |
137 |
|
int *AtomToProcMap = mpiSim->getAtomToProcMap(); |
138 |
|
|
139 |
|
// write out header and node 0's coordinates |
205 |
|
} |
206 |
|
else { |
207 |
|
myStatus = 1; |
208 |
< |
MPI::COMM_WORLD.Send(&myStatus, 1, MPI_INT, which_node, |
209 |
< |
TAKE_THIS_TAG_INT); |
210 |
< |
MPI::COMM_WORLD.Send(&i, 1, MPI_INT, which_node, TAKE_THIS_TAG_INT); |
211 |
< |
MPI::COMM_WORLD.Recv(writeLine, BUFFERSIZE, MPI_CHAR, which_node, |
212 |
< |
TAKE_THIS_TAG_CHAR, istatus); |
213 |
< |
MPI::COMM_WORLD.Recv(&myStatus, 1, MPI_INT, which_node, |
214 |
< |
TAKE_THIS_TAG_INT, istatus); |
208 |
> |
MPI_Send(&myStatus, 1, MPI_INT, which_node, |
209 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD); |
210 |
> |
MPI_Send(&i, 1, MPI_INT, which_node, TAKE_THIS_TAG_INT, |
211 |
> |
MPI_COMM_WORLD); |
212 |
> |
MPI_Recv(writeLine, BUFFERSIZE, MPI_CHAR, which_node, |
213 |
> |
TAKE_THIS_TAG_CHAR, MPI_COMM_WORLD, &istatus); |
214 |
> |
MPI_Recv(&myStatus, 1, MPI_INT, which_node, |
215 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus); |
216 |
|
|
217 |
|
if(!myStatus) nodeZeroError(); |
218 |
|
|
225 |
|
// kill everyone off: |
226 |
|
myStatus = -1; |
227 |
|
for (j = 0; j < mpiSim->getNumberProcessors(); j++) { |
228 |
< |
MPI::COMM_WORLD.Send(&myStatus, 1, MPI_INT, j, |
229 |
< |
TAKE_THIS_TAG_INT); |
228 |
> |
MPI_Send(&myStatus, 1, MPI_INT, j, |
229 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD); |
230 |
|
} |
231 |
|
|
232 |
|
} else { |
234 |
|
done = 0; |
235 |
|
while (!done) { |
236 |
|
|
237 |
< |
MPI::COMM_WORLD.Recv(&myStatus, 1, MPI_INT, 0, |
238 |
< |
TAKE_THIS_TAG_INT, istatus); |
237 |
> |
MPI_Recv(&myStatus, 1, MPI_INT, 0, |
238 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus); |
239 |
|
|
240 |
|
if(!myStatus) anonymousNodeDie(); |
241 |
|
|
242 |
|
if(myStatus < 0) break; |
243 |
|
|
244 |
< |
MPI::COMM_WORLD.Recv(&which_atom, 1, MPI_INT, 0, |
245 |
< |
TAKE_THIS_TAG_INT, istatus); |
244 |
> |
MPI_Recv(&which_atom, 1, MPI_INT, 0, |
245 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus); |
246 |
|
|
247 |
|
myStatus = 1; |
248 |
|
local_index=-1; |
292 |
|
strcpy( writeLine, "Hello, I'm an error.\n"); |
293 |
|
} |
294 |
|
|
295 |
< |
MPI::COMM_WORLD.Send(writeLine, BUFFERSIZE, MPI_CHAR, 0, |
296 |
< |
TAKE_THIS_TAG_CHAR); |
297 |
< |
MPI::COMM_WORLD.Send( &myStatus, 1, MPI_INT, 0, |
298 |
< |
TAKE_THIS_TAG_INT); |
295 |
> |
MPI_Send(writeLine, BUFFERSIZE, MPI_CHAR, 0, |
296 |
> |
TAKE_THIS_TAG_CHAR, MPI_COMM_WORLD); |
297 |
> |
MPI_Send( &myStatus, 1, MPI_INT, 0, |
298 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD); |
299 |
|
} |
300 |
|
} |
301 |
|
outFile.flush(); |
404 |
|
int myStatus; // 1 = wakeup & success; 0 = error; -1 = AllDone |
405 |
|
int haveError; |
406 |
|
|
407 |
< |
MPI::Status istatus; |
407 |
> |
MPI_Status istatus; |
408 |
|
int *AtomToProcMap = mpiSim->getAtomToProcMap(); |
409 |
|
|
410 |
|
// write out header and node 0's coordinates |
474 |
|
else { |
475 |
|
|
476 |
|
myStatus = 1; |
477 |
< |
MPI::COMM_WORLD.Send(&myStatus, 1, MPI_INT, which_node, |
478 |
< |
TAKE_THIS_TAG_INT); |
479 |
< |
MPI::COMM_WORLD.Send(&i, 1, MPI_INT, which_node, TAKE_THIS_TAG_INT); |
480 |
< |
MPI::COMM_WORLD.Recv(writeLine, BUFFERSIZE, MPI_CHAR, which_node, |
481 |
< |
TAKE_THIS_TAG_CHAR, istatus); |
482 |
< |
MPI::COMM_WORLD.Recv(&myStatus, 1, MPI_INT, which_node, |
483 |
< |
TAKE_THIS_TAG_INT, istatus); |
477 |
> |
MPI_Send(&myStatus, 1, MPI_INT, which_node, |
478 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD); |
479 |
> |
MPI_Send(&i, 1, MPI_INT, which_node, TAKE_THIS_TAG_INT, |
480 |
> |
MPI_COMM_WORLD); |
481 |
> |
MPI_Recv(writeLine, BUFFERSIZE, MPI_CHAR, which_node, |
482 |
> |
TAKE_THIS_TAG_CHAR, MPI_COMM_WORLD, &istatus); |
483 |
> |
MPI_Recv(&myStatus, 1, MPI_INT, which_node, |
484 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus); |
485 |
|
|
486 |
|
if(!myStatus) nodeZeroError(); |
487 |
|
} |
492 |
|
// kill everyone off: |
493 |
|
myStatus = -1; |
494 |
|
for (j = 0; j < mpiSim->getNumberProcessors(); j++) { |
495 |
< |
MPI::COMM_WORLD.Send(&myStatus, 1, MPI_INT, j, |
496 |
< |
TAKE_THIS_TAG_INT); |
495 |
> |
MPI_Send(&myStatus, 1, MPI_INT, j, |
496 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD); |
497 |
|
} |
498 |
|
|
499 |
|
} else { |
501 |
|
done = 0; |
502 |
|
while (!done) { |
503 |
|
|
504 |
< |
MPI::COMM_WORLD.Recv(&myStatus, 1, MPI_INT, 0, |
505 |
< |
TAKE_THIS_TAG_INT, istatus); |
504 |
> |
MPI_Recv(&myStatus, 1, MPI_INT, 0, |
505 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus); |
506 |
|
|
507 |
|
if(!myStatus) anonymousNodeDie(); |
508 |
|
|
509 |
|
if(myStatus < 0) break; |
510 |
|
|
511 |
< |
MPI::COMM_WORLD.Recv(&which_atom, 1, MPI_INT, 0, |
512 |
< |
TAKE_THIS_TAG_INT, istatus); |
511 |
> |
MPI_Recv(&which_atom, 1, MPI_INT, 0, |
512 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD, &istatus); |
513 |
|
|
514 |
|
myStatus = 1; |
515 |
|
local_index=-1; |
560 |
|
strcpy( writeLine, "Hello, I'm an error.\n"); |
561 |
|
} |
562 |
|
|
563 |
< |
MPI::COMM_WORLD.Send(writeLine, BUFFERSIZE, MPI_CHAR, 0, |
564 |
< |
TAKE_THIS_TAG_CHAR); |
565 |
< |
MPI::COMM_WORLD.Send( &myStatus, 1, MPI_INT, 0, |
566 |
< |
TAKE_THIS_TAG_INT); |
563 |
> |
MPI_Send(writeLine, BUFFERSIZE, MPI_CHAR, 0, |
564 |
> |
TAKE_THIS_TAG_CHAR, MPI_COMM_WORLD); |
565 |
> |
MPI_Send( &myStatus, 1, MPI_INT, 0, |
566 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD); |
567 |
|
} |
568 |
|
} |
569 |
|
finalOut.flush(); |
586 |
|
|
587 |
|
myStatus = 0; |
588 |
|
for (j = 0; j < mpiSim->getNumberProcessors(); j++) { |
589 |
< |
MPI::COMM_WORLD.Send( &myStatus, 1, MPI_INT, j, |
590 |
< |
TAKE_THIS_TAG_INT); |
589 |
> |
MPI_Send( &myStatus, 1, MPI_INT, j, |
590 |
> |
TAKE_THIS_TAG_INT, MPI_COMM_WORLD); |
591 |
|
} |
592 |
|
|
593 |
|
|