Speedup the unskip and scheduler_start process
A bunch of performance and memory improvements:
- In
scheduler_start()
, do not reset the tasks'tic
andtoc
or task debugging properties (see #611 (closed)). - Make each cell that hosts a task carry a flag saying it has a task (see discussion in #523 (closed)).
- When unskipping, only recurse down to levels where tasks still exist (see discussion in #523 (closed)).
- When unskipping, duplicate the list of active cells in order to launch the threads not just on the cells but also on the different task types to enhance parallelization
- Move all the unskip logic to a separate file (part of #427 (closed)).
- Since we know at which level the tasks are, we can recurse less in the creation of send/recv tasks and use a lot fewer task links.
Edited by Matthieu Schaller