/[MITgcm]/MITgcm/eesupp/src/eedie.F
ViewVC logotype

Diff of /MITgcm/eesupp/src/eedie.F

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

revision 1.10 by mlosch, Sat Sep 25 23:09:54 2010 UTC revision 1.11 by jmc, Wed Mar 28 20:22:39 2012 UTC
# Line 25  C     == Global variables == Line 25  C     == Global variables ==
25  #include "EESUPPORT.h"  #include "EESUPPORT.h"
26  CEOP  CEOP
27    
 C     !FUNCTIONS  
       INTEGER  ILNBLNK  
       EXTERNAL ILNBLNK  
   
28  C     == Local variables ==  C     == Local variables ==
29  C     msgBuf       - I/O Buffer  C     msgBuf       :: I/O Buffer
30  C     nThreadsDone - Used to count number of completed threads.  C     nThreadsDone :: Used to count number of completed threads.
31  C     I            - Loop counter.  C     I            :: Loop counter.
32        CHARACTER*(MAX_LEN_MBUF) msgBuf        CHARACTER*(MAX_LEN_MBUF) msgBuf
33        INTEGER nThreadsDone        INTEGER nThreadsDone
34        INTEGER I, L        INTEGER I
35  #ifdef ALLOW_USE_MPI  #ifdef ALLOW_USE_MPI
36  C     mpiRC            - Error code reporting variable used  C     mpiRC        :: Error code reporting variable used with MPI.
 C                        with MPI.  
37        INTEGER mpiRC        INTEGER mpiRC
38  #endif /* ALLOW_USE_MPI */  #endif /* ALLOW_USE_MPI */
39    
40          IF ( eeBootError ) THEN
41    C--   Skip ended threads counting if earlier error was found
42            WRITE(msgBuf,'(2A)')
43         &   'EEDIE: earlier error in multi-proc/thread setting'
44            CALL PRINT_ERROR( msgBuf, 1 )
45            fatalError = .TRUE.
46    
47          ELSE
48  C--   Check that all the threads have ended  C--   Check that all the threads have ended
49  C     No thread should reach this loop before all threads have set  C     No thread should reach this loop before all threads have set
50  C     threadIsComplete to TRUE. If they do then either there is a bug  C     threadIsComplete to TRUE. If they do then either there is a bug
51  C     in the code or the behaviour of the parallel compiler directives  C     in the code or the behaviour of the parallel compiler directives
52  C     are not right for this code. In the latter case different  C     are not right for this code. In the latter case different
53  C     directives may be available or the compiler itself may have a  C     directives may be available or the compiler itself may have a
54  C     bug or you may need a different parallel compiler for main.F  C     bug or you may need a different parallel compiler for main.F
55        nThreadsDone = 0          nThreadsDone = 0
56        DO I = 1, nThreads          DO I = 1, nThreads
57         IF ( threadIsComplete(I) ) nThreadsDone = nThreadsDone+1           IF ( threadIsComplete(I) ) nThreadsDone = nThreadsDone+1
58        ENDDO          ENDDO
59        IF ( nThreadsDone .LT. nThreads ) THEN          IF ( nThreadsDone .LT. nThreads ) THEN
60         WRITE(msgBuf,'(A,I5,A,I5,A)')           WRITE(msgBuf,'(A,I5,A)')
61       & 'S/R EEDIE: Only ',nThreadsDone,       &    'S/R EEDIE: Only',nThreadsDone,' threads have completed,'
62       & ' threads have completed, ',nThreads,           CALL PRINT_ERROR( msgBuf, 1 )
63       & ' are expected for this configuration!'           WRITE(msgBuf,'(A,I5,A)')
64         L = ILNBLNK(msgBuf)       &    'S/R EEDIE:',nThreads,' are expected for this config !'
65         WRITE(*,*) msgBuf(1:L)           CALL PRINT_ERROR( msgBuf, 1 )
66         WRITE(*,*)           eeEndError = .TRUE.
67       & 'Possibly you have different setenv PARALLEL and nThreads?'           fatalError = .TRUE.
68         eeEndError = .TRUE.          ENDIF
69         fatalError = .TRUE.  
70    C--   end if/else eebootError
71        ENDIF        ENDIF
72    
73  #ifdef USE_LIBHPM  #ifdef USE_LIBHPM
# Line 97  C Line 101  C
101  #endif  #endif
102  #endif /* ALLOW_USE_MPI */  #endif /* ALLOW_USE_MPI */
103    
   
104        RETURN        RETURN
105        END        END

Legend:
Removed from v.1.10  
changed lines
  Added in v.1.11

  ViewVC Help
Powered by ViewVC 1.1.22