- changed status to open
- removed comment
Add timers for Carpet modes
It is currently not possible to determine from the timer output how much time is spent on each refinement level, or in each mode (meta, global, level, singlemap, local).
The branch http://git.carpetcode.org/carpet.git/shortlog/refs/heads/ianhinder/modetimers adds a timer tree which times the time spent in each mode, on each refinement level, and on each map (if desired). This tree is output to standard output after the Evolve timer tree if the Evolve timer tree is being output. Two new parameters are added to control whether to time maps and local mode; these default to "no".
Example output with the default parameters
-----------------------
Percent t/secs Timer
-----------------------
100.0% 20.4 meta mode
99.7% 20.4 |_global mode
11.9% 2.4 | |_level(0)
9.4% 1.9 | |_level(1)
15.6% 3.2 | |_level(2)
23.1% 4.7 | |_level(3)
28.6% 5.8 | |_level(4)
10.8% 2.2 | |_untimed
If the maps and local mode are enabled, the output can look like this:
-----------------------
Percent t/secs Timer
-----------------------
100.0% 38.1 meta mode
94.9% 36.1 |_global mode
11.9% 4.5 | |_level(0)
2.0% 0.8 | | |_map(0)
1.6% 0.6 | | | |_local
9.8% 3.7 | | |_untimed
5.0% 1.9 | |_level(1)
3.4% 1.3 | | |_map(0)
3.1% 1.2 | | | |_local
1.6% 0.6 | | |_untimed
8.1% 3.1 | |_level(2)
5.0% 1.9 | | |_map(0)
4.7% 1.8 | | | |_local
3.0% 1.2 | | |_untimed
11.0% 4.2 | |_level(3)
7.0% 2.7 | | |_map(0)
6.5% 2.5 | | | |_local
4.0% 1.5 | | |_untimed
15.5% 5.9 | |_level(4)
10.8% 4.1 | | |_map(0)
10.3% 3.9 | | | |_local
4.6% 1.7 | | |_untimed
43.3% 16.5 | |_untimed
5.1% 2.0 | untimed
OK to merge?
Keyword:
Comments (9)
-
reporter -
- changed status to open
- removed comment
Please apply.
-
- changed status to resolved
- removed comment
Applied.
-
reporter - removed comment
The reason I didn't apply this yet is that I'm not sure what will happen with multi-patch. Will we end up with different timers on different processes? For example, suppose process 0 has map 0 and process 1 has map 1. Will all maps be entered at least once on all processes? If the timers are not all the same on all processes, I believe that TimerReport will fail.
-
- removed comment
Feel free to describe such issues when you describe the patch...
No, not all patches will the traversed on all processes.
-
reporter - removed comment
I only thought of it after I submitted the patch, and didn't get around to writing it into the ticket; sorry. I didn't expect someone else to apply the patch, so I didn't think it was urgent.
-
reporter - removed comment
With the default parameter settings, the timers for the different maps will not be created, so I think in the end it's not a serious problem.
We could fix this by ensuring that all processes create timers (but do not start them) for all maps, but I think this is not the right approach, as it makes the "minimum" and "average" reductions fairly useless. Instead, I think we should be moving towards a system where if a timer does not exist on a given process, it is not included in the reductions (e.g. the minimum). That way, we would see the minimum time taken for a given map only on the processes that actually had that map, which is probably what the user wants to see anyway. This would need modifications to TimerReport. I have created
#1154to track this enhancement. -
reporter - removed comment
TimerReport supports this case already (
#814). -
- changed status to closed
- edited description
- Log in to comment