2 C Test program from Kevin Maguire (K.Maguire@dl.ac.uk); hung earlier
3 C T3D verions. Modified by WDG to be Fortran 77
10 INTEGER STRT,STOP,STEP
11 PARAMETER ( STRT = 1 , STOP = 1000 , STEP = 10 )
14 PARAMETER (MAX_MESS = STOP)
17 PARAMETER (NUM_LOOPS = 5)
20 PARAMETER (VERBOSE = .FALSE.)
22 REAL MESSAGE1(MAX_MESS),MESSAGE2(MAX_MESS)
24 INTEGER MES_SIZE,MES_NUM,ID,IERR
25 INTEGER TO1,FROM1,MES_ID1
26 INTEGER TO2,FROM2,MES_ID2
27 INTEGER INODE,ITOTNODE
28 INTEGER STATUS(MPI_STATUS_SIZE)
34 $ (MPI_COMM_WORLD,INODE,IERR)
36 $ (MPI_COMM_WORLD,ITOTNODE,IERR)
38 C $ (MPI_COMM_WORLD,MPI_TAG_UB,TAG_UP_BD,FLAG,IERR)
41 CALL MPI_BARRIER(MPI_COMM_WORLD,IERR)
45 DO 10 MES_SIZE=STRT,STOP,STEP
47 DO 20 MES_NUM=1,NUM_LOOPS
54 IF (ID.GE.TAG_UP_BD) ID = 0
60 IF (ID.GE.TAG_UP_BD) ID = 0
67 $ MESSAGE1,MES_SIZE,MPI_REAL,
68 $ TO1,MES_ID1,MPI_COMM_WORLD,
72 $ MESSAGE2,MES_SIZE,MPI_REAL,
73 $ FROM2,MES_ID2,MPI_COMM_WORLD,
78 IF (INODE.EQ.(ITOTNODE-1)) THEN
81 $ MESSAGE1,MES_SIZE,MPI_REAL,
82 $ FROM1,MES_ID1,MPI_COMM_WORLD,
86 $ MESSAGE2,MES_SIZE,MPI_REAL,
87 $ TO2,MES_ID2,MPI_COMM_WORLD,
92 CALL MPI_BARRIER(MPI_COMM_WORLD,IERR)
94 IF (INODE.EQ.0 .AND. VERBOSE) THEN
96 $ MES_SIZE,MES_NUM,TO1,FROM1,MES_ID1
98 $ MES_SIZE,MES_NUM,TO2,FROM2,MES_ID2
106 C If we get here at all, we're ok
107 PRINT *, ' No Errors'
109 CALL MPI_FINALIZE(IERR)