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

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

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

revision 1.4 by cnh, Mon Nov 7 19:03:36 2005 UTC revision 1.5 by cnh, Wed Nov 9 17:22:08 2005 UTC
# Line 103  C                Sync. memory Line 103  C                Sync. memory
103  C        C      
104  CEOP  CEOP
105    
 #ifdef USE_SINGLE_THREADED_EXCH_COMMS  
106         INTEGER myBxLoSave(MAX_NO_THREADS)         INTEGER myBxLoSave(MAX_NO_THREADS)
107         INTEGER myBxHiSave(MAX_NO_THREADS)         INTEGER myBxHiSave(MAX_NO_THREADS)
108         INTEGER myByLoSave(MAX_NO_THREADS)         INTEGER myByLoSave(MAX_NO_THREADS)
109         INTEGER myByHiSave(MAX_NO_THREADS)         INTEGER myByHiSave(MAX_NO_THREADS)
110  #endif /* SINGLE_THREADED_EXCH_COMMS */         LOGICAL doingSingleThreadedComms
111    
112  #ifdef USE_SINGLE_THREADED_EXCH_COMMS         doingSingleThreadedComms = .FALSE.
113        _BARRIER  #ifdef ALLOW_USE_MPI
114        IF ( myThid .EQ. 1 ) THEN  #ifndef ALWAYS_USE_MPI
115         DO I=1,nThreads        IF ( usingMPI ) THEN
116          myBxLoSave(I) = myBxLo(I)  #endif
117          myBxHiSave(I) = myBxHi(I)  C      Set default behavior to have MPI comms done by a single thread.
118          myByLoSave(I) = myByLo(I)  C      Most MPI implementations don't support concurrent comms from
119          myByHiSave(I) = myByHi(I)  C      several threads.
120          myBxLo(I) = 0         IF ( nThreads .GT. 1 ) THEN
121          myBxHi(I) = -1          _BARRIER
122          myByLo(I) = 0          _BEGIN_MASTER( myThid )
123          myByHi(I) = -1           DO I=1,nThreads
124         ENDDO            myBxLoSave(I) = myBxLo(I)
125         myBxLo(1) = 1            myBxHiSave(I) = myBxHi(I)
126         myBxHi(1) = nSx            myByLoSave(I) = myByLo(I)
127         myByLo(1) = 1            myByHiSave(I) = myByHi(I)
128         myByHi(1) = nSy           ENDDO
129    C        Comment out loop below and myB[xy][Lo|Hi](1) settings below
130    C        if you want to get multi-threaded MPI comms.
131             DO I=1,nThreads
132              myBxLo(I) = 0
133              myBxHi(I) = -1
134              myByLo(I) = 0
135              myByHi(I) = -1
136             ENDDO
137             myBxLo(1) = 1
138             myBxHi(1) = nSx
139             myByLo(1) = 1
140             myByHi(1) = nSy
141             doingSingleThreadedComms = .TRUE.
142            _END_MASTER( myThid )
143            _BARRIER
144        ENDIF        ENDIF
145        _BARRIER  #ifndef ALWAYS_USE_MPI
146  #endif /* SINGLE_THREADED_EXCH_COMMS */        ENDIF
147    #endif
148    #endif
149    
150        DO bj=myByLo(myThid),myByHi(myThid)        DO bj=myByLo(myThid),myByHi(myThid)
151         DO bi=myBxLo(myThid),myBxHi(myThid)         DO bi=myBxLo(myThid),myBxHi(myThid)
# Line 379  C     is much too slow and if we own the Line 395  C     is much too slow and if we own the
395  C     per process preemption is not a problem.  C     per process preemption is not a problem.
396        IF ( exchNeedsMemSync  ) CALL MEMSYNC        IF ( exchNeedsMemSync  ) CALL MEMSYNC
397    
398  #ifdef USE_SINGLE_THREADED_EXCH_COMMS        IF ( doingSingleThreadedComms ) THEN
399        _BARRIER  C      Restore saved settings that were stored to allow
400        IF ( myThid .EQ. 1 ) THEN  C      single thred comms.
401         DO I=1,nThreads         _BARRIER
402          myBxLo(I) = myBxLoSave(I)         _BEGIN_MASTER(myThid)
403          myBxHi(I) = myBxHiSave(I)          DO I=1,nThreads
404          myByLo(I) = myByLoSave(I)           myBxLo(I) = myBxLoSave(I)
405          myByHi(I) = myByHiSave(I)           myBxHi(I) = myBxHiSave(I)
406         ENDDO           myByLo(I) = myByLoSave(I)
407        ENDIF           myByHi(I) = myByHiSave(I)
408        _BARRIER          ENDDO
409  #endif /* USE_SINGLE_THREADED_EXCH_COMMS */         _END_MASTER(myThid)
410           _BARRIER
411          ENDIF                
412    
413        RETURN        RETURN
414        END        END

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

  ViewVC Help
Powered by ViewVC 1.1.22