1 |
C $Header: /u/gcmpack/MITgcm_contrib/llc_hires/llc_90/code-async/asyncio_init.F,v 1.1 2017/10/03 00:09:12 dimitri Exp $ |
2 |
#include "CPP_EEOPTIONS.h" |
3 |
|
4 |
SUBROUTINE ASYNCIO_INIT( |
5 |
I mpiCommParent, |
6 |
U mpiCommCompute ) |
7 |
|
8 |
IMPLICIT NONE |
9 |
#include "SIZE.h" |
10 |
|
11 |
INTEGER mpiCommParent, mpiCommCompute |
12 |
|
13 |
INTEGER mpiRC |
14 |
INTEGER mpiCommIO |
15 |
INTEGER mpiParentNP |
16 |
INTEGER myParentRank |
17 |
|
18 |
INTEGER mpiMyColor |
19 |
INTEGER mpiComputeNP |
20 |
INTEGER mpiIONP |
21 |
INTEGER totalNumTiles |
22 |
INTEGER numComputeProcesses |
23 |
|
24 |
CALL MPI_COMM_SIZE(mpiCommParent, mpiParentNP, mpiRC ) |
25 |
CALL MPI_COMM_RANK(mpiCommParent, myParentRank, mpiRC ) |
26 |
|
27 |
C-- Hand control of I/O ranks to I/O library code. |
28 |
C-- Get back communicator for compute ranks to use. |
29 |
totalNumTiles = nPx*nPy*nSx*nSy |
30 |
numComputeProcesses = nPx*nPy |
31 |
IF ( myParentRank .EQ. 0 ) THEN |
32 |
PRINT *, 'totalNumTiles ',totalNumTiles |
33 |
PRINT *, 'numComputeProcesses ', numComputeProcesses |
34 |
ENDIF |
35 |
CALL ASYNCIO_BRON_F_F1(mpiCommParent, |
36 |
I numComputeProcesses, |
37 |
I totalNumTiles, |
38 |
O mpiCommCompute) |
39 |
RETURN |
40 |
|
41 |
C-- ** MOST CODE FROM HERE IS PLACE HOLDER UNTIL WORKING |
42 |
C-- ** BRON CODE EXISTS |
43 |
C-- Distribute procs to "compute pool" and "I/O pool" |
44 |
mpiCommIO = -1 |
45 |
mpiCommCompute = -1 |
46 |
! mpiComputeNP = mpiParentNP*3/4 |
47 |
mpiComputeNP = npx*npy |
48 |
mpiIONP = mpiParentNP-mpiComputeNP |
49 |
|
50 |
IF ( myParentRank .GE. mpiComputeNP ) THEN |
51 |
mpiMyColor=1 |
52 |
ELSE |
53 |
mpiMyColor=2 |
54 |
ENDIF |
55 |
|
56 |
IF ( mpiMyColor .EQ. 1 ) THEN |
57 |
CALL MPI_COMM_SPLIT(mpiCommParent, mpiMyColor, 0, mpiCommIO, |
58 |
& mpiRC ) |
59 |
ELSE |
60 |
CALL MPI_COMM_SPLIT(mpiCommParent, mpiMyColor, 0, mpiCommCompute, |
61 |
& mpiRC) |
62 |
ENDIF |
63 |
|
64 |
IF ( mpiCommIO .NE. -1 ) THEN |
65 |
CALL ASYNCIO_DRIVER_INIT( |
66 |
I mpiCommIO, mpiCommParent, |
67 |
I sNx, sNy, Nr, OLx, OLy |
68 |
I ) |
69 |
C-- ** WILL NEED SOMETHING LIKE THESE THREE LINES EVEN |
70 |
C-- ** AFTER BRON CODE |
71 |
CALL MPI_BARRIER(mpiCommParent,mpiRC) |
72 |
CALL MPI_FINALIZE(mpiRC) |
73 |
STOP 'NORMAL END: ASYNC IO PROCS' |
74 |
ENDIF |
75 |
|
76 |
RETURN |
77 |
END |