Skip to content

Commit 69ea5ef

Browse files
committed
Add WallTimeReport callback
1 parent 9937e80 commit 69ea5ef

File tree

2 files changed

+17
-1
lines changed

2 files changed

+17
-1
lines changed

config/ci_configs/amip_default.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ dt_cpl: "150secs"
55
dt_rad: "1hours"
66
dz_bottom: 30
77
h_elem: 4
8+
log_progress: false
89
mode_name: "amip"
910
moist: "equil"
1011
precip_model: "0M"

experiments/ClimaEarth/setup_run.jl

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ import ClimaCoupler.Interfacer:
5252

5353
import ClimaUtilities.SpaceVaryingInputs: SpaceVaryingInput
5454
import ClimaUtilities.TimeVaryingInputs: TimeVaryingInput, evaluate!
55+
import ClimaUtilities.OnlineLogging: WallTimeInfo, report_walltime
5556
import ClimaUtilities.Utils: period_to_seconds_float
5657
import ClimaUtilities.ClimaArtifacts: @clima_artifact
5758
import ClimaUtilities.TimeManager: ITime, date
@@ -495,7 +496,21 @@ function CoupledSimulation(config_dict::AbstractDict)
495496
EveryCalendarDtSchedule(TimeManager.time_to_period(checkpoint_dt); start_date)
496497
checkpoint_cb = TimeManager.Callback(schedule_checkpoint, Checkpointer.checkpoint_sims)
497498

498-
callbacks = (checkpoint_cb,)
499+
tot_steps = Int(ceil(float(tspan[2] - tspan[1]) / float(Δt_cpl)))
500+
five_percent_steps = ceil(Int, 0.05 * tot_steps)
501+
steps_taken = (integrator) -> float(integrator.t - t_start) / float(Δt_cpl)
502+
walltime_report_cond =
503+
(integrator) -> begin
504+
nsteps = steps_taken(integrator)
505+
# skip first two steps for compilation
506+
(nsteps == 1 || nsteps == 2) && return false
507+
return nsteps % five_percent_steps == 0 || ispow2(nsteps)
508+
end
509+
walltime_affect! = let wt = WallTimeInfo()
510+
(coupled_sim) -> report_walltime(wt, coupled_sim.model_sims.atmos_sim.integrator)
511+
end
512+
walltime_cb = TimeManager.Callback(walltime_report_cond, walltime_affect!)
513+
callbacks = (checkpoint_cb, walltime_cb)
499514

500515
#= Set up default AMIP diagnostics
501516
Use ClimaDiagnostics for default AMIP diagnostics, which currently include turbulent energy fluxes.

0 commit comments

Comments
 (0)