/[MITgcm]/MITgcm/eesupp/src/exch_rx_recv_get_y.template
ViewVC logotype

Diff of /MITgcm/eesupp/src/exch_rx_recv_get_y.template

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

revision 1.5 by cnh, Mon Nov 7 19:03:36 2005 UTC revision 1.6 by cnh, Wed Nov 9 17:22:08 2005 UTC
# Line 83  C     mpiStatus                  :: MPI Line 83  C     mpiStatus                  :: MPI
83  #endif  #endif
84  CEOP  CEOP
85    
 #ifdef USE_SINGLE_THREADED_EXCH_COMMS  
86         INTEGER myBxLoSave(MAX_NO_THREADS)         INTEGER myBxLoSave(MAX_NO_THREADS)
87         INTEGER myBxHiSave(MAX_NO_THREADS)         INTEGER myBxHiSave(MAX_NO_THREADS)
88         INTEGER myByLoSave(MAX_NO_THREADS)         INTEGER myByLoSave(MAX_NO_THREADS)
89         INTEGER myByHiSave(MAX_NO_THREADS)         INTEGER myByHiSave(MAX_NO_THREADS)
90  #endif /* SINGLE_THREADED_EXCH_COMMS */         LOGICAL doingSingleThreadedComms
91    
92  #ifdef USE_SINGLE_THREADED_EXCH_COMMS         doingSingleThreadedComms = .FALSE.
93        _BARRIER  #ifdef ALLOW_USE_MPI
94        IF ( myThid .EQ. 1 ) THEN  #ifndef ALWAYS_USE_MPI
95         DO I=1,nThreads        IF ( usingMPI ) THEN
96          myBxLoSave(I) = myBxLo(I)  #endif
97          myBxHiSave(I) = myBxHi(I)  C      Set default behavior to have MPI comms done by a single thread.
98          myByLoSave(I) = myByLo(I)  C      Most MPI implementations don't support concurrent comms from
99          myByHiSave(I) = myByHi(I)  C      several threads.
100          myBxLo(I) = 0         IF ( nThreads .GT. 1 ) THEN
101          myBxHi(I) = -1          _BARRIER
102          myByLo(I) = 0          _BEGIN_MASTER( myThid )
103          myByHi(I) = -1           DO I=1,nThreads
104         ENDDO            myBxLoSave(I) = myBxLo(I)
105         myBxLo(1) = 1            myBxHiSave(I) = myBxHi(I)
106         myBxHi(1) = nSx            myByLoSave(I) = myByLo(I)
107         myByLo(1) = 1            myByHiSave(I) = myByHi(I)
108         myByHi(1) = nSy           ENDDO
109    C        Comment out loop below and myB[xy][Lo|Hi](1) settings below
110    C        if you want to get multi-threaded MPI comms.
111             DO I=1,nThreads
112              myBxLo(I) = 0
113              myBxHi(I) = -1
114              myByLo(I) = 0
115              myByHi(I) = -1
116             ENDDO
117             myBxLo(1) = 1
118             myBxHi(1) = nSx
119             myByLo(1) = 1
120             myByHi(1) = nSy
121             doingSingleThreadedComms = .TRUE.
122            _END_MASTER( myThid )
123            _BARRIER
124        ENDIF        ENDIF
125        _BARRIER  #ifndef ALWAYS_USE_MPI
126  #endif /* SINGLE_THREADED_EXCH_COMMS */        ENDIF
127    #endif
128    #endif
129  C--   Under a "put" scenario we  C--   Under a "put" scenario we
130  C--     i. set completetion signal for buffer we put into.  C--     i. set completetion signal for buffer we put into.
131  C--    ii. wait for completetion signal indicating data has been put in  C--    ii. wait for completetion signal indicating data has been put in
# Line 358  C--   Read from the buffers Line 373  C--   Read from the buffers
373         ENDDO         ENDDO
374        ENDDO        ENDDO
375    
376  #ifdef USE_SINGLE_THREADED_EXCH_COMMS        IF ( doingSingleThreadedComms ) THEN
377        _BARRIER  C      Restore saved settings that were stored to allow
378        IF ( myThid .EQ. 1 ) THEN  C      single thred comms.
379         DO I=1,nThreads         _BARRIER
380          myBxLo(I) = myBxLoSave(I)         _BEGIN_MASTER(myThid)
381          myBxHi(I) = myBxHiSave(I)          DO I=1,nThreads
382          myByLo(I) = myByLoSave(I)           myBxLo(I) = myBxLoSave(I)
383          myByHi(I) = myByHiSave(I)           myBxHi(I) = myBxHiSave(I)
384         ENDDO           myByLo(I) = myByLoSave(I)
385        ENDIF           myByHi(I) = myByHiSave(I)
386        _BARRIER          ENDDO
387  #endif /* USE_SINGLE_THREADED_EXCH_COMMS */         _END_MASTER(myThid)
388           _BARRIER
389          ENDIF                
390    
391        RETURN        RETURN
392        END        END

Legend:
Removed from v.1.5  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.22