diff --git a/docs/performance.md b/docs/performance.md new file mode 100644 index 0000000..3850eab --- /dev/null +++ b/docs/performance.md @@ -0,0 +1,112 @@ +# Simulator acceleration assessment + +Assessment date: 2026-10-10. This concerns the ExoPlaSim simulator, not SBDART or Python postprocessing. + +## Recommendation + +Do not rewrite the simulator in Rust for speed alone. The hot path is already compiled Fortran. A GPU backend has plausible acceleration targets, but T21 is small and a partial offload has a low whole-model ceiling. First measure CPU optimization and representative higher-resolution workloads. Use a small accelerator prototype before committing to a full GPU backend. + +## Observed execution path + +`exoplasim/plasim/src/plasim.f90:611` contains the sequential timestep loop. Each step calls `gridpointa`, `spectrala`, `gridpointd`, and `spectrald`. The gridpoint stages use Fourier and Legendre transforms. The physics stage calls flux, radiation, rain, surface, and carbon modules. + +Python prepares inputs and invokes a compiled executable. The measurements below run that executable directly. Python API, compilation time, and NPZ postprocessing are not timed. + +`legmod.f90` contains explicit harmonic reductions in `sp2fc`, `fc2sp`, `dv2uv`, and `mktend`. The model uses its own FFT routines in `fftmod.f90`. `radmod.f90` implements shortwave and longwave parameterizations over atmospheric columns. `rainmod.f90` and `fluxmod.f90` implement convection, precipitation, and vertical diffusion. + +The model stores gridpoint data with horizontal points as the contiguous dimension, for example `NHOR` by `NLEV`. This favors horizontal vectorization. Vertical dependencies still require ordered work within a column. Module-level state and scratch arrays make isolated offload less straightforward than adding a compiler flag. + +MPI support exists in `mpimod.f90`. Several scatter, gather, and reduction routines issue a collective separately for each level. The serial executable uses MPI stubs. The inspected Fortran tree has no OpenMP, OpenACC, or CUDA directives. + +## Local measurements + +The host exposes four logical CPUs from an AMD Ryzen 5 PRO 3400G. Other workloads were active. No NVIDIA, DRM, or KFD device was exposed to this container. + +The test uses serial T21, ten layers, FP64 default reals, and a 1,440-step continuation from a copied smoke-test directory. Outputs remain enabled. Every timed variant received copies of the same starting directory. This is not a clean statistical benchmark or a cold-start scientific experiment. + +| Variant | User CPU seconds | Wall seconds | +| --- | ---: | ---: | +| Existing local executable | 61.76 | 63.43 | +| Rebuild with native CPU code and without runtime bounds checks | 53.74 | 54.16 | +| Instrumented rebuild for gprof | 56.90 | 57.31 | + +The existing compiler options include `-O3`, `-fcheck=all`, floating-point traps, and zero initialization. The experimental rebuild adds `-march=native` and omits `-fcheck=all`. It retains traps and initialization. The observed CPU improvement is about 15%, and wall-time improvement about 17%. This combines two changes and uses one run each. It does not isolate either flag's contribution. The optimized output has not received a scientific equivalence test. Do not change production defaults on this evidence alone. + +The gprof rebuild adds `-pg` to the existing options. It records 1,443 calls to major timestep kernels, including three initial substeps. Sampled self-time groups are: + +| Group | Approximate sampled self-time | +| --- | ---: | +| Shortwave and longwave radiation | 26% | +| Listed Legendre kernels | 22% | +| Listed FFT kernels | 10% | +| Listed rain and convection kernels | 21% | +| Vertical diffusion | 4% | + +Largest individual routines are `swr` at 17%, `dv2uv` at 10%, `lwr` at 10%, and `mkrain` at 7%. These are self-time shares, not overlapping inclusive call-tree times. + +The profile accounts for about 37.47 sampled seconds against 56.90 user CPU seconds. Treat shares as approximate hotspot evidence, not exact accounting. Compiler inlining, instrumentation, sampling, and host contention limit this result. Repeat with a sampling profiler and isolated representative runs before selecting a final architecture. + +## GPU compute + +Radiation and column physics have independent work across horizontal columns. Fourier transforms can use batched FFT libraries. Legendre transforms can use batched reductions or matrix operations. These are real accelerator candidates. + +The difficulty is workload size and data movement. T21 has 2,048 columns and 20,480 atmospheric cells at ten levels. One FP64 3D field is only 160 KiB. The timestep performs many small transforms and physics phases. A GPU backend that copies state for each routine can lose its compute gain to launches, synchronization, and transfers. + +Keep evolving state and scratch arrays on the device across many steps. Batch levels, fields, and preferably independent planets. Copy only necessary diagnostics and checkpoints back to the CPU. Convection branches and vertical recurrences need explicit treatment. Preserve the packed harmonic layout, normalization, filtering, and north-south symmetry behavior when replacing transforms. + +At T42 there are 8,192 columns. At T85 there are 32,768. Higher resolution, more levels, and ensembles give accelerators more work. Dense Legendre work grows roughly cubically with horizontal truncation at fixed level count. FFT work grows roughly as grid size times log longitude count. Those trends make higher-resolution acceleration more plausible than acceleration of one T21 planet. + +Use a GPU with adequate FP64 throughput. A consumer GPU's FP32 rating does not predict FP64 climate-model performance. FP32 or mixed precision needs separate scientific validation. + +Amdahl's law limits partial offload. If radiation is 26% of runtime, infinitely fast radiation only permits about 1.35 times whole-model speed. A tenfold radiation speedup permits about 1.31 times. Infinitely fast FFTs alone permit about 1.11 times. These estimates use the approximate local profile and exclude transfer overhead. + +A major speedup therefore needs more than a radiation kernel or a cuFFT substitution. It needs a coherent device-resident dynamics and physics path. Multi-planet batching is another route, but requires separate model state instead of shared module globals. + +No GPU speedup was measured. The container has no exposed accelerator. A numerical speedup prediction for a particular GPU would be speculative. + +## Rust port + +Rust can express the same contiguous arrays, loops, reductions, and parallel work. It does not reduce their operation count by itself. Fortran is already a compiled numerical language, and its array semantics often help optimization. + +A literal port may match, improve, or worsen performance. The result depends on memory layout, bounds-check elimination, vectorization, math libraries, reduction order, and batching. A naive array-of-structures or allocation-heavy Rust implementation can be slower than the existing code. + +The PlaSim source directory contains about 44,600 Fortran lines, including optional modules. A full port also has to preserve restart and output formats, MPI behavior, calendar logic, physical thresholds, and specialized exoplanet changes. Compiler promotion currently gives default real variables FP64 storage. A port must preserve these semantics explicitly. + +Rust is useful if a separate goal requires safer state ownership, embedding, easier tests, or independent model instances. It can also host an incremental CPU or GPU backend through narrow FFI boundaries. Those benefits do not establish a speed advantage. + +The worthwhile optimization would be a different implementation of the hot kernels. That can also be done in Fortran. Attribute gains to batching, SIMD, parallelism, or algorithm changes, not the source language. + +## Next experiment + +1. Define whether the goal is one planet's latency or an ensemble's throughput. +2. Repeat direct-executable benchmarks at the intended resolution, level count, and physics configuration. +3. Separate compute, output, MPI, startup, and Python postprocessing time. +4. Test runtime checks and native CPU flags independently. Record medians across repeated runs. +5. Inspect compiler vectorization reports for radiation and Legendre kernels. +6. Test CPU parallelism and ensemble scheduling before adding a GPU dependency. +7. Prototype one GPU radiation path with persistent buffers. Measure transfer-inclusive end-to-end time. +8. Test transform batching if higher-resolution dynamics dominate the representative workload. +9. Continue only if measured savings justify the maintenance cost. + +Validate kernels against reference inputs, including dark columns, dry atmospheres, clouds, pressure extremes, and tidally locked configurations. Check conservation, energy budgets, restarts, and long-run climate statistics. Small floating-point differences can grow in chaotic simulations. Bitwise agreement over long trajectories is not an appropriate sole acceptance criterion. + +## Reproduction + +Evidence is in `docs/work/2026-10-10/performance/`. Ephemeral build and runtime directories are in `tmp/performance/` on the original host. + +After local setup and a smoke run, copy the generated `exoplasim/plasim/bld/` directory and the smoke runtime directory. Build the copy with the following command. Explicit `OCEANCOUP=cpl_stub` preserves the uncoupled model when forcing a complete rebuild. + +```sh +timeout 180 make -C tmp/performance/profile-build -B OCEANCOUP=cpl_stub \ + MOST_F90_OPTS='-O3 -pg -cpp -fcheck=all -ffixed-line-length-132 -ffpe-trap=invalid,zero,overflow -ffpe-summary=none -finit-real=zero' +``` + +Run the copied executable inside the copied runtime directory under `timeout 180 /usr/bin/time`. Generate the profile with `timeout 20 gprof ./profile.x gmon.out`. Restore identical runtime inputs before each comparison. + +The native CPU experiment uses these options instead: + +```text +-O3 -march=native -cpp -ffixed-line-length-132 -ffpe-trap=invalid,zero,overflow -ffpe-summary=none -finit-real=zero +``` + +No simulator source or production compiler defaults were changed for this assessment. diff --git a/docs/work/2026-10-10/performance/baseline-time.txt b/docs/work/2026-10-10/performance/baseline-time.txt new file mode 100644 index 0000000..0ca1c87 --- /dev/null +++ b/docs/work/2026-10-10/performance/baseline-time.txt @@ -0,0 +1,2 @@ +61.76user 0.19system 1:03.43elapsed 97%CPU (0avgtext+0avgdata 41032maxresident)k +4160inputs+60347outputs (649major+10431minor)pagefaults 0swaps diff --git a/docs/work/2026-10-10/performance/gprof.txt b/docs/work/2026-10-10/performance/gprof.txt new file mode 100644 index 0000000..7e7fb2f --- /dev/null +++ b/docs/work/2026-10-10/performance/gprof.txt @@ -0,0 +1,1442 @@ +Flat profile: + +Each sample counts as 0.01 seconds. + % cumulative self self total + time seconds seconds calls s/call s/call name + 16.71 6.26 6.26 1443 0.00 0.00 swr_ + 10.25 10.10 3.84 7215 0.00 0.00 dv2uv_ + 9.55 13.68 3.58 1443 0.00 0.00 lwr_ + 6.94 16.28 2.60 1443 0.00 0.00 mkrain_ + 6.41 18.68 2.40 132758 0.00 0.00 sp2fc_ + 4.59 20.40 1.72 1443 0.00 0.00 kuo_ + 3.87 21.85 1.45 1443 0.00 0.00 vdiff_ + 3.42 23.13 1.28 1443 0.00 0.00 mkdca_ + 2.86 24.20 1.07 1443 0.00 0.00 mklsp_ + 2.38 25.09 0.89 33191 0.00 0.00 ifft2_ + 2.32 25.96 0.87 1443 0.00 0.00 calcgp_ + 2.27 26.81 0.85 1443 0.00 0.00 mktend_ + 2.22 27.64 0.83 73727 0.00 0.00 fc2sp_ + 2.11 28.43 0.79 33191 0.00 0.00 ifft4_ + 1.81 29.11 0.68 1443 0.00 0.00 mkclouds_ + 1.73 29.76 0.65 33191 0.00 0.00 ifft8_ + 1.65 30.38 0.62 1443 0.00 0.00 mkdheat_ + 1.60 30.98 0.60 24665 0.00 0.00 dfft8_ + 1.60 31.58 0.60 1443 0.00 0.00 mkshallow_ + 1.55 32.16 0.58 1440 0.00 0.00 outaccu_ + 1.28 32.64 0.48 24665 0.00 0.00 dfft4_ + 1.12 33.06 0.42 1443 0.00 0.02 gridpointd_ + 1.09 33.47 0.41 7438624 0.00 0.00 dfft2_ + 1.09 33.88 0.41 1443 0.00 0.00 seastep_ + 0.99 34.25 0.37 1443 0.00 0.00 tands_ + 0.96 34.61 0.36 1443 0.00 0.00 uv2dv_ + 0.93 34.96 0.35 1443 0.00 0.00 qtend_ + 0.83 35.27 0.31 1443 0.00 0.00 gridpointa_ + 0.83 35.58 0.31 1443 0.00 0.00 spectrala_ + 0.72 35.85 0.27 1440 0.00 0.00 icestep_ + 0.67 36.10 0.25 1443 0.00 0.01 radstep_ + 0.61 36.33 0.23 1443 0.00 0.00 fixer_ + 0.43 36.49 0.16 1443 0.00 0.00 mktsoil_ + 0.37 36.63 0.14 1443 0.00 0.00 spectrald_ + 0.27 36.73 0.10 1443 0.00 0.00 mkradv_ + 0.19 36.80 0.07 1443 0.00 0.00 surflx_ + 0.19 36.87 0.07 1440 0.00 0.00 mkice_ + 0.19 36.94 0.07 1440 0.00 0.00 subsnow_ + 0.16 37.00 0.06 1443 0.00 0.00 landstep_ + 0.16 37.06 0.06 _init + 0.13 37.11 0.05 1443 0.00 0.00 mkevap_ + 0.13 37.16 0.05 1443 0.00 0.00 sp2fcdmu_ + 0.13 37.21 0.05 1440 0.00 0.00 mksst_ + 0.11 37.25 0.04 1443 0.00 0.00 mkstress_ + 0.08 37.28 0.03 1443 0.00 0.00 mkshfl_ + 0.08 37.31 0.03 1441 0.00 0.00 iceget_ + 0.05 37.33 0.02 2926 0.00 0.00 seastop_ + 0.05 37.35 0.02 1443 0.00 0.00 carbonstep_ + 0.05 37.37 0.02 1443 0.00 0.00 mkdqtgp_ + 0.05 37.39 0.02 1440 0.00 0.00 oceanstep_ + 0.03 37.40 0.01 24665 0.00 0.00 gp2fc_ + 0.03 37.41 0.01 1444 0.00 0.00 surfstop_ + 0.03 37.42 0.01 1443 0.00 0.00 hurricanestep_ + 0.03 37.43 0.01 1443 0.00 0.00 roffstep_ + 0.03 37.44 0.01 1441 0.00 0.00 oceanget_ + 0.03 37.45 0.01 1440 0.00 0.00 mkcflux_ + 0.03 37.46 0.01 1440 0.00 0.00 skintemp_ + 0.03 37.47 0.01 1 0.01 0.01 oroini_ + 0.00 37.47 0.00 33191 0.00 0.00 fc2gp_ + 0.00 37.47 0.00 27417 0.00 0.00 mpgallsp_ + 0.00 37.47 0.00 17316 0.00 0.00 mpsumsc_ + 0.00 37.47 0.00 5767 0.00 0.00 momint_ + 0.00 37.47 0.00 4669 0.00 0.00 mpbci_ + 0.00 37.47 0.00 4329 0.00 0.00 sp2fl_ + 0.00 37.47 0.00 4241 0.00 0.00 mpgagp_ + 0.00 37.47 0.00 3370 0.00 0.00 ntomin_ + 0.00 37.47 0.00 3219 0.00 0.00 invlegd_ + 0.00 37.47 0.00 2893 0.00 0.00 mpscgp_ + 0.00 37.47 0.00 2883 0.00 0.00 mpsumbcr_ + 0.00 37.47 0.00 1530 0.00 0.00 mpwritegph_ + 0.00 37.47 0.00 1455 0.00 0.00 guihor_ + 0.00 37.47 0.00 1444 0.00 0.00 getalb_ + 0.00 37.47 0.00 1443 0.00 0.00 fluxstep_ + 0.00 37.47 0.00 1443 0.00 0.00 glacierstep_ + 0.00 37.47 0.00 1443 0.00 0.00 invlega_ + 0.00 37.47 0.00 1443 0.00 0.00 miscstep_ + 0.00 37.47 0.00 1443 0.00 0.00 mko3_ + 0.00 37.47 0.00 1443 0.00 0.00 orb_decl_ + 0.00 37.47 0.00 1443 0.00 0.01 rainstep_ + 0.00 37.47 0.00 1443 0.00 0.00 soilstep_ + 0.00 37.47 0.00 1443 0.00 0.00 solang_ + 0.00 37.47 0.00 1443 0.00 0.00 surfstep_ + 0.00 37.47 0.00 1442 0.00 0.00 fix1d_ + 0.00 37.47 0.00 1442 0.00 0.00 step2cal30_ + 0.00 37.47 0.00 1440 0.00 0.00 mkiflux_ + 0.00 37.47 0.00 1440 0.00 0.00 stability_check_ + 0.00 37.47 0.00 930 0.00 0.00 ql_ + 0.00 37.47 0.00 840 0.00 0.00 lubksb_ + 0.00 37.47 0.00 170 0.00 0.00 put_restart_array_ + 0.00 37.47 0.00 162 0.00 0.00 mpbcr_ + 0.00 37.47 0.00 158 0.00 0.00 mpputgp_ + 0.00 37.47 0.00 94 0.00 0.00 checkio_ + 0.00 37.47 0.00 84 0.00 0.00 ludcmp_ + 0.00 37.47 0.00 60 0.00 0.00 mpgacs_ + 0.00 37.47 0.00 60 0.00 0.00 writescalar_ + 0.00 37.47 0.00 55 0.00 0.00 ntodat_ + 0.00 37.47 0.00 53 0.00 0.00 guiput_ + 0.00 37.47 0.00 48 0.00 0.00 guid3dcol_ + 0.00 37.47 0.00 48 0.00 0.00 mpbcrn_ + 0.00 37.47 0.00 45 0.00 0.00 oceanout_ + 0.00 37.47 0.00 30 0.00 0.00 wrorb_ + 0.00 37.47 0.00 26 0.00 0.00 mpsum_ + 0.00 37.47 0.00 25 0.00 0.00 wrzs_ + 0.00 37.47 0.00 24 0.00 0.00 guigv_ + 0.00 37.47 0.00 24 0.00 0.00 guigvcol_ + 0.00 37.47 0.00 22 0.00 0.00 get_surf_array_ + 0.00 37.47 0.00 22 0.00 0.00 mpsurfgp_ + 0.00 37.47 0.00 22 0.00 0.00 surfcode_ + 0.00 37.47 0.00 13 0.00 0.00 put_restart_integer_ + 0.00 37.47 0.00 12 0.00 0.00 guigtcol_ + 0.00 37.47 0.00 12 0.00 0.00 guips_ + 0.00 37.47 0.00 11 0.00 0.00 mpscsp_ + 0.00 37.47 0.00 11 0.00 0.00 orb_print_ + 0.00 37.47 0.00 9 0.00 0.04 outgp_ + 0.00 37.47 0.00 9 0.00 0.00 outreset_ + 0.00 37.47 0.00 9 0.00 0.00 outsc_ + 0.00 37.47 0.00 9 0.00 0.02 outsp_ + 0.00 37.47 0.00 7 0.00 0.00 readdat_ + 0.00 37.47 0.00 6 0.00 0.00 mpscrn_ + 0.00 37.47 0.00 5 0.00 0.00 energy_ + 0.00 37.47 0.00 5 0.00 0.00 mpputsp_ + 0.00 37.47 0.00 5 0.00 0.00 xsect_ + 0.00 37.47 0.00 4 0.00 0.00 makebm_ + 0.00 37.47 0.00 3 0.00 0.00 finishup_ + 0.00 37.47 0.00 3 0.00 0.00 inigau_ + 0.00 37.47 0.00 3 0.00 0.06 snapshotgp_ + 0.00 37.47 0.00 3 0.00 0.00 snapshotsc_ + 0.00 37.47 0.00 3 0.00 0.02 snapshotsp_ + 0.00 37.47 0.00 3 0.00 0.00 write_short_ + 0.00 37.47 0.00 2 0.00 0.00 calini_ + 0.00 37.47 0.00 2 0.00 0.00 mpbcin_ + 0.00 37.47 0.00 2 0.00 0.00 mpscdn_ + 0.00 37.47 0.00 2 0.00 0.00 ompi_info_ + 0.00 37.47 0.00 1 0.00 0.00 allocate_arrays_ + 0.00 37.47 0.00 1 0.00 0.00 cal2step_ + 0.00 37.47 0.00 1 0.00 0.00 carbonini_ + 0.00 37.47 0.00 1 0.00 0.00 carbonstop_ + 0.00 37.47 0.00 1 0.00 0.00 epilog_ + 0.00 37.47 0.00 1 0.00 0.00 fluxini_ + 0.00 37.47 0.00 1 0.00 0.00 fluxstop_ + 0.00 37.47 0.00 1 0.00 0.01 glacierini_ + 0.00 37.47 0.00 1 0.00 0.00 glacierprep_ + 0.00 37.47 0.00 1 0.00 0.00 glacierstop_ + 0.00 37.47 0.00 1 0.00 0.00 guistart_ + 0.00 37.47 0.00 1 0.00 0.00 guistop_ + 0.00 37.47 0.00 1 0.00 0.00 hurricaneini_ + 0.00 37.47 0.00 1 0.00 0.00 hurricanestop_ + 0.00 37.47 0.00 1 0.00 0.00 iceini_ + 0.00 37.47 0.00 1 0.00 0.00 icestop_ + 0.00 37.47 0.00 1 0.00 0.00 initfd_ + 0.00 37.47 0.00 1 0.00 0.00 initpm_ + 0.00 37.47 0.00 1 0.00 0.00 initrandom_ + 0.00 37.47 0.00 1 0.00 0.00 initsi_ + 0.00 37.47 0.00 1 0.00 0.00 landini_ + 0.00 37.47 0.00 1 0.00 0.00 landstop_ + 0.00 37.47 0.00 1 0.00 0.00 legini_ + 0.00 37.47 0.00 1 0.00 0.00 make_ice_thickness_ + 0.00 37.47 0.00 1 0.00 0.00 makeareas_ + 0.00 37.47 0.00 1 0.00 37.40 master_ + 0.00 37.47 0.00 1 0.00 0.00 miscini_ + 0.00 37.47 0.00 1 0.00 0.00 miscstop_ + 0.00 37.47 0.00 1 0.00 0.00 mpmaxval_ + 0.00 37.47 0.00 1 0.00 0.00 mpscin_ + 0.00 37.47 0.00 1 0.00 0.00 mpstart_ + 0.00 37.47 0.00 1 0.00 0.00 mpstop_ + 0.00 37.47 0.00 1 0.00 0.00 mpsumval_ + 0.00 37.47 0.00 1 0.00 0.00 mrdimensions_ + 0.00 37.47 0.00 1 0.00 0.00 ncountsea_ + 0.00 37.47 0.00 1 0.00 0.00 noise_ + 0.00 37.47 0.00 1 0.00 0.00 oceanini_ + 0.00 37.47 0.00 1 0.00 0.00 oceanstop_ + 0.00 37.47 0.00 1 0.00 0.00 opendiag_ + 0.00 37.47 0.00 1 0.00 0.00 orb_params_ + 0.00 37.47 0.00 1 0.00 0.00 outini_ + 0.00 37.47 0.00 1 0.00 0.00 planet_ini_ + 0.00 37.47 0.00 1 0.00 0.00 print_planet_ + 0.00 37.47 0.00 1 0.00 0.00 printseed_ + 0.00 37.47 0.00 1 0.00 0.01 prolog_ + 0.00 37.47 0.00 1 0.00 0.00 put_restart_real_ + 0.00 37.47 0.00 1 0.00 0.00 put_restart_seed_ + 0.00 37.47 0.00 1 0.00 0.00 radini_ + 0.00 37.47 0.00 1 0.00 0.00 radstop_ + 0.00 37.47 0.00 1 0.00 0.00 rainini_ + 0.00 37.47 0.00 1 0.00 0.00 rainstop_ + 0.00 37.47 0.00 1 0.00 0.00 read_ice_surface_ + 0.00 37.47 0.00 1 0.00 0.00 readnl_ + 0.00 37.47 0.00 1 0.00 0.00 restart_ini_ + 0.00 37.47 0.00 1 0.00 0.00 restart_prepare_ + 0.00 37.47 0.00 1 0.00 0.00 restart_stop_ + 0.00 37.47 0.00 1 0.00 0.00 roffini_ + 0.00 37.47 0.00 1 0.00 0.00 seaini_ + 0.00 37.47 0.00 1 0.00 0.00 setfilenames_ + 0.00 37.47 0.00 1 0.00 0.00 setzt_ + 0.00 37.47 0.00 1 0.00 0.00 soilini_ + 0.00 37.47 0.00 1 0.00 0.00 surface_ini_ + 0.00 37.47 0.00 1 0.00 0.01 surfini_ + 0.00 37.47 0.00 1 0.00 0.00 tracer_ini0_ + 0.00 37.47 0.00 1 0.00 0.00 tracer_ini_ + 0.00 37.47 0.00 1 0.00 0.00 writegtextarray_ + + % the percentage of the total running time of the +time program used by this function. + +cumulative a running sum of the number of seconds accounted + seconds for by this function and those listed above it. + + self the number of seconds accounted for by this +seconds function alone. This is the major sort for this + listing. + +calls the number of times this function was invoked, if + this function is profiled, else blank. + + self the average number of milliseconds spent in this +ms/call function per call, if this function is profiled, + else blank. + + total the average number of milliseconds spent in this +ms/call function and its descendents per call, if this + function is profiled, else blank. + +name the name of the function. This is the minor sort + for this listing. The index shows the location of + the function in the gprof listing. If the index is + in parenthesis it shows where it would appear in + the gprof listing if it were to be printed. + +Copyright (C) 2012-2026 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + + Call graph (explanation follows) + + +granularity: each sample hit covers 4 byte(s) for 0.03% of 37.47 seconds + +index % time self children called name + +[1] 99.8 0.00 37.41 main [1] + 0.00 37.40 1/1 master_ [2] + 0.00 0.01 1/1 prolog_ [68] + 0.00 0.00 1/1 epilog_ [80] + 0.00 0.00 1/1 opendiag_ [176] + 0.00 0.00 1/1 setfilenames_ [194] + 0.00 0.00 1/1 mpstart_ [169] + 0.00 0.00 1/1 allocate_arrays_ [143] + 0.00 0.00 1/1 mpstop_ [170] +----------------------------------------------- + 0.00 37.40 1/1 main [1] +[2] 99.8 0.00 37.40 1 master_ [2] + 0.42 24.14 1443/1443 gridpointd_ [3] + 0.31 5.76 1443/1443 gridpointa_ [7] + 0.14 5.01 1443/1443 spectrald_ [8] + 0.58 0.00 1440/1440 outaccu_ [36] + 0.00 0.33 9/9 outgp_ [45] + 0.31 0.00 1443/1443 spectrala_ [46] + 0.00 0.19 3/3 snapshotgp_ [50] + 0.00 0.15 9/9 outsp_ [52] + 0.00 0.05 3/3 snapshotsp_ [59] + 0.00 0.00 1441/1442 step2cal30_ [97] + 0.00 0.00 1440/1440 stability_check_ [99] + 0.00 0.00 9/9 outreset_ [127] + 0.00 0.00 9/9 outsc_ [128] + 0.00 0.00 5/5 xsect_ [133] + 0.00 0.00 5/5 energy_ [131] + 0.00 0.00 4/4 makebm_ [134] + 0.00 0.00 3/3 snapshotsc_ [137] + 0.00 0.00 1/1 tracer_ini_ [199] +----------------------------------------------- + 0.42 24.14 1443/1443 master_ [2] +[3] 65.6 0.42 24.14 1443 gridpointd_ [3] + 0.25 9.84 1443/1443 radstep_ [4] + 0.00 8.33 1443/1443 rainstep_ [5] + 0.00 1.68 1443/1443 surfstep_ [17] + 0.00 1.64 1443/1443 fluxstep_ [18] + 0.00 0.59 1443/3219 invlegd_ [21] + 0.00 0.51 7215/33191 fc2gp_ [14] + 0.36 0.00 1443/1443 uv2dv_ [43] + 0.00 0.36 5892/24665 gp2fc_ [19] + 0.33 0.00 28980/73727 fc2sp_ [28] + 0.00 0.23 1443/1443 miscstep_ [48] + 0.02 0.00 1443/1443 carbonstep_ [67] + 0.01 0.00 1443/1443 hurricanestep_ [72] + 0.00 0.00 5772/17316 mpsumsc_ [82] + 0.00 0.00 1443/1455 guihor_ [90] + 0.00 0.00 12/26 mpsum_ [115] +----------------------------------------------- + 0.25 9.84 1443/1443 gridpointd_ [3] +[4] 26.9 0.25 9.84 1443 radstep_ [4] + 6.26 0.00 1443/1443 swr_ [6] + 3.58 0.00 1443/1443 lwr_ [11] + 0.00 0.00 1443/1443 solang_ [95] + 0.00 0.00 1443/1443 mko3_ [93] +----------------------------------------------- + 0.00 8.33 1443/1443 gridpointd_ [3] +[5] 22.2 0.00 8.33 1443 rainstep_ [5] + 2.60 0.00 1443/1443 mkrain_ [12] + 1.72 0.60 1443/1443 kuo_ [15] + 1.28 0.00 1443/1443 mkdca_ [22] + 1.07 0.00 1443/1443 mklsp_ [23] + 0.68 0.00 1443/1443 mkclouds_ [32] + 0.02 0.36 1443/1443 mkdqtgp_ [42] +----------------------------------------------- + 6.26 0.00 1443/1443 radstep_ [4] +[6] 16.7 6.26 0.00 1443 swr_ [6] +----------------------------------------------- + 0.31 5.76 1443/1443 master_ [2] +[7] 16.2 0.31 5.76 1443 gridpointa_ [7] + 0.00 1.89 1443/1443 invlega_ [16] + 0.00 0.91 12987/33191 fc2gp_ [14] + 0.01 0.87 14442/24665 gp2fc_ [19] + 0.87 0.00 1443/1443 calcgp_ [26] + 0.85 0.00 1443/1443 mktend_ [27] + 0.35 0.00 1443/1443 qtend_ [44] + 0.02 0.00 1455/73727 fc2sp_ [28] + 0.00 0.00 7215/17316 mpsumsc_ [82] + 0.00 0.00 72/4241 mpgagp_ [85] + 0.00 0.00 60/60 mpgacs_ [107] + 0.00 0.00 48/53 guiput_ [110] + 0.00 0.00 48/48 guid3dcol_ [111] + 0.00 0.00 24/24 guigv_ [117] + 0.00 0.00 24/24 guigvcol_ [118] + 0.00 0.00 12/12 guips_ [124] + 0.00 0.00 12/1455 guihor_ [90] + 0.00 0.00 12/26 mpsum_ [115] + 0.00 0.00 12/12 guigtcol_ [123] +----------------------------------------------- + 0.14 5.01 1443/1443 master_ [2] +[8] 13.7 0.14 5.01 1443 spectrald_ [8] + 0.62 4.39 1443/1443 mkdheat_ [9] + 0.00 0.00 7215/27417 mpgallsp_ [81] +----------------------------------------------- + 0.62 4.39 1443/1443 spectrald_ [8] +[9] 13.4 0.62 4.39 1443 mkdheat_ [9] + 2.30 0.00 4329/7215 dv2uv_ [10] + 0.00 0.81 11544/33191 fc2gp_ [14] + 0.00 0.52 2886/4329 sp2fl_ [30] + 0.49 0.00 43290/73727 fc2sp_ [28] + 0.00 0.26 4329/24665 gp2fc_ [19] + 0.00 0.00 11544/27417 mpgallsp_ [81] + 0.00 0.00 4329/17316 mpsumsc_ [82] +----------------------------------------------- + 0.77 0.00 1443/7215 invlega_ [16] + 0.77 0.00 1443/7215 invlegd_ [21] + 2.30 0.00 4329/7215 mkdheat_ [9] +[10] 10.2 3.84 0.00 7215 dv2uv_ [10] +----------------------------------------------- + 3.58 0.00 1443/1443 radstep_ [4] +[11] 9.6 3.58 0.00 1443 lwr_ [11] +----------------------------------------------- + 2.60 0.00 1443/1443 rainstep_ [5] +[12] 6.9 2.60 0.00 1443 mkrain_ [12] +----------------------------------------------- + 0.00 0.00 1/132758 surfini_ [69] + 0.00 0.00 1/132758 glacierini_ [70] + 0.55 0.00 30303/132758 invlegd_ [21] + 0.78 0.00 43290/132758 sp2fl_ [30] + 1.07 0.00 59163/132758 invlega_ [16] +[13] 6.4 2.40 0.00 132758 sp2fc_ [13] +----------------------------------------------- + 0.00 0.00 1/33191 surfini_ [69] + 0.00 0.00 1/33191 glacierini_ [70] + 0.00 0.10 1443/33191 mkdqtgp_ [42] + 0.00 0.51 7215/33191 gridpointd_ [3] + 0.00 0.81 11544/33191 mkdheat_ [9] + 0.00 0.91 12987/33191 gridpointa_ [7] +[14] 6.2 0.00 2.33 33191 fc2gp_ [14] + 0.89 0.00 33191/33191 ifft2_ [25] + 0.79 0.00 33191/33191 ifft4_ [29] + 0.65 0.00 33191/33191 ifft8_ [33] +----------------------------------------------- + 1.72 0.60 1443/1443 rainstep_ [5] +[15] 6.2 1.72 0.60 1443 kuo_ [15] + 0.60 0.00 1443/1443 mkshallow_ [35] +----------------------------------------------- + 0.00 1.89 1443/1443 gridpointa_ [7] +[16] 5.0 0.00 1.89 1443 invlega_ [16] + 1.07 0.00 59163/132758 sp2fc_ [13] + 0.77 0.00 1443/7215 dv2uv_ [10] + 0.05 0.00 1443/1443 sp2fcdmu_ [61] +----------------------------------------------- + 0.00 1.68 1443/1443 gridpointd_ [3] +[17] 4.5 0.00 1.68 1443 surfstep_ [17] + 0.41 0.56 1443/1443 seastep_ [24] + 0.06 0.65 1443/1443 landstep_ [31] + 0.00 0.00 1443/1443 glacierstep_ [92] +----------------------------------------------- + 0.00 1.64 1443/1443 gridpointd_ [3] +[18] 4.4 0.00 1.64 1443 fluxstep_ [18] + 1.45 0.00 1443/1443 vdiff_ [20] + 0.07 0.12 1443/1443 surflx_ [49] +----------------------------------------------- + 0.00 0.00 1/24665 surfini_ [69] + 0.00 0.00 1/24665 glacierini_ [70] + 0.00 0.26 4329/24665 mkdheat_ [9] + 0.00 0.36 5892/24665 gridpointd_ [3] + 0.01 0.87 14442/24665 gridpointa_ [7] +[19] 4.0 0.01 1.49 24665 gp2fc_ [19] + 0.60 0.00 24665/24665 dfft8_ [34] + 0.48 0.00 24665/24665 dfft4_ [40] + 0.41 0.00 7438624/7438624 dfft2_ [41] + 0.00 0.00 1/1 mrdimensions_ [172] +----------------------------------------------- + 1.45 0.00 1443/1443 fluxstep_ [18] +[20] 3.9 1.45 0.00 1443 vdiff_ [20] +----------------------------------------------- + 0.00 0.05 126/3219 snapshotsp_ [59] + 0.00 0.15 378/3219 outsp_ [52] + 0.00 0.19 462/3219 snapshotgp_ [50] + 0.00 0.33 810/3219 outgp_ [45] + 0.00 0.59 1443/3219 gridpointd_ [3] +[21] 3.5 0.00 1.32 3219 invlegd_ [21] + 0.77 0.00 1443/7215 dv2uv_ [10] + 0.55 0.00 30303/132758 sp2fc_ [13] + 0.00 0.00 1776/3370 ntomin_ [86] + 0.00 0.00 1272/4241 mpgagp_ [85] +----------------------------------------------- + 1.28 0.00 1443/1443 rainstep_ [5] +[22] 3.4 1.28 0.00 1443 mkdca_ [22] +----------------------------------------------- + 1.07 0.00 1443/1443 rainstep_ [5] +[23] 2.9 1.07 0.00 1443 mklsp_ [23] +----------------------------------------------- + 0.41 0.56 1443/1443 surfstep_ [17] +[24] 2.6 0.41 0.56 1443 seastep_ [24] + 0.27 0.29 1440/1440 icestep_ [37] +----------------------------------------------- + 0.89 0.00 33191/33191 fc2gp_ [14] +[25] 2.4 0.89 0.00 33191 ifft2_ [25] +----------------------------------------------- + 0.87 0.00 1443/1443 gridpointa_ [7] +[26] 2.3 0.87 0.00 1443 calcgp_ [26] +----------------------------------------------- + 0.85 0.00 1443/1443 gridpointa_ [7] +[27] 2.3 0.85 0.00 1443 mktend_ [27] +----------------------------------------------- + 0.00 0.00 1/73727 surfini_ [69] + 0.00 0.00 1/73727 glacierini_ [70] + 0.02 0.00 1455/73727 gridpointa_ [7] + 0.33 0.00 28980/73727 gridpointd_ [3] + 0.49 0.00 43290/73727 mkdheat_ [9] +[28] 2.2 0.83 0.00 73727 fc2sp_ [28] +----------------------------------------------- + 0.79 0.00 33191/33191 fc2gp_ [14] +[29] 2.1 0.79 0.00 33191 ifft4_ [29] +----------------------------------------------- + 0.00 0.26 1443/4329 mkdqtgp_ [42] + 0.00 0.52 2886/4329 mkdheat_ [9] +[30] 2.1 0.00 0.78 4329 sp2fl_ [30] + 0.78 0.00 43290/132758 sp2fc_ [13] +----------------------------------------------- + 0.06 0.65 1443/1443 surfstep_ [17] +[31] 1.9 0.06 0.65 1443 landstep_ [31] + 0.00 0.54 1443/1443 soilstep_ [38] + 0.01 0.10 1443/1443 roffstep_ [53] + 0.00 0.00 1443/1444 getalb_ [91] +----------------------------------------------- + 0.68 0.00 1443/1443 rainstep_ [5] +[32] 1.8 0.68 0.00 1443 mkclouds_ [32] +----------------------------------------------- + 0.65 0.00 33191/33191 fc2gp_ [14] +[33] 1.7 0.65 0.00 33191 ifft8_ [33] +----------------------------------------------- + 0.60 0.00 24665/24665 gp2fc_ [19] +[34] 1.6 0.60 0.00 24665 dfft8_ [34] +----------------------------------------------- + 0.60 0.00 1443/1443 kuo_ [15] +[35] 1.6 0.60 0.00 1443 mkshallow_ [35] +----------------------------------------------- + 0.58 0.00 1440/1440 master_ [2] +[36] 1.5 0.58 0.00 1440 outaccu_ [36] +----------------------------------------------- + 0.27 0.29 1440/1440 seastep_ [24] +[37] 1.5 0.27 0.29 1440 icestep_ [37] + 0.02 0.06 1440/1440 oceanstep_ [55] + 0.07 0.00 1440/1440 mkice_ [56] + 0.07 0.00 1440/1440 subsnow_ [57] + 0.03 0.00 1440/1441 iceget_ [65] + 0.02 0.00 2925/2926 seastop_ [66] + 0.01 0.00 1440/1440 skintemp_ [75] + 0.01 0.00 1440/1440 mkcflux_ [74] +----------------------------------------------- + 0.00 0.54 1443/1443 landstep_ [31] +[38] 1.4 0.00 0.54 1443 soilstep_ [38] + 0.37 0.16 1443/1443 tands_ [39] + 0.01 0.00 1443/1444 surfstop_ [71] +----------------------------------------------- + 0.37 0.16 1443/1443 soilstep_ [38] +[39] 1.4 0.37 0.16 1443 tands_ [39] + 0.16 0.00 1443/1443 mktsoil_ [51] +----------------------------------------------- + 0.48 0.00 24665/24665 gp2fc_ [19] +[40] 1.3 0.48 0.00 24665 dfft4_ [40] +----------------------------------------------- + 0.41 0.00 7438624/7438624 gp2fc_ [19] +[41] 1.1 0.41 0.00 7438624 dfft2_ [41] +----------------------------------------------- + 0.02 0.36 1443/1443 rainstep_ [5] +[42] 1.0 0.02 0.36 1443 mkdqtgp_ [42] + 0.00 0.26 1443/4329 sp2fl_ [30] + 0.00 0.10 1443/33191 fc2gp_ [14] + 0.00 0.00 1443/27417 mpgallsp_ [81] +----------------------------------------------- + 0.36 0.00 1443/1443 gridpointd_ [3] +[43] 1.0 0.36 0.00 1443 uv2dv_ [43] +----------------------------------------------- + 0.35 0.00 1443/1443 gridpointa_ [7] +[44] 0.9 0.35 0.00 1443 qtend_ [44] +----------------------------------------------- + 0.00 0.33 9/9 master_ [2] +[45] 0.9 0.00 0.33 9 outgp_ [45] + 0.00 0.33 810/3219 invlegd_ [21] +----------------------------------------------- + 0.31 0.00 1443/1443 master_ [2] +[46] 0.8 0.31 0.00 1443 spectrala_ [46] + 0.00 0.00 7215/27417 mpgallsp_ [81] +----------------------------------------------- + 0.23 0.00 1443/1443 miscstep_ [48] +[47] 0.6 0.23 0.00 1443 fixer_ [47] + 0.00 0.00 1443/2883 mpsumbcr_ [88] + 0.00 0.00 1442/1442 fix1d_ [96] +----------------------------------------------- + 0.00 0.23 1443/1443 gridpointd_ [3] +[48] 0.6 0.00 0.23 1443 miscstep_ [48] + 0.23 0.00 1443/1443 fixer_ [47] +----------------------------------------------- + 0.07 0.12 1443/1443 fluxstep_ [18] +[49] 0.5 0.07 0.12 1443 surflx_ [49] + 0.05 0.00 1443/1443 mkevap_ [60] + 0.04 0.00 1443/1443 mkstress_ [63] + 0.03 0.00 1443/1443 mkshfl_ [64] +----------------------------------------------- + 0.00 0.19 3/3 master_ [2] +[50] 0.5 0.00 0.19 3 snapshotgp_ [50] + 0.00 0.19 462/3219 invlegd_ [21] +----------------------------------------------- + 0.16 0.00 1443/1443 tands_ [39] +[51] 0.4 0.16 0.00 1443 mktsoil_ [51] +----------------------------------------------- + 0.00 0.15 9/9 master_ [2] +[52] 0.4 0.00 0.15 9 outsp_ [52] + 0.00 0.15 378/3219 invlegd_ [21] +----------------------------------------------- + 0.01 0.10 1443/1443 landstep_ [31] +[53] 0.3 0.01 0.10 1443 roffstep_ [53] + 0.10 0.00 1443/1443 mkradv_ [54] +----------------------------------------------- + 0.10 0.00 1443/1443 roffstep_ [53] +[54] 0.3 0.10 0.00 1443 mkradv_ [54] + 0.00 0.00 2886/4241 mpgagp_ [85] + 0.00 0.00 2886/2893 mpscgp_ [87] +----------------------------------------------- + 0.02 0.06 1440/1440 icestep_ [37] +[55] 0.2 0.02 0.06 1440 oceanstep_ [55] + 0.05 0.00 1440/1440 mksst_ [62] + 0.01 0.00 1440/1441 oceanget_ [73] + 0.00 0.00 45/45 oceanout_ [113] +----------------------------------------------- + 0.07 0.00 1440/1440 icestep_ [37] +[56] 0.2 0.07 0.00 1440 mkice_ [56] +----------------------------------------------- + 0.07 0.00 1440/1440 icestep_ [37] +[57] 0.2 0.07 0.00 1440 subsnow_ [57] +----------------------------------------------- + +[58] 0.2 0.06 0.00 _init [58] +----------------------------------------------- + 0.00 0.05 3/3 master_ [2] +[59] 0.1 0.00 0.05 3 snapshotsp_ [59] + 0.00 0.05 126/3219 invlegd_ [21] +----------------------------------------------- + 0.05 0.00 1443/1443 surflx_ [49] +[60] 0.1 0.05 0.00 1443 mkevap_ [60] +----------------------------------------------- + 0.05 0.00 1443/1443 invlega_ [16] +[61] 0.1 0.05 0.00 1443 sp2fcdmu_ [61] +----------------------------------------------- + 0.05 0.00 1440/1440 oceanstep_ [55] +[62] 0.1 0.05 0.00 1440 mksst_ [62] + 0.00 0.00 1440/1440 mkiflux_ [98] +----------------------------------------------- + 0.04 0.00 1443/1443 surflx_ [49] +[63] 0.1 0.04 0.00 1443 mkstress_ [63] +----------------------------------------------- + 0.03 0.00 1443/1443 surflx_ [49] +[64] 0.1 0.03 0.00 1443 mkshfl_ [64] +----------------------------------------------- + 0.00 0.00 1/1441 iceini_ [77] + 0.03 0.00 1440/1441 icestep_ [37] +[65] 0.1 0.03 0.00 1441 iceget_ [65] + 0.00 0.00 2882/5767 momint_ [83] +----------------------------------------------- + 0.00 0.00 1/2926 surfstop_ [71] + 0.02 0.00 2925/2926 icestep_ [37] +[66] 0.1 0.02 0.00 2926 seastop_ [66] + 0.00 0.00 1440/2883 mpsumbcr_ [88] + 0.00 0.00 1080/1530 mpwritegph_ [89] + 0.00 0.00 45/3370 ntomin_ [86] + 0.00 0.00 14/158 mpputgp_ [104] + 0.00 0.00 1/1 icestop_ [155] + 0.00 0.00 1/13 put_restart_integer_ [122] +----------------------------------------------- + 0.02 0.00 1443/1443 gridpointd_ [3] +[67] 0.1 0.02 0.00 1443 carbonstep_ [67] + 0.00 0.00 1623/4669 mpbci_ [84] +----------------------------------------------- + 0.00 0.01 1/1 main [1] +[68] 0.0 0.00 0.01 1 prolog_ [68] + 0.00 0.01 1/1 surfini_ [69] + 0.00 0.00 72/4669 mpbci_ [84] + 0.00 0.00 43/162 mpbcr_ [103] + 0.00 0.00 23/48 mpbcrn_ [112] + 0.00 0.00 8/11 mpscsp_ [125] + 0.00 0.00 2/2 mpscdn_ [141] + 0.00 0.00 2/6 mpscrn_ [130] + 0.00 0.00 2/2 mpbcin_ [140] + 0.00 0.00 1/1 planet_ini_ [179] + 0.00 0.00 1/1 mpscin_ [168] + 0.00 0.00 1/2 calini_ [139] + 0.00 0.00 1/1442 step2cal30_ [97] + 0.00 0.00 1/1 legini_ [162] + 0.00 0.00 1/1 fluxini_ [147] + 0.00 0.00 1/1 miscini_ [165] + 0.00 0.00 1/1 carbonini_ [145] + 0.00 0.00 1/1 radini_ [184] + 0.00 0.00 1/1 rainini_ [186] + 0.00 0.00 1/1 hurricaneini_ [153] + 0.00 0.00 1/1 outini_ [178] + 0.00 0.00 1/1 initfd_ [156] + 0.00 0.00 1/1 print_planet_ [180] + 0.00 0.00 1/1 restart_ini_ [190] + 0.00 0.00 1/1 surface_ini_ [197] + 0.00 0.00 1/3 inigau_ [136] + 0.00 0.00 1/1 readnl_ [189] + 0.00 0.00 1/7 readdat_ [129] + 0.00 0.00 1/1 guistart_ [151] + 0.00 0.00 1/1 initsi_ [159] + 0.00 0.00 1/1 initpm_ [157] + 0.00 0.00 1/1 tracer_ini0_ [198] +----------------------------------------------- + 0.00 0.01 1/1 prolog_ [68] +[69] 0.0 0.00 0.01 1 surfini_ [69] + 0.00 0.01 1/1 glacierini_ [70] + 0.00 0.00 1/33191 fc2gp_ [14] + 0.00 0.00 1/24665 gp2fc_ [19] + 0.00 0.00 1/1 seaini_ [78] + 0.00 0.00 1/132758 sp2fc_ [13] + 0.00 0.00 1/73727 fc2sp_ [28] + 0.00 0.00 2/22 mpsurfgp_ [120] + 0.00 0.00 1/1 glacierprep_ [149] + 0.00 0.00 1/4669 mpbci_ [84] + 0.00 0.00 1/1 landini_ [160] + 0.00 0.00 1/26 mpsum_ [115] + 0.00 0.00 1/11 mpscsp_ [125] +----------------------------------------------- + 0.00 0.01 1/1 surfini_ [69] +[70] 0.0 0.00 0.01 1 glacierini_ [70] + 0.01 0.00 1/1 oroini_ [76] + 0.00 0.00 1/33191 fc2gp_ [14] + 0.00 0.00 1/24665 gp2fc_ [19] + 0.00 0.00 1/132758 sp2fc_ [13] + 0.00 0.00 1/73727 fc2sp_ [28] + 0.00 0.00 2/4241 mpgagp_ [85] + 0.00 0.00 1/26 mpsum_ [115] + 0.00 0.00 1/11 mpscsp_ [125] + 0.00 0.00 1/22 mpsurfgp_ [120] +----------------------------------------------- + 0.00 0.00 1/1444 epilog_ [80] + 0.01 0.00 1443/1444 soilstep_ [38] +[71] 0.0 0.01 0.00 1444 surfstop_ [71] + 0.00 0.00 1/2926 seastop_ [66] + 0.00 0.00 1/1 glacierstop_ [150] + 0.00 0.00 1/1 landstop_ [161] +----------------------------------------------- + 0.01 0.00 1443/1443 gridpointd_ [3] +[72] 0.0 0.01 0.00 1443 hurricanestep_ [72] + 0.00 0.00 2886/4669 mpbci_ [84] +----------------------------------------------- + 0.00 0.00 1/1441 oceanini_ [79] + 0.01 0.00 1440/1441 oceanstep_ [55] +[73] 0.0 0.01 0.00 1441 oceanget_ [73] + 0.00 0.00 1441/5767 momint_ [83] +----------------------------------------------- + 0.01 0.00 1440/1440 icestep_ [37] +[74] 0.0 0.01 0.00 1440 mkcflux_ [74] +----------------------------------------------- + 0.01 0.00 1440/1440 icestep_ [37] +[75] 0.0 0.01 0.00 1440 skintemp_ [75] +----------------------------------------------- + 0.01 0.00 1/1 glacierini_ [70] +[76] 0.0 0.01 0.00 1 oroini_ [76] + 0.00 0.00 4/4241 mpgagp_ [85] + 0.00 0.00 2/2893 mpscgp_ [87] +----------------------------------------------- + 0.00 0.00 1/1 seaini_ [78] +[77] 0.0 0.00 0.00 1 iceini_ [77] + 0.00 0.00 1/1441 iceget_ [65] + 0.00 0.00 1/1 oceanini_ [79] + 0.00 0.00 14/4669 mpbci_ [84] + 0.00 0.00 5/162 mpbcr_ [103] + 0.00 0.00 1/2893 mpscgp_ [87] + 0.00 0.00 1/2 ompi_info_ [142] + 0.00 0.00 1/1 read_ice_surface_ [188] + 0.00 0.00 1/3 inigau_ [136] +----------------------------------------------- + 0.00 0.00 1/1 surfini_ [69] +[78] 0.0 0.00 0.00 1 seaini_ [78] + 0.00 0.00 1/1 iceini_ [77] + 0.00 0.00 7/162 mpbcr_ [103] + 0.00 0.00 3/48 mpbcrn_ [112] + 0.00 0.00 1/4669 mpbci_ [84] +----------------------------------------------- + 0.00 0.00 1/1 iceini_ [77] +[79] 0.0 0.00 0.00 1 oceanini_ [79] + 0.00 0.00 1/1441 oceanget_ [73] + 0.00 0.00 13/4669 mpbci_ [84] + 0.00 0.00 4/162 mpbcr_ [103] + 0.00 0.00 4/6 mpscrn_ [130] + 0.00 0.00 3/48 mpbcrn_ [112] + 0.00 0.00 2/22 mpsurfgp_ [120] + 0.00 0.00 1/2 ompi_info_ [142] + 0.00 0.00 1/2893 mpscgp_ [87] + 0.00 0.00 1/3 inigau_ [136] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[80] 0.0 0.00 0.00 1 epilog_ [80] + 0.00 0.00 1/1444 surfstop_ [71] + 0.00 0.00 79/158 mpputgp_ [104] + 0.00 0.00 7/170 put_restart_array_ [102] + 0.00 0.00 6/13 put_restart_integer_ [122] + 0.00 0.00 5/5 mpputsp_ [132] + 0.00 0.00 1/1 miscstop_ [166] + 0.00 0.00 1/1 guistop_ [152] + 0.00 0.00 1/1 rainstop_ [187] + 0.00 0.00 1/1 radstop_ [185] + 0.00 0.00 1/1 fluxstop_ [148] + 0.00 0.00 1/1 carbonstop_ [146] + 0.00 0.00 1/1 hurricanestop_ [154] + 0.00 0.00 1/1 restart_prepare_ [191] + 0.00 0.00 1/1 put_restart_seed_ [183] + 0.00 0.00 1/1 restart_stop_ [192] +----------------------------------------------- + 0.00 0.00 1443/27417 mkdqtgp_ [42] + 0.00 0.00 7215/27417 spectrala_ [46] + 0.00 0.00 7215/27417 spectrald_ [8] + 0.00 0.00 11544/27417 mkdheat_ [9] +[81] 0.0 0.00 0.00 27417 mpgallsp_ [81] +----------------------------------------------- + 0.00 0.00 4329/17316 mkdheat_ [9] + 0.00 0.00 5772/17316 gridpointd_ [3] + 0.00 0.00 7215/17316 gridpointa_ [7] +[82] 0.0 0.00 0.00 17316 mpsumsc_ [82] +----------------------------------------------- + 0.00 0.00 1441/5767 oceanget_ [73] + 0.00 0.00 1444/5767 getalb_ [91] + 0.00 0.00 2882/5767 iceget_ [65] +[83] 0.0 0.00 0.00 5767 momint_ [83] +----------------------------------------------- + 0.00 0.00 1/4669 carbonstop_ [146] + 0.00 0.00 1/4669 surfini_ [69] + 0.00 0.00 1/4669 seaini_ [78] + 0.00 0.00 2/4669 miscini_ [165] + 0.00 0.00 2/4669 glacierprep_ [149] + 0.00 0.00 3/4669 carbonini_ [145] + 0.00 0.00 5/4669 fluxini_ [147] + 0.00 0.00 5/4669 landini_ [160] + 0.00 0.00 10/4669 hurricaneini_ [153] + 0.00 0.00 11/4669 rainini_ [186] + 0.00 0.00 13/4669 oceanini_ [79] + 0.00 0.00 14/4669 iceini_ [77] + 0.00 0.00 20/4669 radini_ [184] + 0.00 0.00 72/4669 prolog_ [68] + 0.00 0.00 1623/4669 carbonstep_ [67] + 0.00 0.00 2886/4669 hurricanestep_ [72] +[84] 0.0 0.00 0.00 4669 mpbci_ [84] +----------------------------------------------- + 0.00 0.00 1/4241 carbonstop_ [146] + 0.00 0.00 1/4241 make_ice_thickness_ [163] + 0.00 0.00 2/4241 glacierini_ [70] + 0.00 0.00 3/4241 roffini_ [193] + 0.00 0.00 4/4241 oroini_ [76] + 0.00 0.00 72/4241 gridpointa_ [7] + 0.00 0.00 1272/4241 invlegd_ [21] + 0.00 0.00 2886/4241 mkradv_ [54] +[85] 0.0 0.00 0.00 4241 mpgagp_ [85] +----------------------------------------------- + 0.00 0.00 1/3370 outini_ [178] + 0.00 0.00 45/3370 seastop_ [66] + 0.00 0.00 45/3370 oceanout_ [113] + 0.00 0.00 60/3370 writescalar_ [108] + 0.00 0.00 1443/3370 solang_ [95] + 0.00 0.00 1776/3370 invlegd_ [21] +[86] 0.0 0.00 0.00 3370 ntomin_ [86] +----------------------------------------------- + 0.00 0.00 1/2893 make_ice_thickness_ [163] + 0.00 0.00 1/2893 iceini_ [77] + 0.00 0.00 1/2893 oceanini_ [79] + 0.00 0.00 2/2893 roffini_ [193] + 0.00 0.00 2/2893 oroini_ [76] + 0.00 0.00 2886/2893 mkradv_ [54] +[87] 0.0 0.00 0.00 2893 mpscgp_ [87] +----------------------------------------------- + 0.00 0.00 1440/2883 seastop_ [66] + 0.00 0.00 1443/2883 fixer_ [47] +[88] 0.0 0.00 0.00 2883 mpsumbcr_ [88] +----------------------------------------------- + 0.00 0.00 450/1530 oceanout_ [113] + 0.00 0.00 1080/1530 seastop_ [66] +[89] 0.0 0.00 0.00 1530 mpwritegph_ [89] +----------------------------------------------- + 0.00 0.00 12/1455 gridpointa_ [7] + 0.00 0.00 1443/1455 gridpointd_ [3] +[90] 0.0 0.00 0.00 1455 guihor_ [90] +----------------------------------------------- + 0.00 0.00 1/1444 landini_ [160] + 0.00 0.00 1443/1444 landstep_ [31] +[91] 0.0 0.00 0.00 1444 getalb_ [91] + 0.00 0.00 1444/5767 momint_ [83] +----------------------------------------------- + 0.00 0.00 1443/1443 surfstep_ [17] +[92] 0.0 0.00 0.00 1443 glacierstep_ [92] +----------------------------------------------- + 0.00 0.00 1443/1443 radstep_ [4] +[93] 0.0 0.00 0.00 1443 mko3_ [93] +----------------------------------------------- + 0.00 0.00 1443/1443 solang_ [95] +[94] 0.0 0.00 0.00 1443 orb_decl_ [94] +----------------------------------------------- + 0.00 0.00 1443/1443 radstep_ [4] +[95] 0.0 0.00 0.00 1443 solang_ [95] + 0.00 0.00 1443/3370 ntomin_ [86] + 0.00 0.00 1443/1443 orb_decl_ [94] +----------------------------------------------- + 0.00 0.00 1442/1442 fixer_ [47] +[96] 0.0 0.00 0.00 1442 fix1d_ [96] +----------------------------------------------- + 0.00 0.00 1/1442 prolog_ [68] + 0.00 0.00 1441/1442 master_ [2] +[97] 0.0 0.00 0.00 1442 step2cal30_ [97] +----------------------------------------------- + 0.00 0.00 1440/1440 mksst_ [62] +[98] 0.0 0.00 0.00 1440 mkiflux_ [98] +----------------------------------------------- + 0.00 0.00 1440/1440 master_ [2] +[99] 0.0 0.00 0.00 1440 stability_check_ [99] +----------------------------------------------- + 0.00 0.00 930/930 inigau_ [136] +[100] 0.0 0.00 0.00 930 ql_ [100] +----------------------------------------------- + 0.00 0.00 840/840 makebm_ [134] +[101] 0.0 0.00 0.00 840 lubksb_ [101] +----------------------------------------------- + 0.00 0.00 5/170 mpputsp_ [132] + 0.00 0.00 7/170 epilog_ [80] + 0.00 0.00 158/170 mpputgp_ [104] +[102] 0.0 0.00 0.00 170 put_restart_array_ [102] +----------------------------------------------- + 0.00 0.00 1/162 miscini_ [165] + 0.00 0.00 2/162 glacierprep_ [149] + 0.00 0.00 4/162 carbonstop_ [146] + 0.00 0.00 4/162 oceanini_ [79] + 0.00 0.00 5/162 fluxini_ [147] + 0.00 0.00 5/162 iceini_ [77] + 0.00 0.00 7/162 seaini_ [78] + 0.00 0.00 8/162 rainini_ [186] + 0.00 0.00 10/162 carbonini_ [145] + 0.00 0.00 12/162 hurricaneini_ [153] + 0.00 0.00 28/162 radini_ [184] + 0.00 0.00 33/162 landini_ [160] + 0.00 0.00 43/162 prolog_ [68] +[103] 0.0 0.00 0.00 162 mpbcr_ [103] +----------------------------------------------- + 0.00 0.00 1/158 radstop_ [185] + 0.00 0.00 4/158 glacierstop_ [150] + 0.00 0.00 11/158 oceanstop_ [175] + 0.00 0.00 14/158 seastop_ [66] + 0.00 0.00 18/158 landstop_ [161] + 0.00 0.00 31/158 icestop_ [155] + 0.00 0.00 79/158 epilog_ [80] +[104] 0.0 0.00 0.00 158 mpputgp_ [104] + 0.00 0.00 158/170 put_restart_array_ [102] +----------------------------------------------- + 0.00 0.00 94/94 get_surf_array_ [119] +[105] 0.0 0.00 0.00 94 checkio_ [105] +----------------------------------------------- + 0.00 0.00 84/84 makebm_ [134] +[106] 0.0 0.00 0.00 84 ludcmp_ [106] +----------------------------------------------- + 0.00 0.00 60/60 gridpointa_ [7] +[107] 0.0 0.00 0.00 60 mpgacs_ [107] +----------------------------------------------- + 0.00 0.00 15/60 snapshotsc_ [137] + 0.00 0.00 45/60 outsc_ [128] +[108] 0.0 0.00 0.00 60 writescalar_ [108] + 0.00 0.00 60/3370 ntomin_ [86] +----------------------------------------------- + 0.00 0.00 25/55 wrzs_ [116] + 0.00 0.00 30/55 wrorb_ [114] +[109] 0.0 0.00 0.00 55 ntodat_ [109] +----------------------------------------------- + 0.00 0.00 5/53 energy_ [131] + 0.00 0.00 48/53 gridpointa_ [7] +[110] 0.0 0.00 0.00 53 guiput_ [110] +----------------------------------------------- + 0.00 0.00 48/48 gridpointa_ [7] +[111] 0.0 0.00 0.00 48 guid3dcol_ [111] +----------------------------------------------- + 0.00 0.00 2/48 rainini_ [186] + 0.00 0.00 3/48 seaini_ [78] + 0.00 0.00 3/48 oceanini_ [79] + 0.00 0.00 6/48 landini_ [160] + 0.00 0.00 11/48 radini_ [184] + 0.00 0.00 23/48 prolog_ [68] +[112] 0.0 0.00 0.00 48 mpbcrn_ [112] +----------------------------------------------- + 0.00 0.00 45/45 oceanstep_ [55] +[113] 0.0 0.00 0.00 45 oceanout_ [113] + 0.00 0.00 450/1530 mpwritegph_ [89] + 0.00 0.00 45/3370 ntomin_ [86] +----------------------------------------------- + 0.00 0.00 30/30 xsect_ [133] +[114] 0.0 0.00 0.00 30 wrorb_ [114] + 0.00 0.00 30/55 ntodat_ [109] +----------------------------------------------- + 0.00 0.00 1/26 surfini_ [69] + 0.00 0.00 1/26 glacierini_ [70] + 0.00 0.00 12/26 gridpointd_ [3] + 0.00 0.00 12/26 gridpointa_ [7] +[115] 0.0 0.00 0.00 26 mpsum_ [115] +----------------------------------------------- + 0.00 0.00 25/25 xsect_ [133] +[116] 0.0 0.00 0.00 25 wrzs_ [116] + 0.00 0.00 25/55 ntodat_ [109] +----------------------------------------------- + 0.00 0.00 24/24 gridpointa_ [7] +[117] 0.0 0.00 0.00 24 guigv_ [117] +----------------------------------------------- + 0.00 0.00 24/24 gridpointa_ [7] +[118] 0.0 0.00 0.00 24 guigvcol_ [118] +----------------------------------------------- + 0.00 0.00 22/22 mpsurfgp_ [120] +[119] 0.0 0.00 0.00 22 get_surf_array_ [119] + 0.00 0.00 94/94 checkio_ [105] +----------------------------------------------- + 0.00 0.00 1/22 glacierini_ [70] + 0.00 0.00 2/22 surfini_ [69] + 0.00 0.00 2/22 oceanini_ [79] + 0.00 0.00 4/22 read_ice_surface_ [188] + 0.00 0.00 13/22 landini_ [160] +[120] 0.0 0.00 0.00 22 mpsurfgp_ [120] + 0.00 0.00 22/22 get_surf_array_ [119] +----------------------------------------------- + 0.00 0.00 22/22 surface_ini_ [197] +[121] 0.0 0.00 0.00 22 surfcode_ [121] +----------------------------------------------- + 0.00 0.00 1/13 landstop_ [161] + 0.00 0.00 1/13 seastop_ [66] + 0.00 0.00 2/13 oceanstop_ [175] + 0.00 0.00 3/13 icestop_ [155] + 0.00 0.00 6/13 epilog_ [80] +[122] 0.0 0.00 0.00 13 put_restart_integer_ [122] +----------------------------------------------- + 0.00 0.00 12/12 gridpointa_ [7] +[123] 0.0 0.00 0.00 12 guigtcol_ [123] +----------------------------------------------- + 0.00 0.00 12/12 gridpointa_ [7] +[124] 0.0 0.00 0.00 12 guips_ [124] +----------------------------------------------- + 0.00 0.00 1/11 initfd_ [156] + 0.00 0.00 1/11 surfini_ [69] + 0.00 0.00 1/11 glacierini_ [70] + 0.00 0.00 8/11 prolog_ [68] +[125] 0.0 0.00 0.00 11 mpscsp_ [125] +----------------------------------------------- + 0.00 0.00 11/11 surface_ini_ [197] +[126] 0.0 0.00 0.00 11 orb_print_ [126] +----------------------------------------------- + 0.00 0.00 9/9 master_ [2] +[127] 0.0 0.00 0.00 9 outreset_ [127] +----------------------------------------------- + 0.00 0.00 9/9 master_ [2] +[128] 0.0 0.00 0.00 9 outsc_ [128] + 0.00 0.00 45/60 writescalar_ [108] +----------------------------------------------- + 0.00 0.00 1/7 prolog_ [68] + 0.00 0.00 6/7 initpm_ [157] +[129] 0.0 0.00 0.00 7 readdat_ [129] +----------------------------------------------- + 0.00 0.00 2/6 prolog_ [68] + 0.00 0.00 4/6 oceanini_ [79] +[130] 0.0 0.00 0.00 6 mpscrn_ [130] +----------------------------------------------- + 0.00 0.00 5/5 master_ [2] +[131] 0.0 0.00 0.00 5 energy_ [131] + 0.00 0.00 5/53 guiput_ [110] +----------------------------------------------- + 0.00 0.00 5/5 epilog_ [80] +[132] 0.0 0.00 0.00 5 mpputsp_ [132] + 0.00 0.00 5/170 put_restart_array_ [102] +----------------------------------------------- + 0.00 0.00 5/5 master_ [2] +[133] 0.0 0.00 0.00 5 xsect_ [133] + 0.00 0.00 30/30 wrorb_ [114] + 0.00 0.00 25/25 wrzs_ [116] +----------------------------------------------- + 0.00 0.00 4/4 master_ [2] +[134] 0.0 0.00 0.00 4 makebm_ [134] + 0.00 0.00 840/840 lubksb_ [101] + 0.00 0.00 84/84 ludcmp_ [106] +----------------------------------------------- + 0.00 0.00 1/3 icestop_ [155] + 0.00 0.00 2/3 glacierstop_ [150] +[135] 0.0 0.00 0.00 3 finishup_ [135] +----------------------------------------------- + 0.00 0.00 1/3 prolog_ [68] + 0.00 0.00 1/3 iceini_ [77] + 0.00 0.00 1/3 oceanini_ [79] +[136] 0.0 0.00 0.00 3 inigau_ [136] + 0.00 0.00 930/930 ql_ [100] +----------------------------------------------- + 0.00 0.00 3/3 master_ [2] +[137] 0.0 0.00 0.00 3 snapshotsc_ [137] + 0.00 0.00 15/60 writescalar_ [108] +----------------------------------------------- + 0.00 0.00 3/3 carbonstop_ [146] +[138] 0.0 0.00 0.00 3 write_short_ [138] +----------------------------------------------- + 0.00 0.00 1/2 readnl_ [189] + 0.00 0.00 1/2 prolog_ [68] +[139] 0.0 0.00 0.00 2 calini_ [139] +----------------------------------------------- + 0.00 0.00 2/2 prolog_ [68] +[140] 0.0 0.00 0.00 2 mpbcin_ [140] +----------------------------------------------- + 0.00 0.00 2/2 prolog_ [68] +[141] 0.0 0.00 0.00 2 mpscdn_ [141] +----------------------------------------------- + 0.00 0.00 1/2 iceini_ [77] + 0.00 0.00 1/2 oceanini_ [79] +[142] 0.0 0.00 0.00 2 ompi_info_ [142] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[143] 0.0 0.00 0.00 1 allocate_arrays_ [143] +----------------------------------------------- + 0.00 0.00 1/1 readnl_ [189] +[144] 0.0 0.00 0.00 1 cal2step_ [144] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[145] 0.0 0.00 0.00 1 carbonini_ [145] + 0.00 0.00 10/162 mpbcr_ [103] + 0.00 0.00 3/4669 mpbci_ [84] + 0.00 0.00 1/1 makeareas_ [164] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[146] 0.0 0.00 0.00 1 carbonstop_ [146] + 0.00 0.00 4/162 mpbcr_ [103] + 0.00 0.00 3/3 write_short_ [138] + 0.00 0.00 1/4241 mpgagp_ [85] + 0.00 0.00 1/4669 mpbci_ [84] + 0.00 0.00 1/1 writegtextarray_ [200] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[147] 0.0 0.00 0.00 1 fluxini_ [147] + 0.00 0.00 5/4669 mpbci_ [84] + 0.00 0.00 5/162 mpbcr_ [103] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[148] 0.0 0.00 0.00 1 fluxstop_ [148] +----------------------------------------------- + 0.00 0.00 1/1 surfini_ [69] +[149] 0.0 0.00 0.00 1 glacierprep_ [149] + 0.00 0.00 2/4669 mpbci_ [84] + 0.00 0.00 2/162 mpbcr_ [103] +----------------------------------------------- + 0.00 0.00 1/1 surfstop_ [71] +[150] 0.0 0.00 0.00 1 glacierstop_ [150] + 0.00 0.00 4/158 mpputgp_ [104] + 0.00 0.00 2/3 finishup_ [135] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[151] 0.0 0.00 0.00 1 guistart_ [151] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[152] 0.0 0.00 0.00 1 guistop_ [152] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[153] 0.0 0.00 0.00 1 hurricaneini_ [153] + 0.00 0.00 12/162 mpbcr_ [103] + 0.00 0.00 10/4669 mpbci_ [84] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[154] 0.0 0.00 0.00 1 hurricanestop_ [154] +----------------------------------------------- + 0.00 0.00 1/1 seastop_ [66] +[155] 0.0 0.00 0.00 1 icestop_ [155] + 0.00 0.00 31/158 mpputgp_ [104] + 0.00 0.00 3/13 put_restart_integer_ [122] + 0.00 0.00 1/1 oceanstop_ [175] + 0.00 0.00 1/3 finishup_ [135] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[156] 0.0 0.00 0.00 1 initfd_ [156] + 0.00 0.00 1/11 mpscsp_ [125] + 0.00 0.00 1/1 setzt_ [195] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[157] 0.0 0.00 0.00 1 initpm_ [157] + 0.00 0.00 6/7 readdat_ [129] +----------------------------------------------- + 0.00 0.00 1/1 setzt_ [195] +[158] 0.0 0.00 0.00 1 initrandom_ [158] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[159] 0.0 0.00 0.00 1 initsi_ [159] +----------------------------------------------- + 0.00 0.00 1/1 surfini_ [69] +[160] 0.0 0.00 0.00 1 landini_ [160] + 0.00 0.00 33/162 mpbcr_ [103] + 0.00 0.00 13/22 mpsurfgp_ [120] + 0.00 0.00 6/48 mpbcrn_ [112] + 0.00 0.00 5/4669 mpbci_ [84] + 0.00 0.00 1/1 ncountsea_ [173] + 0.00 0.00 1/1 soilini_ [196] + 0.00 0.00 1/1 roffini_ [193] + 0.00 0.00 1/1444 getalb_ [91] +----------------------------------------------- + 0.00 0.00 1/1 surfstop_ [71] +[161] 0.0 0.00 0.00 1 landstop_ [161] + 0.00 0.00 18/158 mpputgp_ [104] + 0.00 0.00 1/13 put_restart_integer_ [122] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[162] 0.0 0.00 0.00 1 legini_ [162] +----------------------------------------------- + 0.00 0.00 1/1 read_ice_surface_ [188] +[163] 0.0 0.00 0.00 1 make_ice_thickness_ [163] + 0.00 0.00 1/4241 mpgagp_ [85] + 0.00 0.00 1/2893 mpscgp_ [87] +----------------------------------------------- + 0.00 0.00 1/1 carbonini_ [145] +[164] 0.0 0.00 0.00 1 makeareas_ [164] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[165] 0.0 0.00 0.00 1 miscini_ [165] + 0.00 0.00 2/4669 mpbci_ [84] + 0.00 0.00 1/162 mpbcr_ [103] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[166] 0.0 0.00 0.00 1 miscstop_ [166] +----------------------------------------------- + 0.00 0.00 1/1 read_ice_surface_ [188] +[167] 0.0 0.00 0.00 1 mpmaxval_ [167] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[168] 0.0 0.00 0.00 1 mpscin_ [168] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[169] 0.0 0.00 0.00 1 mpstart_ [169] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[170] 0.0 0.00 0.00 1 mpstop_ [170] +----------------------------------------------- + 0.00 0.00 1/1 ncountsea_ [173] +[171] 0.0 0.00 0.00 1 mpsumval_ [171] +----------------------------------------------- + 0.00 0.00 1/1 gp2fc_ [19] +[172] 0.0 0.00 0.00 1 mrdimensions_ [172] +----------------------------------------------- + 0.00 0.00 1/1 landini_ [160] +[173] 0.0 0.00 0.00 1 ncountsea_ [173] + 0.00 0.00 1/1 mpsumval_ [171] +----------------------------------------------- + 0.00 0.00 1/1 setzt_ [195] +[174] 0.0 0.00 0.00 1 noise_ [174] +----------------------------------------------- + 0.00 0.00 1/1 icestop_ [155] +[175] 0.0 0.00 0.00 1 oceanstop_ [175] + 0.00 0.00 11/158 mpputgp_ [104] + 0.00 0.00 2/13 put_restart_integer_ [122] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[176] 0.0 0.00 0.00 1 opendiag_ [176] +----------------------------------------------- + 0.00 0.00 1/1 radini_ [184] +[177] 0.0 0.00 0.00 1 orb_params_ [177] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[178] 0.0 0.00 0.00 1 outini_ [178] + 0.00 0.00 1/3370 ntomin_ [86] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[179] 0.0 0.00 0.00 1 planet_ini_ [179] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[180] 0.0 0.00 0.00 1 print_planet_ [180] +----------------------------------------------- + 0.00 0.00 1/1 setzt_ [195] +[181] 0.0 0.00 0.00 1 printseed_ [181] +----------------------------------------------- + 0.00 0.00 1/1 radstop_ [185] +[182] 0.0 0.00 0.00 1 put_restart_real_ [182] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[183] 0.0 0.00 0.00 1 put_restart_seed_ [183] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[184] 0.0 0.00 0.00 1 radini_ [184] + 0.00 0.00 28/162 mpbcr_ [103] + 0.00 0.00 20/4669 mpbci_ [84] + 0.00 0.00 11/48 mpbcrn_ [112] + 0.00 0.00 1/1 orb_params_ [177] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[185] 0.0 0.00 0.00 1 radstop_ [185] + 0.00 0.00 1/158 mpputgp_ [104] + 0.00 0.00 1/1 put_restart_real_ [182] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[186] 0.0 0.00 0.00 1 rainini_ [186] + 0.00 0.00 11/4669 mpbci_ [84] + 0.00 0.00 8/162 mpbcr_ [103] + 0.00 0.00 2/48 mpbcrn_ [112] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[187] 0.0 0.00 0.00 1 rainstop_ [187] +----------------------------------------------- + 0.00 0.00 1/1 iceini_ [77] +[188] 0.0 0.00 0.00 1 read_ice_surface_ [188] + 0.00 0.00 4/22 mpsurfgp_ [120] + 0.00 0.00 1/1 mpmaxval_ [167] + 0.00 0.00 1/1 make_ice_thickness_ [163] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[189] 0.0 0.00 0.00 1 readnl_ [189] + 0.00 0.00 1/2 calini_ [139] + 0.00 0.00 1/1 cal2step_ [144] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[190] 0.0 0.00 0.00 1 restart_ini_ [190] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[191] 0.0 0.00 0.00 1 restart_prepare_ [191] +----------------------------------------------- + 0.00 0.00 1/1 epilog_ [80] +[192] 0.0 0.00 0.00 1 restart_stop_ [192] +----------------------------------------------- + 0.00 0.00 1/1 landini_ [160] +[193] 0.0 0.00 0.00 1 roffini_ [193] + 0.00 0.00 3/4241 mpgagp_ [85] + 0.00 0.00 2/2893 mpscgp_ [87] +----------------------------------------------- + 0.00 0.00 1/1 main [1] +[194] 0.0 0.00 0.00 1 setfilenames_ [194] +----------------------------------------------- + 0.00 0.00 1/1 initfd_ [156] +[195] 0.0 0.00 0.00 1 setzt_ [195] + 0.00 0.00 1/1 initrandom_ [158] + 0.00 0.00 1/1 noise_ [174] + 0.00 0.00 1/1 printseed_ [181] +----------------------------------------------- + 0.00 0.00 1/1 landini_ [160] +[196] 0.0 0.00 0.00 1 soilini_ [196] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[197] 0.0 0.00 0.00 1 surface_ini_ [197] + 0.00 0.00 22/22 surfcode_ [121] + 0.00 0.00 11/11 orb_print_ [126] +----------------------------------------------- + 0.00 0.00 1/1 prolog_ [68] +[198] 0.0 0.00 0.00 1 tracer_ini0_ [198] +----------------------------------------------- + 0.00 0.00 1/1 master_ [2] +[199] 0.0 0.00 0.00 1 tracer_ini_ [199] +----------------------------------------------- + 0.00 0.00 1/1 carbonstop_ [146] +[200] 0.0 0.00 0.00 1 writegtextarray_ [200] +----------------------------------------------- + + This table describes the call tree of the program, and was sorted by + the total amount of time spent in each function and its children. + + Each entry in this table consists of several lines. The line with the + index number at the left hand margin lists the current function. + The lines above it list the functions that called this function, + and the lines below it list the functions this one called. + This line lists: + index A unique number given to each element of the table. + Index numbers are sorted numerically. + The index number is printed next to every function name so + it is easier to look up where the function is in the table. + + % time This is the percentage of the `total' time that was spent + in this function and its children. Note that due to + different viewpoints, functions excluded by options, etc, + these numbers will NOT add up to 100%. + + self This is the total amount of time spent in this function. + + children This is the total amount of time propagated into this + function by its children. + + called This is the number of times the function was called. + If the function called itself recursively, the number + only includes non-recursive calls, and is followed by + a `+' and the number of recursive calls. + + name The name of the current function. The index number is + printed after it. If the function is a member of a + cycle, the cycle number is printed between the + function's name and the index number. + + + For the function's parents, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the function into this parent. + + children This is the amount of time that was propagated from + the function's children into this parent. + + called This is the number of times this parent called the + function `/' the total number of times the function + was called. Recursive calls to the function are not + included in the number after the `/'. + + name This is the name of the parent. The parent's index + number is printed after it. If the parent is a + member of a cycle, the cycle number is printed between + the name and the index number. + + If the parents of the function cannot be determined, the word + `' is printed in the `name' field, and all the other + fields are blank. + + For the function's children, the fields have the following meanings: + + self This is the amount of time that was propagated directly + from the child into the function. + + children This is the amount of time that was propagated from the + child's children to the function. + + called This is the number of times the function called + this child `/' the total number of times the child + was called. Recursive calls by the child are not + listed in the number after the `/'. + + name This is the name of the child. The child's index + number is printed after it. If the child is a + member of a cycle, the cycle number is printed + between the name and the index number. + + If there are any cycles (circles) in the call graph, there is an + entry for the cycle-as-a-whole. This entry shows who called the + cycle (as parents) and the members of the cycle (as children.) + The `+' recursive calls entry shows the number of function calls that + were internal to the cycle, and the calls entry for each member shows, + for that member, how many times it was called from other members of + the cycle. + +Copyright (C) 2012-2026 Free Software Foundation, Inc. + +Copying and distribution of this file, with or without modification, +are permitted in any medium without royalty provided the copyright +notice and this notice are preserved. + +Index by function name + + [58] _init [164] makeareas_ [127] outreset_ + [143] allocate_arrays_ [134] makebm_ [128] outsc_ + [144] cal2step_ [2] master_ [52] outsp_ + [26] calcgp_ [165] miscini_ [179] planet_ini_ + [139] calini_ [48] miscstep_ [180] print_planet_ + [145] carbonini_ [166] miscstop_ [181] printseed_ + [67] carbonstep_ [74] mkcflux_ [68] prolog_ + [146] carbonstop_ [32] mkclouds_ [102] put_restart_array_ + [105] checkio_ [22] mkdca_ [122] put_restart_integer_ + [41] dfft2_ [9] mkdheat_ [182] put_restart_real_ + [40] dfft4_ [42] mkdqtgp_ [183] put_restart_seed_ + [34] dfft8_ [60] mkevap_ [100] ql_ + [10] dv2uv_ [56] mkice_ [44] qtend_ + [131] energy_ [98] mkiflux_ [184] radini_ + [80] epilog_ [23] mklsp_ [4] radstep_ + [14] fc2gp_ [93] mko3_ [185] radstop_ + [28] fc2sp_ [54] mkradv_ [186] rainini_ + [135] finishup_ [12] mkrain_ [5] rainstep_ + [96] fix1d_ [35] mkshallow_ [187] rainstop_ + [47] fixer_ [64] mkshfl_ [188] read_ice_surface_ + [147] fluxini_ [62] mksst_ [129] readdat_ + [18] fluxstep_ [63] mkstress_ [189] readnl_ + [148] fluxstop_ [27] mktend_ [190] restart_ini_ + [119] get_surf_array_ [51] mktsoil_ [191] restart_prepare_ + [91] getalb_ [83] momint_ [192] restart_stop_ + [70] glacierini_ [84] mpbci_ [193] roffini_ + [149] glacierprep_ [140] mpbcin_ [53] roffstep_ + [92] glacierstep_ [103] mpbcr_ [78] seaini_ + [150] glacierstop_ [112] mpbcrn_ [24] seastep_ + [19] gp2fc_ [107] mpgacs_ [66] seastop_ + [7] gridpointa_ [85] mpgagp_ [194] setfilenames_ + [3] gridpointd_ [81] mpgallsp_ [195] setzt_ + [111] guid3dcol_ [167] mpmaxval_ [75] skintemp_ + [123] guigtcol_ [104] mpputgp_ [50] snapshotgp_ + [117] guigv_ [132] mpputsp_ [137] snapshotsc_ + [118] guigvcol_ [141] mpscdn_ [59] snapshotsp_ + [90] guihor_ [87] mpscgp_ [196] soilini_ + [124] guips_ [168] mpscin_ [38] soilstep_ + [110] guiput_ [130] mpscrn_ [95] solang_ + [151] guistart_ [125] mpscsp_ [13] sp2fc_ + [152] guistop_ [169] mpstart_ [61] sp2fcdmu_ + [153] hurricaneini_ [170] mpstop_ [30] sp2fl_ + [72] hurricanestep_ [115] mpsum_ [46] spectrala_ + [154] hurricanestop_ [88] mpsumbcr_ [8] spectrald_ + [65] iceget_ [82] mpsumsc_ [99] stability_check_ + [77] iceini_ [171] mpsumval_ [97] step2cal30_ + [37] icestep_ [120] mpsurfgp_ [57] subsnow_ + [155] icestop_ [89] mpwritegph_ [197] surface_ini_ + [25] ifft2_ [172] mrdimensions_ [121] surfcode_ + [29] ifft4_ [173] ncountsea_ [69] surfini_ + [33] ifft8_ [174] noise_ [49] surflx_ + [136] inigau_ [109] ntodat_ [17] surfstep_ + [156] initfd_ [86] ntomin_ [71] surfstop_ + [157] initpm_ [73] oceanget_ [6] swr_ + [158] initrandom_ [79] oceanini_ [39] tands_ + [159] initsi_ [113] oceanout_ [198] tracer_ini0_ + [16] invlega_ [55] oceanstep_ [199] tracer_ini_ + [21] invlegd_ [175] oceanstop_ [43] uv2dv_ + [15] kuo_ [142] ompi_info_ [20] vdiff_ + [160] landini_ [176] opendiag_ [138] write_short_ + [31] landstep_ [94] orb_decl_ [200] writegtextarray_ + [161] landstop_ [177] orb_params_ [108] writescalar_ + [162] legini_ [126] orb_print_ [114] wrorb_ + [101] lubksb_ [76] oroini_ [116] wrzs_ + [106] ludcmp_ [36] outaccu_ [133] xsect_ + [11] lwr_ [45] outgp_ + [163] make_ice_thickness_ [178] outini_ diff --git a/docs/work/2026-10-10/performance/optimized-time.txt b/docs/work/2026-10-10/performance/optimized-time.txt new file mode 100644 index 0000000..acdcdcd --- /dev/null +++ b/docs/work/2026-10-10/performance/optimized-time.txt @@ -0,0 +1,2 @@ +53.74user 0.08system 0:54.16elapsed 99%CPU (0avgtext+0avgdata 41196maxresident)k +2288inputs+60345outputs (6major+10811minor)pagefaults 0swaps diff --git a/docs/work/2026-10-10/performance/profile-time.txt b/docs/work/2026-10-10/performance/profile-time.txt new file mode 100644 index 0000000..2ed74ec --- /dev/null +++ b/docs/work/2026-10-10/performance/profile-time.txt @@ -0,0 +1,2 @@ +56.90user 0.11system 0:57.31elapsed 99%CPU (0avgtext+0avgdata 41636maxresident)k +336inputs+61312outputs (660major+10696minor)pagefaults 0swaps