Fix two PME DLB trigger issues
[alexxy/gromacs.git] / src / gromacs / domdec / domdec.cpp
index e8de945b94ed92b198368896fec394f7ba5f441e..e6910aefbc1b042597a8ce4e8b00ee0332ead2c2 100644 (file)
@@ -5580,6 +5580,9 @@ static float dd_f_imbal(gmx_domdec_t *dd)
 
 float dd_pme_f_ratio(gmx_domdec_t *dd)
 {
+    /* Should only be called on the DD master rank */
+    assert(DDMASTER(dd));
+
     if (dd->comm->load[0].mdf > 0 && dd->comm->cycl_n[ddCyclPME] > 0)
     {
         return dd->comm->load[0].pme/dd->comm->load[0].mdf;
@@ -7655,8 +7658,10 @@ void set_dd_dlb_max_cutoff(t_commrec *cr, real cutoff)
  */
 static void dd_dlb_set_should_check_whether_to_turn_dlb_on(gmx_domdec_t *dd, gmx_bool bValue)
 {
-    if (dd->comm->eDLB == edlbAUTO && !dd_dlb_is_locked(dd))
+    if (dd->comm->eDLB == edlbAUTO)
     {
+        assert(!dd_dlb_is_locked(dd));
+
         dd->comm->bCheckWhetherToTurnDlbOn = bValue;
     }
 }
@@ -7668,7 +7673,7 @@ static gmx_bool dd_dlb_get_should_check_whether_to_turn_dlb_on(gmx_domdec_t *dd)
 {
     const int nddp_chk_dlb = 100;
 
-    if (dd->comm->eDLB != edlbAUTO)
+    if (dd->comm->eDLB != edlbAUTO || dd_dlb_is_locked(dd))
     {
         return FALSE;
     }