/[MITgcm]/MITgcm_contrib/cg2d_bench/ini_mp.F
ViewVC logotype

Annotation of /MITgcm_contrib/cg2d_bench/ini_mp.F

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.1 - (hide annotations) (download)
Fri May 12 21:58:05 2006 UTC (17 years, 11 months ago) by ce107
Branch: MAIN
Initial version of CG2D benchmark code (serial and parallel) by Chris Hill

1 ce107 1.1 SUBROUTINE INI_MP
2    
3     C Initialise multi-processing
4     IMPLICIT NONE
5    
6     C == Global data ==
7     #include "SIZE.h"
8     #include "EEPARAMS.h"
9    
10     #include "JAM_INFO.h"
11     #include "MPI_INFO.h"
12    
13     #ifdef ALLOW_MPI
14     #include "mpif.h"
15     #endif
16    
17     C == Local variables ==
18     Real*8 dummyVal
19     INTEGER rc
20     CHARACTER*(MAX_LEN_FNAM) fnam
21     INTEGER myTwoProcRank
22    
23     myXGlobalLo =1
24     myYGlobalLo =1
25     myProcId =0
26     numberOfProcs =1
27     Nx = sNx
28     Ny = sNy
29     standardMessageUnit=6
30    
31     #ifdef USE_MPI_INIT
32     C MPI Initialisation
33     CALL MPI_INIT( rc )
34     C Get my proc. number
35     CALL MPI_COMM_RANK( MPI_COMM_WORLD, mpi_pid, rc )
36     C Get total count of procs.
37     CALL MPI_COMM_SIZE( MPI_COMM_WORLD, mpi_np , rc )
38    
39     C Set up connectivity
40     mpi_northId = mpi_pid+1
41     IF ( mpi_northId .EQ. mpi_np ) mpi_northId = 0
42     mpi_southId = mpi_pid-1
43     IF ( mpi_southId .LT. 0 ) mpi_southId = mpi_np-1
44    
45     numberOfProcs = mpi_np
46     myProcId = mpi_pid
47    
48     #endif
49    
50    
51     #ifdef USE_JAM_INIT
52     C JAM initialisation. This should work with or without
53     C MPI. If we don't use MPI we have to start procs. by hand
54     C though!
55    
56     myTwoProcRank=MOD(myProcId,2)
57     IF ( myTwoProcRank .EQ. 0 ) THEN
58     myTwoProcRank = 1
59     ELSE
60     myTwoProcRank = 0
61     ENDIF
62     CALL JAM_collective_init( myTwoProcRank )
63    
64     CALL GET_JAM_self_address( jam_pid )
65     CALL GET_JAM_partition_size( jam_np )
66     jam_exchKey = 100
67     dummyVal = 0.
68     CALL JAM_barrier_start( dummyVal )
69     CALL JAM_barrier_done( dummyVal )
70    
71     C Set up connectivity
72     jam_northId = jam_pid+1
73     IF ( jam_northId .EQ. jam_np ) jam_northId = 0
74     jam_southId = jam_pid-1
75     IF ( jam_southId .LT. 0 ) jam_southId = jam_np-1
76    
77     numberOfProcs = jam_np
78     myProcId = jam_pid
79    
80     mpi_northId = jam_northId
81     mpi_southId = jam_southId
82    
83     #endif
84    
85     myYGlobalLo = myProcId*sNy+1
86     Ny = numberOfProcs*sNy
87    
88     IF ( numberOfProcs .GT. 1 ) THEN
89     WRITE(fnam,'(A7,I6.6)') 'STDOUT.',myProcId
90     OPEN(UNIT=standardMessageUnit,FILE=fnam)
91     ENDIF
92    
93    
94     RETURN
95     END

  ViewVC Help
Powered by ViewVC 1.1.22