[Dart-dev] [6305] DART/trunk/ensemble_manager/ensemble_manager_mod.f90: remove the early return; if only some of the mpi tasks

nancy at ucar.edu nancy at ucar.edu
Fri Jul 12 15:30:06 MDT 2013


Revision: 6305
Author:   nancy
Date:     2013-07-12 15:30:06 -0600 (Fri, 12 Jul 2013)
Log Message:
-----------
remove the early return; if only some of the mpi tasks
need to transpose (e.g. some have both copies and vars
valid, but some have only vars) then all the tasks have
to choose to transpose.

Modified Paths:
--------------
    DART/trunk/ensemble_manager/ensemble_manager_mod.f90

-------------- next part --------------
Modified: DART/trunk/ensemble_manager/ensemble_manager_mod.f90
===================================================================
--- DART/trunk/ensemble_manager/ensemble_manager_mod.f90	2013-07-12 20:19:05 UTC (rev 6304)
+++ DART/trunk/ensemble_manager/ensemble_manager_mod.f90	2013-07-12 21:30:06 UTC (rev 6305)
@@ -1120,15 +1120,16 @@
    call timestamp_message('vars_to_copies start: '//label, alltasks=.true.)
 endif
 
-! Error checking, and early return if possible.
+! Error checking, but can't return early in case only some of the
+! MPI tasks need to transpose.  Only if all N tasks say this is an
+! unneeded transpose can we skip it.
 if (ens_handle%valid == VALID_BOTH) then
    if (flag_unneeded_transposes) then
-      write(msgstring, *) 'ens_handle ', ens_handle%id_num
+      write(msgstring, *) 'task ', my_task_id(), ' ens_handle ', ens_handle%id_num
       call error_handler(E_MSG, 'all_vars_to_all_copies', &
-           'vars & copies both valid, transpose not needed', source, revision, revdate, &
-            text2=msgstring)
+           'vars & copies both valid, transpose not needed for this task', &
+            source, revision, revdate, text2=msgstring)
    endif
-   return
 else if (ens_handle%valid /= VALID_VARS) then
    write(msgstring, *) 'ens_handle ', ens_handle%id_num
    call error_handler(E_ERR, 'all_vars_to_all_copies', &
@@ -1292,15 +1293,16 @@
    call timestamp_message('copies_to_vars start: '//label, alltasks=.true.)
 endif
 
-! Error checking, and early return if possible
+! Error checking, but can't return early in case only some of the
+! MPI tasks need to transpose.  Only if all N tasks say this is an
+! unneeded transpose can we skip it.
 if (ens_handle%valid == VALID_BOTH) then
    if (flag_unneeded_transposes) then
-      write(msgstring, *) 'ens_handle ', ens_handle%id_num
+      write(msgstring, *) 'task ', my_task_id(), ' ens_handle ', ens_handle%id_num
       call error_handler(E_MSG, 'all_copies_to_all_vars', &
-           'vars & copies both valid, transpose not needed', source, revision, revdate, &
-            text2=msgstring)
+           'vars & copies both valid, transpose not needed for this task', &
+            source, revision, revdate, text2=msgstring)
    endif
-   return
 else if (ens_handle%valid /= VALID_COPIES) then
    write(msgstring, *) 'ens_handle ', ens_handle%id_num
    call error_handler(E_ERR, 'all_copies_to_all_vars', &


More information about the Dart-dev mailing list