| Commit message (Collapse) | Author | Age |
| |
|
| |
|
|
|
|
|
|
| |
Reduce timer values across all processes before output, reporting both maximum and average.
TimerNode::getGlobalTime: new function
|
| |
|
|
|
|
|
|
| |
Add function_data to location_t.
Update location_t's output routine.
Pass iteration number to Requirements::Recompose. Update callers in Carpet.
|
|
|
|
| |
Replace calls to abs() with floating arguments by calls to fabs(), to ensure the results are not accidentally truncated to integer.
|
|
|
|
| |
Move requirement handling code out of Carpet and into a new thorn.
|
|
|
|
|
|
| |
* This can be used for determining which mode, or which refinement level or map, is taking up a lot of time in a simulation
* Add parameters to control whether local mode and each map are timed
* Time the transitions between modes
|
|
|
|
|
|
| |
* Introduce a TimerTree class which contains a pointer to the root and current TimerNodes of that tree
* Adapt TimerNode and Timer classes to use TimerTrees rather than static variables
* Declare a main_timer_tree variable, which is the default tree to use if you don't specify one in Timer timer("timername")
|
| |
|
|
|
|
|
|
| |
Recompose call.
This means that instead of reflevel it is passed rl.
|
| |
|
| |
|
|
|
|
|
|
| |
Carpet assumes that a regridding operation always changes level N
and all finer levels so we should call POSTREGRID on all
finer levels
|
|
|
|
|
| |
these routines would not start since they were only checked for on rl==0
which is never recomposed.
|
| |
|
| |
|
| |
|
|
|
|
|
| |
Add debugging parameter Carpet::output_after_regridding that schedules
an additional output right after regridding.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This patch provides a function interface for accelerator (GPU) devices
to be called at certain points when Carpet traverses the schedule
tree. This can be used to copy data between the host (CPU) and the
device (GPU) as it is needed.
---
Carpet/Carpet/interface.ccl | 28 ++++++++++++++++++++++++++++
Carpet/Carpet/param.ccl | 6 ++++++
Carpet/Carpet/src/CallFunction.cc | 12 ++++++++++++
Carpet/Carpet/src/Comm.cc | 8 ++++++++
Carpet/Carpet/src/Cycle.cc | 4 ++++
Carpet/Carpet/src/Evolve.cc | 2 ++
Carpet/Carpet/src/Initialise.cc | 2 ++
Carpet/Carpet/src/Requirements.cc | 34 ++++++++++++++++++++++------------
Carpet/Carpet/src/variables.cc | 3 +++
Carpet/Carpet/src/variables.hh | 3 +++
10 files changed, 90 insertions(+), 12 deletions(-)
|
|
|
|
|
|
|
|
|
|
| |
Traverse postrestrict bin in correct order (i.e. coarsest to finest),
so that prolongation boundaries are applied consistently.
Traverse post_recover_variables in only for current timelevel (not for
all timelevels). Variables on past timelevels cannot have their
boundary conditions applied consistently, because time interpolation
for these may requires even older timelevels that are not available.
|
|
|
|
|
|
|
|
| |
Specifically, remove any hierarchy information that has been added to
the name of timers, as well as any code for creating timers
dynamically, as these are now unnecessary. Additionally, time some
previously-untimed parts of the code and make timer names in some
places more consistent.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
New parameters output_initialise_timer_tree and
output_timer_tree_every control output of a new "timer tree diagram"
to standard output for the Initialise and Evolve timer trees
respectively. These diagrams indicate:
1. the value of each timer;
2. the percentage of the given tree taken by each timer;
3. which timers are contained in which other timers;
4. any untimed code
for any timer which takes more than 1% of the tree time.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit modifies the timer infrastructure in Carpet to generate a
tree of timers where the hierarchy reflects the call-graph of the
program. This makes it much easier to interpret the timer output than
with the previous flat structure, where it was not possible to see
which timers "contained" which others. More implementation details
are given at the top of TimerNode.hh.
Note that the Timer source and header files have been renamed as
CactusTimer and a new Timer file and object has been created. This is
because the Timer object now only provides a wrapper around the Cactus
timer mechanism which was contained in the old Timer object.
|
|
|
|
| |
Redesign the way in which the times of the past timelevels are set. If cctk_delta_time changes during initialisation, re-set the times of the past timelevels accordingly.
|
|
|
|
|
|
|
| |
Execute the postrestrict and postrestrictinitial bins from finest to
coarsest level, so that the restriction to level L+1 is complete
(including boundary conditions, synchronisation etc.) before level L
is restricted.
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Store the current Cactus time (and not a fake Carpet time) in the th
"time hiearchy". This removes the now redundant "leveltimes" data
structure in Carpet.
Add past time levels to th, so that it can store the time for past
time levels instead of assuming the time step size is constant. This
allows changing the time step size during evolution.
Share the time hierarchy between all maps, instead of having one time
hierarchy per map.
Simplify the time level cycling and time stepping code used during
evolution.
Improve structure of the code that loops over time levels for certain
schedule bins. Introduce a new Carpet variable "timelevel", similar
to "reflevel".
This also makes it possible to avoid time interpolation for the past
time levels during regridding. The past time levels of the fine grid
then remain aligned (in time) with the past time levels of the coarse
grid. This is controlled by a new parameter
"time_interpolation_during_regridding", which defaults to "yes" for
backwards compatibility.
Simplify the three time level initialisation. Instead of initialising
all three time levels by taking altogether three time steps (forwards
and backwards), initialise only one past time level by taking one time
step backwards. The remaining time level is initialised during the
first time step of the evolution, which begins by cycling time levels,
which drops the non-initialised last time level anyway.
Update Carpet and the mode handling correspondingly.
Update the CarpetIOHDF5 checkpoint format correspondingly.
Update CarpetInterp, CarpetReduce, and CarpetRegrid2 correspondingly.
Update CarpetJacobi and CarpetMG correspondingly.
|
| |
|
| |
|
|
|
|
|
| |
Clean up cycling over time levels during initialisation, regridding,
poisoning etc.
|
|
|
|
| |
Ignore-this: 309b4dd613f4af2b84aa5d6743fdb6b3
|
| |
|
| |
|
|
|
|
|
|
| |
Add new modes meta_early, meta_late, global_early, and global_late, which
execute like meta mode or global mode, but execut either as early or as
late as possible in the schedule.
|
| |
|
| |
|
| |
|
| |
|
|
|
|
|
|
|
| |
Set time on the refinement levels explicitly from the global time.
This avoids accumulation of round-off errors.
darcs-hash:20080226140439-dae7b-999dc372d9586fa34ccc181d39572338d5f23e9e.gz
|
|
|
|
| |
darcs-hash:20071006164252-dae7b-98b2b1c19dc9e52e6c1feaf7b75919766ca1b29c.gz
|
|
|
|
| |
darcs-hash:20070809202205-dae7b-baa50974f8519fcde0b1351b6bb3ea72606a6388.gz
|
|
|
|
|
|
| |
Add more timers to Initialise.cc and Evolve.cc.
darcs-hash:20070613215046-dae7b-01cbfbe064e49ed70c28a179ceb68eb2eecf858f.gz
|
|
|
|
|
|
|
| |
Certain scheduling bins do not allow accessing past time levels. Set
the grid function pointers to past time levels to null in these.
darcs-hash:20070606203504-dae7b-df075bdeb5bea053b84d9e6f162796a5aac50540.gz
|
|
|
|
| |
darcs-hash:20070524020543-dae7b-9f8e0ea390832953bcc93e4df83a7c769a336942.gz
|
|
|
|
|
|
|
|
|
|
| |
Always call postregrid on the finest level. Before, postregrid was
only called on the finest level if (a) the level changed, or (b) the
finest level was removed. Since global mode routines are called
together with the finest level, postregrid is now always called on the
finest level.
darcs-hash:20070523204700-dae7b-de1d602c4a3d7a23c5efe2493e7e794859973c07.gz
|
|
|
|
| |
darcs-hash:20070510223037-dae7b-115fc6391d2f18dc73e12774185b1d50f3618ab6.gz
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Remove parameter parameters Carpet::silent, which was inconvenient to
use.
Do not output timing statistics by default.
Allow parameter values -1 in addition to 0 to disable timing output.
Place the timing statistics into the grid scalars even if timing
output is disabled.
darcs-hash:20070312161517-dae7b-77a7d21f37179962beae2f544e7ee6a174c45508.gz
|
|
|
|
|
|
|
| |
Initialise the Carpet timers at the beginning of Evolve, not at the
beginning of Initialise.
darcs-hash:20070207210806-dae7b-db6c6e0c3eebdf149c6adf1abdaf9cd2636cf283.gz
|
|
|
|
|
|
|
|
| |
Correct an error in determining whether the grid hierarchy has
changed: When only levels are removed, this is now also counted as
change. Call postregrid on the newly finest grid in this case.
darcs-hash:20070204212111-dae7b-3447e8d8959c437616ed0e0431e13b373aa93f77.gz
|