Instead of a segv, mdrun now gives an error msg if npme>np, fixes #795
authorCarsten Kutzner <ckutzne@gwdg.de>
Wed, 24 Aug 2011 15:20:38 +0000 (17:20 +0200)
committerCarsten Kutzner <ckutzne@gwdg.de>
Thu, 25 Aug 2011 09:12:17 +0000 (11:12 +0200)
Instead of a segv, mdrun now gives an error msg if npme>np, fixes #795

Change-Id: I2e93bccf45ace215d6237354559b8750628a13d6

src/mdlib/domdec.c
src/mdlib/domdec_setup.c

index 82989fdf2368318752c9c63dc9d2347f5c91a28b..a16e548e6f1d7b418a649a3727c6825beb1b7e6c 100644 (file)
@@ -6459,7 +6459,7 @@ gmx_domdec_t *init_domain_decomposition(FILE *fplog,t_commrec *cr,
     if (cr->npmenodes > dd->nnodes)
     {
         gmx_fatal_collective(FARGS,cr,NULL,
-                             "The number of separate PME node (%d) is larger than the number of PP nodes (%d), this is not supported.",cr->npmenodes,dd->nnodes);
+                             "The number of separate PME nodes (%d) is larger than the number of PP nodes (%d), this is not supported.",cr->npmenodes,dd->nnodes);
     }
     if (cr->npmenodes > 0)
     {
index 8048e72710fdf8648c634e723457a7b35388574c..ed095f52e3fce587f59e44e22b3a2d530d936d43 100644 (file)
@@ -37,6 +37,11 @@ static int factorize(int n,int **fac,int **mfac)
 {
     int d,ndiv;
 
+    if (n <= 0)
+    {
+        gmx_fatal(FARGS, "Can only factorize positive integers.");
+    }
+
     /* Decompose n in factors */
     snew(*fac,n/2);
     snew(*mfac,n/2);
@@ -671,6 +676,12 @@ real dd_choose_grid(FILE *fplog,
                     gmx_fatal(FARGS,
                               "Can not have separate PME nodes with 2 or less nodes");
                 }
+                if (cr->npmenodes >= cr->nnodes)
+                {
+                    gmx_fatal(FARGS,
+                              "Can not have %d separate PME nodes with just %d total nodes",
+                              cr->npmenodes, cr->nnodes);
+                }
 
                 /* If the user purposely selected the number of PME nodes,
                  * only check for large primes in the PP node count.