Repart by CPU ticks with optional fixed costs

Merged Peter W. Draper requested to merge repart-by-ticks-with-means into master

Change the weights used for repartitioning to either measured CPU ticks and/or fixed costs based on the mean time per task type. Both these techniques give very good partitioning, but deriving fixed costs requires a run of SWIFT to the first unforced repartition, so we use only ticks by default.

So we will now normally assume a good enough initial partition (based on the particle memory use per rank) and run with that until the first step that interacts all the particles (or nearly all). That step produces ticks for all tasks, which then give the weights.

The fixed costs are calculated and dumped at repartition steps into a file partition_fixed_costs.h which can be used to replace the dummy version in src/, after which SWIFT can be recompiled and fixed costs tuned to the correct run are available. When requested these are used after the second step to give a partition that will be used until the first unforced repartition, when ticks are used once more. There is an option to only use fixed costs, when available for all repartitioning, but that should be used as a development tool.

As part of these changes the way that task dumps are generated has changed a little (the code for this is moved into a more obvious function in task.c). The -y flag is now always available and outputs a stats analysis of the tasks, so we can easily seen the costs of tasks. The fuller dumps still require the configuration option to be applied.

Note that this decouples task weights from repartitioning as scheduling needs to be done with partial information, for that we still have an issue with tasks that do not have characteristic functions that scale with particle counts.

We also now have a repartition type "memory" that replaces "costs/none". This balances by memory use by particles in the cells. Also all the repartition types have been relabelled to use simple non-compound names.

Finally we have some RTD docs.

Supercedes !686 (closed)

Edited by Peter W. Draper

Merge request reports