diff --git a/src/partition.c b/src/partition.c index 6df437826de796c05143b2003dbdacb971d9b7be..ae2c84121477909f7cca8d77098250c7f4dca038 100644 --- a/src/partition.c +++ b/src/partition.c @@ -458,9 +458,15 @@ static void repart_edge_metis(int partweights, int bothweights, int nodeID, t->type != task_type_kick && t->type != task_type_init) continue; - /* Get the task weight. */ + /* Get the task weight. This can be slightly negative on multiple board + * computers when the runners are not pinned to cores, don't stress just + * make a report and ignore these tasks. */ int w = (t->toc - t->tic) * wscale; - if (w < 0) error("Bad task weight (%d).", w); + if (w < 0) { + message("Task toc before tic: -%.3f %s, (try using processor affinity).", + clocks_from_ticks( t->tic - t->toc ), clocks_getunit()); + w = 0; + } /* Do we need to re-scale? */ wtot += w;