diff --git a/hysop/domain/domain.py b/hysop/domain/domain.py index d08620a8583e450ae7624e5f1a3c19628560e91d..e8eabd80102c1d5647df602d8c01f3e7afc2e84e 100644 --- a/hysop/domain/domain.py +++ b/hysop/domain/domain.py @@ -264,8 +264,11 @@ class Domain(RegisteredObject): proc_tasks = proc_tasks or [(HYSOP_DEFAULT_TASK_ID,)] * parent_comm.Get_size() assert len(proc_tasks) == parent_comm.Get_size(), "{}".format(proc_tasks) assert all([type(_) is type(proc_tasks[0]) for _ in proc_tasks]) - # Flatten if single task per proc. + # Sort tasks and flatten if single task per proc. try: + # Tasks are sorted on each proc according to task size + proc_tasks = npw.asarray([tuple(sorted(pt, key=lambda t:sum([t in _ for _ in proc_tasks]), reverse=True)) + for pt in proc_tasks]) if all([len(_) == 1 for _ in proc_tasks]): proc_tasks = [_[0] for _ in proc_tasks] except TypeError: