From 3598bac8f72ab0ac28996a78e04585c3e76af433 Mon Sep 17 00:00:00 2001 From: Valeria Barra Date: Mon, 7 Aug 2023 11:46:43 -0700 Subject: [PATCH] Update to ClimaAtmos v0.16.0: Use config file interface CI: Renamed AMIP - modular, Float32 test -> AMIP - modular, Float64 test Apply reviewer's comments Use different merge order in interactive/non-interactive mode flame test modification trigger perf configs using model configs Update to ClimaAtmos v0.16.0: Use config file interface CI: Renamed AMIP - modular, Float32 test -> AMIP - modular, Float64 test flame test modification trigger perf configs using model configs rm perf LSM dep Update to ClimaAtmos v0.16.0: Use config file interface CI: Renamed AMIP - modular, Float32 test -> AMIP - modular, Float64 test Apply reviewer's comments Use different merge order in interactive/non-interactive mode flame test modification trigger perf configs using model configs rm ClimaLSM deps of sub folders fix rebase Buildkite name fix spec run_name hdf5 mpi fix try fix perf runs revert MPI load --- .buildkite/longruns/pipeline.yml | 18 +- .buildkite/pipeline.yml | 84 ++-- Project.toml | 2 +- .../longrun_configs/amip_longrun_target.yml | 25 ++ config/longrun_configs/amip_n1_shortrun.yml | 27 ++ config/longrun_configs/amip_n2_shortrun.yml | 27 ++ config/longrun_configs/amip_n32_shortrun.yml | 27 ++ config/longrun_configs/amip_n64_shortrun.yml | 27 ++ config/longrun_configs/amip_n8_shortrun.yml | 27 ++ .../slabplanet_default_longrun.yml | 19 + config/model_configs/coarse_mpi_n2.yml | 20 + .../coarse_single_modular_ft64.yml | 21 + ...ingle_modular_ft64_monthly_checkpoints.yml | 21 + .../default_modular_unthreaded.yml | 19 + config/model_configs/default_mono.yml | 18 + config/model_configs/default_notmono.yml | 18 + .../slabplanet_albedo_function.yml | 19 + .../slabplanet_albedo_static_map.yml | 19 + .../slabplanet_albedo_temporal_map.yml | 19 + config/model_configs/slabplanet_default.yml | 19 + config/model_configs/slabplanet_nonmono.yml | 19 + .../slabplanet_partitioned_fluxes.yml | 20 + .../model_configs/target_amip_n1_shortrun.yml | 28 ++ .../model_configs/target_params_in_slab.yml | 24 ++ .../target_params_in_slab_test2.yml | 23 ++ .../target_params_in_slab_test3.yml | 23 ++ config/mpi_configs/regridder_mpi.yml | 2 + .../perf_coarse_single_modular.yml | 20 + .../perf_default_modular_unthreaded.yml | 19 + .../perf_diff_coarse_single_modular.yml | 20 + .../perf_diff_default_modular_unthreaded.yml | 19 + .../perf_diff_target_amip_n1_shortrun.yml | 28 ++ experiments/AMIP/modular/Manifest.toml | 143 +++---- experiments/AMIP/modular/Project.toml | 3 + experiments/AMIP/modular/cli_options.jl | 387 +----------------- .../components/atmosphere/climaatmos_init.jl | 12 +- .../AMIP/modular/coupler_driver_modular.jl | 40 +- perf/Manifest.toml | 143 +++---- perf/Project.toml | 2 + perf/flame.jl | 55 ++- perf/flame_diff.jl | 69 ++-- test/mpi_tests/local_checks.sh | 2 - 42 files changed, 935 insertions(+), 642 deletions(-) create mode 100644 config/longrun_configs/amip_longrun_target.yml create mode 100644 config/longrun_configs/amip_n1_shortrun.yml create mode 100644 config/longrun_configs/amip_n2_shortrun.yml create mode 100644 config/longrun_configs/amip_n32_shortrun.yml create mode 100644 config/longrun_configs/amip_n64_shortrun.yml create mode 100644 config/longrun_configs/amip_n8_shortrun.yml create mode 100644 config/longrun_configs/slabplanet_default_longrun.yml create mode 100644 config/model_configs/coarse_mpi_n2.yml create mode 100644 config/model_configs/coarse_single_modular_ft64.yml create mode 100644 config/model_configs/coarse_single_modular_ft64_monthly_checkpoints.yml create mode 100644 config/model_configs/default_modular_unthreaded.yml create mode 100644 config/model_configs/default_mono.yml create mode 100644 config/model_configs/default_notmono.yml create mode 100644 config/model_configs/slabplanet_albedo_function.yml create mode 100644 config/model_configs/slabplanet_albedo_static_map.yml create mode 100644 config/model_configs/slabplanet_albedo_temporal_map.yml create mode 100644 config/model_configs/slabplanet_default.yml create mode 100644 config/model_configs/slabplanet_nonmono.yml create mode 100644 config/model_configs/slabplanet_partitioned_fluxes.yml create mode 100644 config/model_configs/target_amip_n1_shortrun.yml create mode 100644 config/model_configs/target_params_in_slab.yml create mode 100644 config/model_configs/target_params_in_slab_test2.yml create mode 100644 config/model_configs/target_params_in_slab_test3.yml create mode 100644 config/mpi_configs/regridder_mpi.yml create mode 100644 config/perf_configs/perf_coarse_single_modular.yml create mode 100644 config/perf_configs/perf_default_modular_unthreaded.yml create mode 100644 config/perf_configs/perf_diff_coarse_single_modular.yml create mode 100644 config/perf_configs/perf_diff_default_modular_unthreaded.yml create mode 100644 config/perf_configs/perf_diff_target_amip_n1_shortrun.yml diff --git a/.buildkite/longruns/pipeline.yml b/.buildkite/longruns/pipeline.yml index 1914d64f2e..4f5f921c87 100644 --- a/.buildkite/longruns/pipeline.yml +++ b/.buildkite/longruns/pipeline.yml @@ -8,6 +8,8 @@ env: BUILDKITE_COMMIT: "${BUILDKITE_COMMIT}" BUILDKITE_BRANCH: "${BUILDKITE_BRANCH}" JULIA_MAX_NUM_PRECOMPILE_FILES: 100 + CONFIG_PATH: "config/longrun_configs" + PERF_CONFIG_PATH: "config/perf_configs" # JULIA_DEPOT_PATH: "${BUILDKITE_BUILD_PATH}/${BUILDKITE_PIPELINE_SLUG}/depot/cpu" agents: @@ -56,7 +58,7 @@ steps: - label: "Slabplanet: default" key: "slabplanet_default_longrun" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name slabplanet_default_longrun --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check true --mode_name slabplanet --t_end 60days --dt_save_to_sol 10days --dt_cpl 200 --dt 200secs --mono_surface true --h_elem 6 --precip_model 0M --anim true --job_id slabplanet_default_longrun" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/slabplanet_default_longrun.yml" artifact_paths: "experiments/AMIP/modular/output/slabplanet/slabplanet_default_longrun_artifacts/*" env: BUILD_HISTORY_HANDLE: "" @@ -77,7 +79,7 @@ steps: - label: "MPI AMIP FINE: target longrun" key: "amip_longrun_target" - command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name amip_longrun_target --coupled true --anim true --surface_setup PrescribedSurface --dt_cpl 150 --energy_check false --mode_name amip --mono_surface false --vert_diff true --moist equil --rad clearsky --precip_model 0M --z_elem 35 --dz_bottom 50 --h_elem 12 --kappa_4 3e16 --rayleigh_sponge true --alpha_rayleigh_uh 0 --dt 150secs --t_end 140days --job_id amip_longrun_target --dt_save_to_sol 5days --dt_save_to_disk 1days --FLOAT_TYPE Float64" + command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/amip_longrun_target.yml" artifact_paths: "experiments/AMIP/modular/output/amip/amip_longrun_target_artifacts/*" env: CLIMACORE_DISTRIBUTED: "MPI" @@ -89,7 +91,7 @@ steps: # MPI performance scaling (10 days) - label: "MPI AMIP FINE: n64" key: "mpi_amip_fine_n64" - command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name amip_n64_shortrun --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --z_elem 50 --dz_top 3000 --dz_bottom 30 --h_elem 16 --kappa_4 1e16 --z_stretch false --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --dt_cpl 150 --dt 150secs --dt_rad 1hours --FLOAT_TYPE Float64 --energy_check false --mode_name amip --t_end 10days --dt_save_to_sol 100days --mono_surface false --precip_model 0M" + command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/amip_n64_shortrun.yml" artifact_paths: "experiments/AMIP/modular/output/amip/amip_n64_shortrun_artifacts/*" env: CLIMACORE_DISTRIBUTED: "MPI" @@ -101,7 +103,7 @@ steps: - label: "MPI AMIP FINE: n32" key: "mpi_amip_fine_n32" - command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name amip_n32_shortrun --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --z_elem 50 --dz_top 3000 --dz_bottom 30 --h_elem 16 --kappa_4 1e16 --z_stretch false --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --dt_cpl 150 --dt 150secs --dt_rad 1hours --FLOAT_TYPE Float64 --energy_check false --mode_name amip --t_end 10days --dt_save_to_sol 100days --mono_surface false --precip_model 0M" + command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/amip_n32_shortrun.yml" artifact_paths: "experiments/AMIP/modular/output/amip/amip_n32_shortrun_artifacts/*" env: CLIMACORE_DISTRIBUTED: "MPI" @@ -113,7 +115,7 @@ steps: - label: "MPI AMIP FINE: n8" key: "mpi_amip_fine_n8" - command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name amip_n8_shortrun --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --z_elem 50 --dz_top 3000 --dz_bottom 30 --h_elem 16 --kappa_4 1e16 --z_stretch false --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --dt_cpl 150 --dt 150secs --dt_rad 1hours --FLOAT_TYPE Float64 --energy_check false --mode_name amip --t_end 10days --dt_save_to_sol 100days --mono_surface false --precip_model 0M" + command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/amip_n8_shortrun.yml" artifact_paths: "experiments/AMIP/modular/output/amip/amip_n8_shortrun_artifacts/*" env: CLIMACORE_DISTRIBUTED: "MPI" @@ -125,7 +127,7 @@ steps: - label: "MPI AMIP FINE: n2" # 10d take 21h, so reducing to 1d key: "mpi_amip_fine_n2" - command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name amip_n2_shortrun --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --z_elem 50 --dz_top 3000 --dz_bottom 30 --h_elem 16 --kappa_4 1e16 --z_stretch false --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --dt_cpl 150 --dt 150secs --dt_rad 1hours --FLOAT_TYPE Float64 --energy_check false --mode_name amip --t_end 1days --dt_save_to_sol 100days --mono_surface false --precip_model 0M" + command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/amip_n2_shortrun.yml" artifact_paths: "experiments/AMIP/modular/output/amip/amip_n2_shortrun_artifacts/*" env: CLIMACORE_DISTRIBUTED: "MPI" @@ -137,7 +139,7 @@ steps: - label: "MPI AMIP FINE: n1" # also reported by longruns with a flame graph; 10d take 21h, so reducing to 1d key: "mpi_amip_fine_n1" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name amip_n1_shortrun --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --z_elem 50 --dz_top 3000 --dz_bottom 30 --h_elem 16 --kappa_4 1e16 --z_stretch false --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --dt_cpl 150 --dt 150secs --dt_rad 1hours --FLOAT_TYPE Float64 --energy_check false --mode_name amip --t_end 1days --dt_save_to_sol 100days --mono_surface false --precip_model 0M" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/amip_n1_shortrun.yml" artifact_paths: "experiments/AMIP/modular/output/amip/amip_n1_shortrun_artifacts/*" env: BUILD_HISTORY_HANDLE: "" @@ -146,7 +148,7 @@ steps: # mpi_amip_fine_n1 flame graph report (NB: arguments passed from the ci pipeline.yml) - label: ":rocket: performance: flame graph diff: perf_target_amip_n1_shortrun" - command: "julia --color=yes --project=perf perf/flame_diff.jl --run_name 4" + command: "julia --color=yes --project=perf perf/flame_diff.jl --config_file $PERF_CONFIG_PATH/perf_diff_target_amip_n1_shortrun.yml" artifact_paths: "perf/output/perf_diff_target_amip_n1_shortrun/*" agents: slurm_mem: 20GB diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index cd09e24eb0..c6f2c29206 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -9,6 +9,9 @@ env: BUILDKITE_BRANCH: "${BUILDKITE_BRANCH}" JULIA_MAX_NUM_PRECOMPILE_FILES: 100 GKSwstype: 100 + CONFIG_PATH: "config/model_configs" + PERF_CONFIG_PATH: "config/perf_configs" + MPI_CONFIG_PATH: "config/mpi_configs" # JULIA_DEPOT_PATH: "${BUILDKITE_BUILD_PATH}/${BUILDKITE_PIPELINE_SLUG}/depot/cpu" agents: @@ -72,7 +75,7 @@ steps: steps: - label: "MPI Regridder unit tests" key: "regridder_mpi_tests" - command: "mpiexec julia --color=yes --project=test/ test/mpi_tests/regridder_mpi_tests.jl --run_name regridder_mpi --job_id regridder_mpi" + command: "mpiexec julia --color=yes --project=test/ test/mpi_tests/regridder_mpi_tests.jl --config_file $MPI_CONFIG_PATH/regridder_mpi.yml" timeout_in_minutes: 5 env: CLIMACORE_DISTRIBUTED: "MPI" @@ -134,14 +137,14 @@ steps: # - diagnostics: check and plot energy conservation, output plots after 9 days - label: "Slabplanet: default" key: "slabplanet_default" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name slabplanet_default --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 9days --dt_cpl 200 --dt 200secs --mono_surface true --h_elem 4 --precip_model 0M --anim true --job_id slabplanet_default" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/slabplanet_default.yml" artifact_paths: "experiments/AMIP/modular/output/slabplanet/slabplanet_default_artifacts/*" agents: slurm_mem: 20GB - label: "Slabplanet: partitioned turbulent fluxes" key: "slabplanet_partitioned_fluxes" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name slabplanet_partitioned_fluxes --FLOAT_TYPE Float64 --coupled true --turb_flux_partition PartitionedStateFluxes --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 9days --dt_cpl 200 --dt 200secs --mono_surface true --h_elem 4 --precip_model 0M --anim true --job_id slabplanet_partitioned_fluxes" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/slabplanet_partitioned_fluxes.yml" artifact_paths: "experiments/AMIP/modular/output/slabplanet/slabplanet_partitioned_fluxes_artifacts/*" agents: slurm_mem: 20GB @@ -149,18 +152,30 @@ steps: # Test: non-monotonous remapping for land mask - label: "Slabplanet: non-monotonous surface remap" key: "slabplanet_non-monotonous" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name slabplanet_nonmono --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 9days --dt_cpl 200 --dt 200secs --mono_surface false --h_elem 4 --precip_model 0M --anim true --job_id slabplanet_nonmono" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/slabplanet_nonmono.yml" artifact_paths: "experiments/AMIP/modular/output/slabplanet/slabplanet_nonmono_artifacts/*" agents: slurm_mem: 20GB + - label: "Slabplanet: albedo from static map" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/slabplanet_albedo_static_map.yml" + artifact_paths: "experiments/AMIP/modular/output/slabplanet/slabplanet_albedo_static_map_artifacts/total_energy*.png" + agents: + slurm_mem: 20GB + - label: "Slabplanet: albedo from temporal map" - key: "slabplanet_albedo_maptemporal" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name slabplanet_albedo_maptemporal --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 9days --dt_cpl 200 --dt 200secs --mono_surface true --h_elem 4 --precip_model 0M --anim true --albedo_type map_temporal --job_id slabplanet_albedo_maptemporal" - artifact_paths: "experiments/AMIP/modular/output/slabplanet/slabplanet_albedo_maptemporal_artifacts/*" + key: "slabplanet_albedo_map_temporal" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/slabplanet_albedo_temporal_map.yml" + artifact_paths: "experiments/AMIP/modular/output/slabplanet/slabplanet_albedo_temporal_map_artifacts/*" agents: slurm_mem: 20GB + - label: "Slabplanet: albedo from function" + key: "slabplanet_albedo_function" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/slabplanet_albedo_function.yml" + artifact_paths: "experiments/AMIP/modular/output/slabplanet/slabplanet_albedo_function_artifacts/*" + agents: + slurm_mem: 20GB # AMIP @@ -172,7 +187,7 @@ steps: # slabplanet default: track unthreaded performance (alloc tests, flame graph, flame graph diff, build history) - label: ":rocket: Slabplanet: default (unthreaded)" key: "modular_slabplanet_unthreaded" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name default_modular_unthreaded --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 9days --dt_cpl 200 --dt 200secs --mono_surface true --h_elem 4 --precip_model 0M --anim true --job_id default_modular_unthreaded" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/default_modular_unthreaded.yml" artifact_paths: "experiments/AMIP/modular/output/slabplanet/default_modular_unthreaded_artifacts/*" env: FLAME_PLOT: "" @@ -182,13 +197,13 @@ steps: slurm_mem: 20GB - label: ":rocket: Slabplanet: default (unthreaded) - flame graph and allocation tests" - command: "julia --color=yes --project=perf perf/flame.jl --run_name 1 --job_id perf_default_modular_unthreaded" + command: "julia --color=yes --project=perf perf/flame.jl --config_file $PERF_CONFIG_PATH/perf_default_modular_unthreaded.yml" artifact_paths: "perf/output/perf_default_modular_unthreaded/*" agents: slurm_mem: 20GB - label: ":rocket: Slabplanet: default (unthreaded) - flame graph diff" - command: "julia --color=yes --project=perf perf/flame_diff.jl --run_name 1 --job_id perf_diff_default_modular_unthreaded" + command: "julia --color=yes --project=perf perf/flame_diff.jl --config_file $PERF_CONFIG_PATH/perf_diff_default_modular_unthreaded.yml" artifact_paths: "perf/output/perf_diff_default_modular_unthreaded/*" agents: slurm_mem: 20GB @@ -197,45 +212,32 @@ steps: # - label: "Unit tests" # command: "julia --color=yes --project=test test/runtests.jl" - # artifact_paths: "test/*" + # artifact_paths: "test/*"slabplanet_albedo_static_map - label: "Moist earth with slab surface - default: monin gray no_sponge idealinsol freq_dt_cpl" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 3600secs --dt_cpl 200 --dt 200secs --mono_surface true --h_elem 4 --precip_model 0M --run_name default_mono --job_id default_mono" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/default_mono.yml" artifact_paths: "experiments/AMIP/modular/output/slabplanet/default_mono_artifacts/total_energy*.png" agents: slurm_mem: 20GB - - label: "Moist earth with slab surface - default: monin gray no_sponge idealinsol freq_dt_cpl - bucket using BulkAlbedoFunction" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 3600secs --dt_cpl 200 --dt 200secs --mono_surface true --h_elem 4 --precip_model 0M --albedo_type function --run_name default_albedo_prescribed --job_id default_albedo_function" - artifact_paths: "experiments/AMIP/modular/output/slabplanet/default_albedo_function_artifacts/total_energy*.png" - agents: - slurm_mem: 20GB - - label: "Moist earth with slab surface - notmono: monin gray no_sponge idealinsol freq_dt_cpl notmono" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 3600secs --dt_cpl 200 --dt 200secs --mono_surface false --h_elem 4 --precip_model 0M --run_name default_notmono --job_id default_notmono" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/default_notmono.yml" artifact_paths: "experiments/AMIP/modular/output/slabplanet/default_notmono_artifacts/total_energy*.png" agents: slurm_mem: 20GB - # Note: this test fails when run with the more realistic albedo from file - - label: "Moist earth with slab surface - target: monin allsky sponge realinsol infreq_dt_cpl - bucket using BulkAlbedoFunction" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --FLOAT_TYPE Float64 --run_name target_params_in_slab --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad allskywithclear --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 3600secs --dt_cpl 3600 --dt 200secs --dt_rad 6hours --idealized_insolation false --mono_surface true --h_elem 6 --precip_model 0M --albedo_type function --job_id target_params_in_slab" # idealized albedo breaks - artifact_paths: "experiments/AMIP/modular/output/slabplanet/target_params_in_slab_artifacts/total_energy*.png" - agents: - slurm_mem: 20GB - # - label: "Moist earth with slab surface - test: monin allsky sponge idealinsol infreq_dt_cpl" # command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad allskywithclear --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 3600secs --dt_cpl 21600 --dt 200secs --dt_rad 6hours --mono_surface true --h_elem 4 --precip_model 0M --run_name target_params_in_slab_test1 --job_id target_params_in_slab_test1" # Unconverged SF (reproduced locally); works with 200s dt_cpl # artifact_paths: "experiments/AMIP/modular/output/slabplanet/target_params_in_slab_test1_artifacts/total_energy*.png" - label: "Moist earth with slab surface - test: bulk allsky sponge realinsol infreq_dt_cpl" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad allskywithclear --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 3600secs --dt_cpl 3600 --dt 200secs --dt_rad 6hours --idealized_insolation false --mono_surface true --h_elem 6 --precip_model 0M --run_name target_params_in_slab_test2 --job_id target_params_in_slab_test2" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/target_params_in_slab_test2.yml" artifact_paths: "experiments/AMIP/modular/output/slabplanet/target_params_in_slab_test2_artifacts/total_energy*.png" agents: slurm_mem: 20GB - label: "Moist earth with slab surface - test: monin gray sponge realinsol infreq_dt_cpl" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 3600secs --dt_cpl 3600 --dt 200secs --dt_rad 6hours --idealized_insolation false --mono_surface true --h_elem 6 --precip_model 0M --run_name target_params_in_slab_test3 --job_id target_params_in_slab_test3" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/target_params_in_slab_test3.yml" artifact_paths: "experiments/AMIP/modular/output/slabplanet/target_params_in_slab_test3_artifacts/total_energy*.png" agents: slurm_mem: 20GB @@ -247,8 +249,8 @@ steps: - label: "AMIP - modular Float64 + monthly checkpoint" key: "modular_amip" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name coarse_single_modular --FLOAT_TYPE Float64 --coupled true --monthly_checkpoint true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check false --mode_name amip --anim true --t_end 32days --dt_save_to_sol 1days --dt_cpl 400 --dt 400secs --mono_surface false --h_elem 6 --dt_save_restart 10days --precip_model 0M --job_id coarse_single_modular" - artifact_paths: "experiments/AMIP/modular/output/amip/coarse_single_modular_artifacts/*" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/coarse_single_modular_ft64_monthly_checkpoints.yml" + artifact_paths: "experiments/AMIP/modular/output/amip/coarse_single_modular_ft64_monthly_checkpoints_artifacts/*" env: FLAME_PLOT: "" BUILD_HISTORY_HANDLE: "" @@ -256,9 +258,9 @@ steps: slurm_ntasks: 1 slurm_mem: 20GB - - label: "AMIP - modular, Float32 test" # Issue #271 - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name coarse_single_modular_ft32 --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check false --mode_name amip --anim true --t_end 10days --dt_save_to_sol 100days --dt_cpl 200 --dt 200secs --mono_surface true --h_elem 6 --dt_save_restart 10days --precip_model 0M --job_id coarse_single_modular_ft32" - artifact_paths: "experiments/AMIP/modular/output/amip/coarse_single_modular_ft32_artifacts/*" + - label: "AMIP - modular, Float64 test" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/coarse_single_modular_ft64.yml" + artifact_paths: "experiments/AMIP/modular/output/amip/coarse_single_modular_ft64_artifacts/*" agents: slurm_ntasks: 1 slurm_mem: 20GB @@ -270,7 +272,7 @@ steps: slurm_mem: 20GB - label: "MPI AMIP" - command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --energy_check false --mode_name amip --anim true --t_end 32days --dt_save_to_sol 1days --dt_cpl 400 --dt 400secs --mono_surface false --h_elem 6 --dt_save_restart 5days --precip_model 0M --run_name coarse_mpi_n2 --job_id coarse_mpi_n2" + command: "mpiexec julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/coarse_mpi_n2.yml" artifact_paths: "experiments/AMIP/modular/output/amip/coarse_mpi_n2_artifacts/*" env: CLIMACORE_DISTRIBUTED: "MPI" @@ -284,7 +286,7 @@ steps: # short high-res performance test - label: "Unthreaded AMIP FINE" # also reported by longruns with a flame graph key: "unthreaded_amip_fine" - command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --run_name target_amip_n1_shortrun --FLOAT_TYPE Float64 --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad gray --z_elem 50 --dz_top 3000 --dz_bottom 30 --h_elem 16 --kappa_4 1e16 --z_stretch false --rayleigh_sponge true --alpha_rayleigh_uh 0 --alpha_rayleigh_w 10 --dt_cpl 150 --dt 150secs --dt_rad 1hours --FLOAT_TYPE Float64 --energy_check false --mode_name amip --t_end 0.01days --dt_save_to_sol 1days --mono_surface false --precip_model 0M --job_id target_amip_n1_shortrun" + command: "julia --color=yes --project=experiments/AMIP/modular/ experiments/AMIP/modular/coupler_driver_modular.jl --config_file $CONFIG_PATH/target_amip_n1_shortrun.yml" artifact_paths: "experiments/AMIP/modular/output/amip/target_amip_n1_shortrun_artifacts/*" env: BUILD_HISTORY_HANDLE: "" @@ -293,15 +295,15 @@ steps: # flame graphs + allocation tests - - label: ":rocket: flame graph and allocation tests: perf_coarse_single_modular" - command: "julia --color=yes --project=perf perf/flame.jl --run_name 2 --job_id perf_coarse_single_modular" - artifact_paths: "perf/output/perf_coarse_single_modular/*" + - label: ":rocket: flame graph and allocation tests: perf_coarse_single_modular_ft64" + command: "julia --color=yes --project=perf perf/flame.jl --config_file $PERF_CONFIG_PATH/perf_coarse_single_modular_ft64.yml" + artifact_paths: "perf/output/perf_coarse_single_modular_ft64/*" agents: slurm_mem: 20GB - - label: ":rocket: performance: flame graph diff: perf_diff_coarse_single_modular" - command: "julia --color=yes --project=perf perf/flame_diff.jl --run_name 2 --job_id perf_diff_coarse_single_modular" - artifact_paths: "perf/output/perf_diff_coarse_single_modular/*" + - label: ":rocket: performance: flame graph diff: perf_diff_coarse_single_modular_ft64" + command: "julia --color=yes --project=perf perf/flame_diff.jl --config_file $PERF_CONFIG_PATH/perf_diff_coarse_single_modular_ft64.yml" + artifact_paths: "perf/output/perf_diff_coarse_single_modular_ft64/*" agents: slurm_mem: 20GB diff --git a/Project.toml b/Project.toml index 4c9aee039a..42b07660a9 100644 --- a/Project.toml +++ b/Project.toml @@ -29,7 +29,7 @@ UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" [compat] CLIMAParameters = "0.7" -ClimaAtmos = "0.15" +ClimaAtmos = "0.16" ClimaComms = "0.5" ClimaCore = "0.10" ClimaCoreTempestRemap = "0.3" diff --git a/config/longrun_configs/amip_longrun_target.yml b/config/longrun_configs/amip_longrun_target.yml new file mode 100644 index 0000000000..422fa04515 --- /dev/null +++ b/config/longrun_configs/amip_longrun_target.yml @@ -0,0 +1,25 @@ +run_name: "amip_longrun_target" +coupled: true +anim: true +surface_setup: "PrescribedSurface" +dt_cpl: 150 +energy_check: false +mode_name: "amip" +mono_surface: false +vert_diff: "true" +moist: "equil" +rad: "clearsky" +precip_model: "0M" +z_elem: 35 +dz_bottom: 50 +h_elem: 12 +kappa_4: 3e16 +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +dt: "150secs" +t_end: "140days" +job_id: "amip_longrun_target" +dt_save_to_sol: "5days" +dt_save_to_disk: "1days" +apply_limiter: true +FLOAT_TYPE: "Float64" diff --git a/config/longrun_configs/amip_n1_shortrun.yml b/config/longrun_configs/amip_n1_shortrun.yml new file mode 100644 index 0000000000..454b99784e --- /dev/null +++ b/config/longrun_configs/amip_n1_shortrun.yml @@ -0,0 +1,27 @@ +job_id: "amip_n1_shortrun" +run_name: "amip_n1_shortrun" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +z_elem: 50 +dz_top: 3000 +dz_bottom: 30 +h_elem: 16 +kappa_4: 1e16 +z_stretch: false +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +dt_cpl: 150 +dt: "150secs" +dt_rad: "1hours" +FLOAT_TYPE: "Float64" +energy_check: false +mode_name: "amip" +t_end: "1days" +dt_save_to_sol: "100days" +mono_surface: false +apply_limiter: true +precip_model: "0M" diff --git a/config/longrun_configs/amip_n2_shortrun.yml b/config/longrun_configs/amip_n2_shortrun.yml new file mode 100644 index 0000000000..a74e5618bf --- /dev/null +++ b/config/longrun_configs/amip_n2_shortrun.yml @@ -0,0 +1,27 @@ +job_id: "amip_n2_shortrun" +run_name: "amip_n2_shortrun" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +z_elem: 50 +dz_top: 3000 +dz_bottom: 30 +h_elem: 16 +kappa_4: 1e16 +z_stretch: false +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +dt_cpl: 150 +dt: 150secs +dt_rad: 1hours +FLOAT_TYPE: "Float64" +energy_check: false +mode_name: "amip" +t_end: "1days" +dt_save_to_sol: "100days" +mono_surface: "false" +apply_limiter: true +precip_model: "0M" diff --git a/config/longrun_configs/amip_n32_shortrun.yml b/config/longrun_configs/amip_n32_shortrun.yml new file mode 100644 index 0000000000..40b93e2500 --- /dev/null +++ b/config/longrun_configs/amip_n32_shortrun.yml @@ -0,0 +1,27 @@ +job_ide: "amip_n32_shortrun" +run_name: "amip_n32_shortrun" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +z_elem: 50 +dz_top: 3000 +dz_bottom: 30 +h_elem: 16 +kappa_4: 1e16 +z_stretch: false +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +dt_cpl: 150 +dt: "150secs" +dt_rad: "1hours" +FLOAT_TYPE: "Float64" +energy_check: false +mode_name: "amip" +t_end: "10days" +dt_save_to_sol: "100days" +mono_surface: false +apply_limiter: true +precip_model: "0M" diff --git a/config/longrun_configs/amip_n64_shortrun.yml b/config/longrun_configs/amip_n64_shortrun.yml new file mode 100644 index 0000000000..31a973e38d --- /dev/null +++ b/config/longrun_configs/amip_n64_shortrun.yml @@ -0,0 +1,27 @@ +job_id: "amip_n64_shortrun" +run_name: "amip_n64_shortrun" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +z_elem: 50 +dz_top: 3000 +dz_bottom: 30 +h_elem: 16 +kappa_4: 1e16 +z_stretch: false +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +dt_cpl: 150 +dt: "150secs" +dt_rad: "1hours" +FLOAT_TYPE: "Float64" +energy_check: false +mode_name: "amip" +t_end: "10days" +dt_save_to_sol: "100days" +mono_surface: false +apply_limiter: true +precip_model: "0M" diff --git a/config/longrun_configs/amip_n8_shortrun.yml b/config/longrun_configs/amip_n8_shortrun.yml new file mode 100644 index 0000000000..dd3ebe53f7 --- /dev/null +++ b/config/longrun_configs/amip_n8_shortrun.yml @@ -0,0 +1,27 @@ +job_id: "amip_n8_shortrun" +run_name: "amip_n8_shortrun" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +z_elem: 50 +dz_top: 3000 +dz_bottom: 30 +h_elem: 16 +kappa_4: 1e16 +z_stretch: false +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +dt_cpl: 150 +dt: "150secs" +dt_rad: "1hours" +FLOAT_TYPE: "Float64" +energy_check: false +mode_name: "amip" +t_end: "10days" +dt_save_to_sol: "100days" +mono_surface: "false" +apply_limiter: true +precip_model: "0M" diff --git a/config/longrun_configs/slabplanet_default_longrun.yml b/config/longrun_configs/slabplanet_default_longrun.yml new file mode 100644 index 0000000000..2549f52134 --- /dev/null +++ b/config/longrun_configs/slabplanet_default_longrun.yml @@ -0,0 +1,19 @@ +run_name: "slabplanet_default_longrun" +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "60days" +dt_save_to_sol: "10days" +dt_cpl: 200 +dt: "200secs" +mono_surface: true +h_elem: 6 +precip_model: "0M" +anim: true +apply_limiter: true +job_id: "slabplanet_default_longrun" diff --git a/config/model_configs/coarse_mpi_n2.yml b/config/model_configs/coarse_mpi_n2.yml new file mode 100644 index 0000000000..7137774177 --- /dev/null +++ b/config/model_configs/coarse_mpi_n2.yml @@ -0,0 +1,20 @@ +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: false +mode_name: "amip" +anim: true +t_end: "32days" +dt_save_to_sol: "1days" +dt_cpl: 400 +dt: "400secs" +mono_surface: false +h_elem: 6 +dt_save_restart: "5days" +precip_model: "0M" +run_name: "coarse_mpi_n2" +apply_limiter: true +job_id: "coarse_mpi_n2" diff --git a/config/model_configs/coarse_single_modular_ft64.yml b/config/model_configs/coarse_single_modular_ft64.yml new file mode 100644 index 0000000000..a57b863285 --- /dev/null +++ b/config/model_configs/coarse_single_modular_ft64.yml @@ -0,0 +1,21 @@ +run_name: "coarse_single_modular_ft64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: false +mode_name: "amip" +anim: true +t_end: "10days" +dt_save_to_sol: "100days" +dt_cpl: 200 +dt: "200secs" +FLOAT_TYPE: "Float64" +mono_surface: true +h_elem: 6 +dt_save_restart: "10days" +precip_model: "0M" +apply_limiter: true +job_id: "coarse_single_modular_ft64" + diff --git a/config/model_configs/coarse_single_modular_ft64_monthly_checkpoints.yml b/config/model_configs/coarse_single_modular_ft64_monthly_checkpoints.yml new file mode 100644 index 0000000000..a04c46a0fd --- /dev/null +++ b/config/model_configs/coarse_single_modular_ft64_monthly_checkpoints.yml @@ -0,0 +1,21 @@ +run_name: "coarse_single_modular_ft64_monthly_checkpoints" +FLOAT_TYPE: "Float64" +coupled: true +monthly_checkpoint: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: false +mode_name: "amip" +anim: true +t_end: "32days" +dt_save_to_sol: "1days" +dt_cpl: 400 +dt: "400secs" +mono_surface: false +h_elem: 6 +dt_save_restart: "10days" +precip_model: "0M" +apply_limiter: true +job_id: "coarse_single_modular_ft64_monthly_checkpoints" diff --git a/config/model_configs/default_modular_unthreaded.yml b/config/model_configs/default_modular_unthreaded.yml new file mode 100644 index 0000000000..4ef23d8dea --- /dev/null +++ b/config/model_configs/default_modular_unthreaded.yml @@ -0,0 +1,19 @@ +run_name: "default_modular_unthreaded" +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "9days" +dt_cpl: 200 +dt: "200secs" +mono_surface: true +h_elem: 4 +precip_model: "0M" +anim: true +apply_limiter: true +job_id: "default_modular_unthreaded" diff --git a/config/model_configs/default_mono.yml b/config/model_configs/default_mono.yml new file mode 100644 index 0000000000..4eb9ed68b9 --- /dev/null +++ b/config/model_configs/default_mono.yml @@ -0,0 +1,18 @@ +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "3600secs" +dt_cpl 200: +dt: "200secs" +mono_surface: true +h_elem: 4 +precip_model: "0M" +run_name: "default_mono" +apply_limiter: true +job_id: "default_mono" diff --git a/config/model_configs/default_notmono.yml b/config/model_configs/default_notmono.yml new file mode 100644 index 0000000000..e4b3d48f18 --- /dev/null +++ b/config/model_configs/default_notmono.yml @@ -0,0 +1,18 @@ +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "3600secs" +dt_cpl: 200 +dt: "200secs" +mono_surface: false +h_elem: 4 +precip_model: "0M" +run_name: "default_notmono" +apply_limiter: true +job_id: "default_notmono" diff --git a/config/model_configs/slabplanet_albedo_function.yml b/config/model_configs/slabplanet_albedo_function.yml new file mode 100644 index 0000000000..e3fe858df1 --- /dev/null +++ b/config/model_configs/slabplanet_albedo_function.yml @@ -0,0 +1,19 @@ +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "3600secs" +dt_cpl: 200 +dt: "200secs" +mono_surface: true +h_elem: 4 +precip_model: "0M" +albedo_type: "map_static" +run_name: "slabplanet_albedo_function" +apply_limiter: true +job_id: "slabplanet_albedo_function" diff --git a/config/model_configs/slabplanet_albedo_static_map.yml b/config/model_configs/slabplanet_albedo_static_map.yml new file mode 100644 index 0000000000..97a93d6481 --- /dev/null +++ b/config/model_configs/slabplanet_albedo_static_map.yml @@ -0,0 +1,19 @@ +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "3600secs" +dt_cpl: 200 +dt: "200secs" +mono_surface: true +h_elem: 4 +precip_model: "0M" +albedo_type: "map_static" +run_name: "slabplanet_albedo_static_map" +apply_limiter: true +job_id: "slabplanet_albedo_static_map" diff --git a/config/model_configs/slabplanet_albedo_temporal_map.yml b/config/model_configs/slabplanet_albedo_temporal_map.yml new file mode 100644 index 0000000000..92d51feed5 --- /dev/null +++ b/config/model_configs/slabplanet_albedo_temporal_map.yml @@ -0,0 +1,19 @@ +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "3600secs" +dt_cpl: 200 +dt: "200secs" +mono_surface: true +h_elem: 4 +precip_model: "0M" +albedo_type: "map_temporal" +run_name: "slabplanet_albedo_temporal_map" +apply_limiter: true +job_id: "slabplanet_albedo_temporal_map" diff --git a/config/model_configs/slabplanet_default.yml b/config/model_configs/slabplanet_default.yml new file mode 100644 index 0000000000..f361c2774c --- /dev/null +++ b/config/model_configs/slabplanet_default.yml @@ -0,0 +1,19 @@ +run_name: "slabplanet_default" +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "9days" +dt_cpl: 200 +dt: "200secs" +mono_surface: true +h_elem: 4 +precip_model: "0M" +anim: true +apply_limiter: true +job_id: "slabplanet_default" diff --git a/config/model_configs/slabplanet_nonmono.yml b/config/model_configs/slabplanet_nonmono.yml new file mode 100644 index 0000000000..77fb431378 --- /dev/null +++ b/config/model_configs/slabplanet_nonmono.yml @@ -0,0 +1,19 @@ +run_name: "slabplanet_nonmono" +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "9days" +dt_cpl: 200 +dt: "200secs" +mono_surface: false +h_elem: 4 +precip_model: "0M" +anim: true +apply_limiter: true +job_id: "slabplanet_nonmono" diff --git a/config/model_configs/slabplanet_partitioned_fluxes.yml b/config/model_configs/slabplanet_partitioned_fluxes.yml new file mode 100644 index 0000000000..3ff7337a6d --- /dev/null +++ b/config/model_configs/slabplanet_partitioned_fluxes.yml @@ -0,0 +1,20 @@ +run_name: "slabplanet_partitioned_fluxes" +FLOAT_TYPE: "Float64" +coupled: true +turb_flux_partition: "PartitionedStateFluxes" +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "9days" +dt_cpl: 200 +dt: "200secs" +mono_surface: true +h_elem: 4 +precip_model: "0M" +anim: true +apply_limiter: true +job_id: "slabplanet_partitioned_fluxes" diff --git a/config/model_configs/target_amip_n1_shortrun.yml b/config/model_configs/target_amip_n1_shortrun.yml new file mode 100644 index 0000000000..5f57f1c682 --- /dev/null +++ b/config/model_configs/target_amip_n1_shortrun.yml @@ -0,0 +1,28 @@ +run_name: "target_amip_n1_shortrun" +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +z_elem: 50 +dz_top: 3000 +dz_bottom: 30 +h_elem: 16 +kappa_4: 1e16 +z_stretch: false +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +dt_cpl: 150 +dt: "150secs" +dt_rad: "1hours" +FLOAT_TYPE: "Float64" +energy_check: false +mode_name: "amip" +t_end: "0.01days" +dt_save_to_sol: "1days" +mono_surface: false +precip_model: "0M" +apply_limiter: true +job_id: "target_amip_n1_shortrun" diff --git a/config/model_configs/target_params_in_slab.yml b/config/model_configs/target_params_in_slab.yml new file mode 100644 index 0000000000..88eba652c2 --- /dev/null +++ b/config/model_configs/target_params_in_slab.yml @@ -0,0 +1,24 @@ +FLOAT_TYPE: "Float64" +run_name: "target_params_in_slab" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "allskywithclear" +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "3600secs" +dt_cpl: 3600 +dt: "200secs" +dt_rad: "6hours" +idealized_insolation: false +mono_surface: true +h_elem: 6 +precip_model: "0M" +albedo_from_file: false +apply_limiter: true +job_id: "target_params_in_slab" diff --git a/config/model_configs/target_params_in_slab_test2.yml b/config/model_configs/target_params_in_slab_test2.yml new file mode 100644 index 0000000000..92a779cdd5 --- /dev/null +++ b/config/model_configs/target_params_in_slab_test2.yml @@ -0,0 +1,23 @@ +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "allskywithclear" +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "3600secs" +dt_cpl: 3600 +dt: "200secs" +dt_rad: "6hours" +idealized_insolation: false +mono_surface: true +h_elem: 6 +precip_model: "0M" +run_name: "target_params_in_slab_test2" +apply_limiter: true +job_id: "target_params_in_slab_test2" diff --git a/config/model_configs/target_params_in_slab_test3.yml b/config/model_configs/target_params_in_slab_test3.yml new file mode 100644 index 0000000000..989167674f --- /dev/null +++ b/config/model_configs/target_params_in_slab_test3.yml @@ -0,0 +1,23 @@ +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "3600secs" +dt_cpl: 3600 +dt: "200secs" +dt_rad: "6hours" +idealized_insolation: false +mono_surface: true +h_elem: 6 +precip_model: "0M" +run_name: "target_params_in_slab_test3" +apply_limiter: true +job_id: "target_params_in_slab_test3" diff --git a/config/mpi_configs/regridder_mpi.yml b/config/mpi_configs/regridder_mpi.yml new file mode 100644 index 0000000000..0d11d62234 --- /dev/null +++ b/config/mpi_configs/regridder_mpi.yml @@ -0,0 +1,2 @@ +run_name: "regridder_mpi" +job_id: "regridder_mpi" diff --git a/config/perf_configs/perf_coarse_single_modular.yml b/config/perf_configs/perf_coarse_single_modular.yml new file mode 100644 index 0000000000..d5e23fbe24 --- /dev/null +++ b/config/perf_configs/perf_coarse_single_modular.yml @@ -0,0 +1,20 @@ +run_name: "perf_coarse_single_modular_ft64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: false +mode_name: "amip" +anim: true +t_end: "10days" +dt_save_to_sol: "100days" +dt_cpl: 200 +dt: "200secs" +FLOAT_TYPE: "Float64" +mono_surface: true +h_elem: 6 +dt_save_restart: "10days" +precip_model: "0M" +apply_limiter: true +job_id: "perf_coarse_single_modular_ft64" \ No newline at end of file diff --git a/config/perf_configs/perf_default_modular_unthreaded.yml b/config/perf_configs/perf_default_modular_unthreaded.yml new file mode 100644 index 0000000000..672a233daa --- /dev/null +++ b/config/perf_configs/perf_default_modular_unthreaded.yml @@ -0,0 +1,19 @@ +run_name: "perf_default_modular_unthreaded" +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "9days" +dt_cpl: 200 +dt: "200secs" +mono_surface: true +h_elem: 4 +precip_model: "0M" +anim: true +apply_limiter: true +job_id: "perf_default_modular_unthreaded" diff --git a/config/perf_configs/perf_diff_coarse_single_modular.yml b/config/perf_configs/perf_diff_coarse_single_modular.yml new file mode 100644 index 0000000000..157ccd4161 --- /dev/null +++ b/config/perf_configs/perf_diff_coarse_single_modular.yml @@ -0,0 +1,20 @@ +run_name: "perf_diff_coarse_single_modular_ft64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: false +mode_name: "amip" +anim: true +t_end: "10days" +dt_save_to_sol: "100days" +dt_cpl: 200 +dt: "200secs" +FLOAT_TYPE: "Float64" +mono_surface: true +h_elem: 6 +dt_save_restart: "10days" +precip_model: "0M" +apply_limiter: true +job_id: "perf_diff_coarse_single_modular_ft64" \ No newline at end of file diff --git a/config/perf_configs/perf_diff_default_modular_unthreaded.yml b/config/perf_configs/perf_diff_default_modular_unthreaded.yml new file mode 100644 index 0000000000..315a3412bb --- /dev/null +++ b/config/perf_configs/perf_diff_default_modular_unthreaded.yml @@ -0,0 +1,19 @@ +run_name: "perf_diff_default_modular_unthreaded" +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +energy_check: true +mode_name: "slabplanet" +t_end: "10days" +dt_save_to_sol: "9days" +dt_cpl: 200 +dt: "200secs" +mono_surface: true +h_elem: 4 +precip_model: "0M" +anim: true +apply_limiter: true +job_id: "perf_diff_default_modular_unthreaded" diff --git a/config/perf_configs/perf_diff_target_amip_n1_shortrun.yml b/config/perf_configs/perf_diff_target_amip_n1_shortrun.yml new file mode 100644 index 0000000000..8115fb1a9f --- /dev/null +++ b/config/perf_configs/perf_diff_target_amip_n1_shortrun.yml @@ -0,0 +1,28 @@ +run_name: "perf_target_amip_n1_shortrun" +FLOAT_TYPE: "Float64" +coupled: true +surface_setup: "PrescribedSurface" +moist: "equil" +vert_diff: "true" +rad: "gray" +z_elem: 50 +dz_top: 3000 +dz_bottom: 30 +h_elem: 16 +kappa_4: 1e16 +z_stretch: false +rayleigh_sponge: true +alpha_rayleigh_uh: 0 +alpha_rayleigh_w: 10 +dt_cpl: 150 +dt: "150secs" +dt_rad: "1hours" +FLOAT_TYPE: "Float64" +energy_check: false +mode_name: "amip" +t_end: "0.01days" +dt_save_to_sol: "1days" +mono_surface: false +precip_model: "0M" +apply_limiter: true +job_id: "perf_target_amip_n1_shortrun" diff --git a/experiments/AMIP/modular/Manifest.toml b/experiments/AMIP/modular/Manifest.toml index 873ee26ad0..e8ebaa1706 100644 --- a/experiments/AMIP/modular/Manifest.toml +++ b/experiments/AMIP/modular/Manifest.toml @@ -2,12 +2,12 @@ julia_version = "1.8.5" manifest_format = "2.0" -project_hash = "0c52bcb1446b52cbf673aa87a7b4c42cc1fdbcf2" +project_hash = "d509753ce4102be180a45b37f07c070dc48be29b" [[deps.ADTypes]] -git-tree-sha1 = "f5c25e8a5b29b5e941b7408bc8cc79fea4d9ef9a" +git-tree-sha1 = "5d2e21d7b0d8c22f67483ef95ebdc39c0e6b6003" uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "0.1.6" +version = "0.2.4" [[deps.AMD]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] @@ -62,9 +62,9 @@ version = "0.1.29" [[deps.ArrayLayouts]] deps = ["FillArrays", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "dcda7e0ac618210eabf43751d5cafde100dd539b" +git-tree-sha1 = "0d61921af2799487b80453a44abb57db7a0c1381" uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.3.0" +version = "1.4.1" [[deps.ArtifactWrappers]] deps = ["Downloads", "Pkg"] @@ -76,10 +76,10 @@ version = "0.2.0" uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" [[deps.AtmosphericProfilesLibrary]] -deps = ["Dierckx"] -git-tree-sha1 = "66f7e7f704c848d5b09bd11c980bc28d83f75c77" +deps = ["Dierckx", "LinearAlgebra"] +git-tree-sha1 = "c6be1ce28b7870a60400c51c75dc1b08d6a8dd73" uuid = "86bc3604-9858-485a-bdbe-831ec50de11d" -version = "0.1.3" +version = "0.1.4" [[deps.Atomix]] deps = ["UnsafeAtomics"] @@ -144,15 +144,15 @@ version = "0.1.2" [[deps.CLIMAParameters]] deps = ["DocStringExtensions", "TOML", "Test"] -git-tree-sha1 = "d44564edc0950638a868e26472d474f717575b3f" +git-tree-sha1 = "d35d039179f27abc063f7ae5c564573fe5316bb2" uuid = "6eacf6c3-8458-43b9-ae03-caf5306d3d53" -version = "0.7.7" +version = "0.7.19" [[deps.CPUSummary]] deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] -git-tree-sha1 = "89e0654ed8c7aebad6d5ad235d6242c2d737a928" +git-tree-sha1 = "601f7e7b3d36f18790e2caf83a882d88e9b71ff1" uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.3" +version = "0.2.4" [[deps.CUDA]] deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "Preferences", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "SpecialFunctions", "UnsafeAtomicsLLVM"] @@ -210,9 +210,9 @@ version = "0.1.8" [[deps.ClimaAtmos]] deps = ["ArgParse", "ArtifactWrappers", "Artifacts", "AtmosphericProfilesLibrary", "CLIMAParameters", "CUDA", "ClimaComms", "ClimaCore", "ClimaTimeSteppers", "CloudMicrophysics", "Colors", "Dates", "Dierckx", "DiffEqBase", "DiffEqCallbacks", "Distributions", "DocStringExtensions", "FastGaussQuadrature", "ImageFiltering", "Insolation", "Interpolations", "IntervalSets", "JLD2", "LambertW", "LinearAlgebra", "Logging", "NCDatasets", "NVTX", "OrdinaryDiffEq", "Pkg", "Printf", "RRTMGP", "Random", "RootSolvers", "StaticArrays", "Statistics", "StatsBase", "SurfaceFluxes", "TerminalLoggers", "Test", "Thermodynamics", "YAML"] -git-tree-sha1 = "535927e938339558b705c8719eb97a29c2960156" +git-tree-sha1 = "fcb42f37a086e343b9e949261f2ec1cd4388cc5e" uuid = "b2c96348-7fb7-4fe0-8da9-78d88439e717" -version = "0.15.7" +version = "0.16.0" [[deps.ClimaComms]] deps = ["CUDA", "MPI"] @@ -221,10 +221,10 @@ uuid = "3a4d1b5c-c61d-41fd-a00a-5873ba7a1b0d" version = "0.5.3" [[deps.ClimaCore]] -deps = ["Adapt", "BandedMatrices", "BlockArrays", "CUDA", "ClimaComms", "CubedSphere", "DataStructures", "DiffEqBase", "DocStringExtensions", "ForwardDiff", "GaussQuadrature", "GilbertCurves", "HDF5", "InteractiveUtils", "IntervalSets", "LinearAlgebra", "PkgVersion", "RecursiveArrayTools", "Requires", "RootSolvers", "SparseArrays", "Static", "StaticArrays", "Statistics", "UnPack"] -git-tree-sha1 = "6eb2e785a605f1ea0bef9c2210b26a6756ef6d5e" +deps = ["Adapt", "BandedMatrices", "BlockArrays", "CUDA", "ClimaComms", "CubedSphere", "DataStructures", "DocStringExtensions", "ForwardDiff", "GaussQuadrature", "GilbertCurves", "HDF5", "InteractiveUtils", "IntervalSets", "LinearAlgebra", "PkgVersion", "RecursiveArrayTools", "Requires", "RootSolvers", "SparseArrays", "Static", "StaticArrays", "Statistics", "UnPack"] +git-tree-sha1 = "6841faabcaf23af38190e92abdb5eec3e6f8601d" uuid = "d414da3d-4745-48bb-8d80-42e94e092884" -version = "0.10.47" +version = "0.10.50" [[deps.ClimaCorePlots]] deps = ["ClimaCore", "RecipesBase", "StaticArrays", "TriplotBase"] @@ -333,9 +333,9 @@ version = "2.2.1" [[deps.ConstructionBase]] deps = ["LinearAlgebra"] -git-tree-sha1 = "fe2838a593b5f776e1597e086dcd47560d94e816" +git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.3" +version = "1.5.4" [[deps.Contour]] git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" @@ -408,15 +408,15 @@ version = "0.1.0+0" [[deps.DiffEqBase]] deps = ["ArrayInterface", "ChainRulesCore", "DataStructures", "Distributions", "DocStringExtensions", "EnumX", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "Printf", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces", "ZygoteRules"] -git-tree-sha1 = "ed586656058844e48660c6d6fdb384e83afc50db" +git-tree-sha1 = "dee066b8dce741815729f5973b6db757416948b7" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.128.0" +version = "6.128.4" [[deps.DiffEqCallbacks]] deps = ["DataStructures", "DiffEqBase", "ForwardDiff", "LinearAlgebra", "Markdown", "NLsolve", "Parameters", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] -git-tree-sha1 = "303ab70e4524843653e55e16a3dc7b75e677a3dd" +git-tree-sha1 = "9c7d3a84264d935f6981504388b202a770113faa" uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "2.27.0" +version = "2.29.1" [[deps.DiffResults]] deps = ["StaticArraysCore"] @@ -486,10 +486,10 @@ uuid = "2e619515-83b5-522b-bb60-26c02a35a201" version = "2.5.0+0" [[deps.ExponentialUtilities]] -deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "Printf", "SnoopPrecompile", "SparseArrays", "libblastrampoline_jll"] -git-tree-sha1 = "fb7dbef7d2631e2d02c49e2750f7447648b0ec9b" +deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"] +git-tree-sha1 = "602e4585bcbd5a25bc06f514724593d13ff9e862" uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" -version = "1.24.0" +version = "1.25.0" [[deps.ExprTools]] git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" @@ -590,9 +590,9 @@ version = "0.4.2" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "00e252f4d706b3d55a8863432e742bf5717b498d" +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.35" +version = "0.10.36" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] @@ -681,10 +681,10 @@ uuid = "88fa7841-ef32-4516-bb70-c6ec135699d9" version = "0.1.0" [[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "d3b3624125c1474292d0d8ed0f65554ac37ddb23" +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.74.0+2" +version = "2.76.5+0" [[deps.Glob]] git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" @@ -709,10 +709,10 @@ uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" version = "1.0.2" [[deps.HDF5]] -deps = ["Compat", "HDF5_jll", "Libdl", "Mmap", "Printf", "Random", "Requires", "UUIDs"] -git-tree-sha1 = "114e20044677badbc631ee6fdc80a67920561a29" +deps = ["Compat", "HDF5_jll", "Libdl", "MPIPreferences", "Mmap", "Preferences", "Printf", "Random", "Requires", "UUIDs"] +git-tree-sha1 = "ec7df74b7b2022e8252a8bfd4ec23411491adc3b" uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" -version = "0.16.16" +version = "0.17.0" [[deps.HDF5_jll]] deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "OpenSSL_jll", "Pkg", "Zlib_jll"] @@ -722,9 +722,9 @@ version = "1.12.2+2" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "cb56ccdd481c0dd7f975ad2b3b62d9eda088f7e2" +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.14" +version = "1.10.0" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] @@ -854,9 +854,9 @@ version = "0.2.1+0" [[deps.KLU]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] -git-tree-sha1 = "764164ed65c30738750965d55652db9c94c59bfe" +git-tree-sha1 = "884c2968c2e8e7e6bf5956af88cb46aa745c854b" uuid = "ef3ab10e-7fda-4108-b977-705223b18434" -version = "0.4.0" +version = "0.4.1" [[deps.KernelAbstractions]] deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] @@ -866,9 +866,9 @@ version = "0.9.8" [[deps.Krylov]] deps = ["LinearAlgebra", "Printf", "SparseArrays"] -git-tree-sha1 = "fbda7c58464204d92f3b158578fb0b3d4224cea5" +git-tree-sha1 = "17e462054b42dcdda73e9a9ba0c67754170c88ae" uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" -version = "0.9.3" +version = "0.9.4" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -890,15 +890,15 @@ version = "3.0.0+1" [[deps.LLVM]] deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Printf", "Unicode"] -git-tree-sha1 = "8695a49bfe05a2dc0feeefd06b4ca6361a018729" +git-tree-sha1 = "a9d2ce1d5007b1e8f6c5b89c5a31ff8bd146db5c" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "6.1.0" +version = "6.2.1" [[deps.LLVMExtra_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "c35203c1e1002747da220ffc3c0762ce7754b08c" +git-tree-sha1 = "7ca6850ae880cc99b59b88517545f91a52020afa" uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.23+0" +version = "0.0.25+0" [[deps.LLVMOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -997,10 +997,10 @@ uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" version = "1.42.0+0" [[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" +version = "1.17.0+0" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1179,9 +1179,9 @@ version = "4.5.1" [[deps.NVTX]] deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"] -git-tree-sha1 = "c1bfdab07fa259baa4604a05862c43004dd3cd45" +git-tree-sha1 = "8bc9ce4233be3c63f8dcd78ccaf1b63a9c0baa34" uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f" -version = "0.3.1" +version = "0.3.3" [[deps.NVTX_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1253,9 +1253,9 @@ version = "1.4.1" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "bbb5c2115d63c2f1451cb70e5ef75e8fe4707019" +git-tree-sha1 = "a12e56c72edee3ce6b96667745e6cbbe5498f200" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.22+0" +version = "1.1.23+0" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1276,9 +1276,9 @@ version = "1.6.2" [[deps.OrdinaryDiffEq]] deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "IfElse", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "LoopVectorization", "MacroTools", "MuladdMacro", "NLsolve", "NonlinearSolve", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLNLSolve", "SciMLOperators", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "SparseDiffTools", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] -git-tree-sha1 = "47c560dcb059570bdbd9f887a6b8958190e498a4" +git-tree-sha1 = "ba3ed480f991b846cf9a8118d3370d9752e7166d" uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -version = "6.53.4" +version = "6.55.0" [[deps.PCRE2_jll]] deps = ["Artifacts", "Libdl"] @@ -1351,15 +1351,15 @@ version = "1.3.5" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "9f8675a55b37a70aa23177ec110f6e3f4dd68466" +git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.38.17" +version = "1.39.0" [[deps.Polyester]] deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Requires", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] -git-tree-sha1 = "3d811babe092a6e7b130beee84998fe7663348b6" +git-tree-sha1 = "d4c9ebdc6528a4aaf7cfcf43b482e927267b400d" uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" -version = "0.7.5" +version = "0.7.6" [[deps.PolyesterWeave]] deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] @@ -1465,9 +1465,9 @@ version = "0.6.12" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "Requires", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "7ed35fb5f831aaf09c2d7c8736d44667a1afdcb0" +git-tree-sha1 = "d7087c013e8a496ff396bae843b1e16d9a30ede8" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "2.38.7" +version = "2.38.10" [[deps.RecursiveFactorization]] deps = ["LinearAlgebra", "LoopVectorization", "Polyester", "PrecompileTools", "StrideArraysCore", "TriangularSolve"] @@ -1532,10 +1532,10 @@ uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" version = "0.6.39" [[deps.SciMLBase]] -deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] -git-tree-sha1 = "04370090604cd399db5bebddb636d80ab9d338e9" +deps = ["ADTypes", "ArrayInterface", "ChainRulesCore", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FillArrays", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces", "ZygoteRules"] +git-tree-sha1 = "6de099dba3c80e23bde1d19011161ea91a23ed6b" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "1.94.0" +version = "1.98.0" [[deps.SciMLNLSolve]] deps = ["DiffEqBase", "LineSearches", "NLsolve", "Reexport", "SciMLBase"] @@ -1616,10 +1616,10 @@ deps = ["LinearAlgebra", "Random"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [[deps.SparseDiffTools]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "Reexport", "Requires", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "VertexSafeGraphs"] -git-tree-sha1 = "4c1a57bcbc0b795fbfdc2009e70f9c2fd2815bfe" +deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "UnPack", "VertexSafeGraphs"] +git-tree-sha1 = "42d131931906bf4f0af97a7113c8456d0a8aff9d" uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "2.4.1" +version = "2.6.0" [[deps.Sparspak]] deps = ["Libdl", "LinearAlgebra", "Logging", "OffsetArrays", "Printf", "SparseArrays", "Test"] @@ -1653,9 +1653,9 @@ version = "1.4.1" [[deps.StaticArrays]] deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "9cabadf6e7cd2349b6cf49f1915ad2028d65e881" +git-tree-sha1 = "51621cca8651d9e334a659443a74ce50a3b6dfab" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.6.2" +version = "1.6.3" [[deps.StaticArraysCore]] git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" @@ -1668,9 +1668,9 @@ uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" [[deps.StatsAPI]] deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" +version = "1.7.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] @@ -1697,9 +1697,10 @@ uuid = "69024149-9ee7-55f6-a4c4-859efe599b68" version = "0.3.7" [[deps.StringManipulation]] -git-tree-sha1 = "46da2434b41f41ac3594ee9816ce5541c6096123" +deps = ["PrecompileTools"] +git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.0" +version = "0.3.4" [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] diff --git a/experiments/AMIP/modular/Project.toml b/experiments/AMIP/modular/Project.toml index b9d72c8c93..efee17a891 100644 --- a/experiments/AMIP/modular/Project.toml +++ b/experiments/AMIP/modular/Project.toml @@ -45,12 +45,14 @@ TerminalLoggers = "5d786b92-1e48-4d6f-9151-6b4477ca9bed" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Thermodynamics = "b60c26fb-14c3-4610-9d3e-2d17fe7ff00c" UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6" [compat] ArgParse = "1.1" ArtifactWrappers = "0.2" AtmosphericProfilesLibrary = "0.1" CLIMAParameters = "0.4, 0.5, 0.6, 0.7" +ClimaAtmos = "0.16" ClimaCorePlots = "0.2" ClimaCoupler = "0.1" ClimaTimeSteppers = "0.7" @@ -70,6 +72,7 @@ NVTX = "0.3" ProgressLogging = "0.1" RRTMGP = "0.9" StaticArrays = "1" +YAML = "0.4" julia = "1.8.5" [extras] diff --git a/experiments/AMIP/modular/cli_options.jl b/experiments/AMIP/modular/cli_options.jl index f53cc36264..da881e47e1 100644 --- a/experiments/AMIP/modular/cli_options.jl +++ b/experiments/AMIP/modular/cli_options.jl @@ -6,7 +6,6 @@ function argparse_settings() "--run_name" help = "Name of this run." arg_type = String - default = "run" "--dt_cpl" help = " Coupling time step in seconds" arg_type = Int @@ -51,389 +50,9 @@ function argparse_settings() help = "Restart time" arg_type = Int default = 0 - # ClimaAtmos flags - "--FLOAT_TYPE" - help = "Float type" - arg_type = String - default = "Float32" - "--t_end" - help = "Simulation end time. Examples: [`1200days`, `40secs`]" - arg_type = String - default = "10days" - "--dt" - help = "Simulation time step. Examples: [`10secs`, `1hours`]" - arg_type = String - default = "600secs" - "--dt_save_to_sol" - help = "Time between saving solution. Examples: [`10days`, `1hours`, `Inf` (do not save)]" - arg_type = String - default = "1days" - "--dt_save_to_disk" - help = "Time between saving to disk. Examples: [`10secs`, `1hours`, `Inf` (do not save)]" - arg_type = String - default = "Inf" - "--dt_save_restart" - help = "Time between saving restart files to disk. Examples: [`10secs`, `1hours`, `Inf` (do not save)]" - arg_type = String - default = "Inf" - "--dt_rad" - help = "Time between calling radiation callback for sphere configurations" - arg_type = String - default = "6hours" - "--config" - help = "Spatial configuration [`sphere` (default), `column`, `box`, `plane`]" - arg_type = String - default = "sphere" - "--initial_condition" - help = "Initial condition [`DryBaroclinicWave`, `MoistBaroclinicWave`, `DecayingProfile`, `IsothermalProfile`, `Bomex`, `DryDensityCurrentProfile`, `AgnesiHProfile`, `ScharProfile`, `RisingThermalBubbleProfile`]" - arg_type = String - default = "DecayingProfile" - "--moist" - help = "Moisture model [`dry` (default), `equil`, `non_equil`]" - arg_type = String - default = "dry" - "--precip_model" - help = "Precipitation model [`nothing` (default), `0M`]" - arg_type = String - "--forcing" - help = "Forcing [`nothing` (default), `held_suarez`]" - arg_type = String - "--subsidence" - help = "Subsidence [`nothing` (default), `Bomex`, `LifeCycleTan2018`, `Rico`, `DYCOMS`]" - arg_type = String - "--ls_adv" - help = "Large-scale advection [`nothing` (default), `Bomex`, `LifeCycleTan2018`, `Rico`, `ARM_SGP`, `GATE_III`]" - arg_type = String - "--edmf_coriolis" - help = "EDMF coriolis [`nothing` (default), `Bomex`,`LifeCycleTan2018`,`Rico`,`ARM_SGP`,`DYCOMS_RF01`,`DYCOMS_RF02`,`GABLS`]" - arg_type = String - "--edmfx_adv_test" - help = "EDMFX advection test switches off all velocity tendencies in GM and turbconc [`false` (default), `true`]" - arg_type = Bool - default = false - "--edmfx_entr_detr" - help = "If set to true, it switches on EDMFX entrainment/detrainment closure. [`true`, `false` (default)]" - arg_type = Bool - default = false - "--entr_coeff" - help = "Entrainment coefficient" - arg_type = Float64 - default = Float64(1.0) - "--detr_coeff" - help = "Detrainment coefficient" - arg_type = Float64 - default = Float64(0.001) - "--edmfx_sgs_flux" - help = "If set to true, it switches on EDMFX SGS flux. [`true`, `false` (default)]" - arg_type = Bool - default = false - "--edmfx_nh_pressure" - help = "If set to true, it switches on EDMFX pressure drag closure. [`true`, `false` (default)]" - arg_type = Bool - default = false - "--vert_diff" - help = "Vertical diffusion [`false` (default), `VerticalDiffusion`, `true` (defaults to `VerticalDiffusion`)]" - arg_type = String - default = "false" - "--prognostic_surface" - help = "Determines if surface temperature is prognostic [`false` (default), , `true`, `PrognosticSurfaceTemperature`, `PrescribedSurfaceTemperature`]" - arg_type = String - default = "false" - "--surface_setup" - help = "Surface flux scheme [`DefaultExchangeCoefficients` (default), `DefaultMoninObukhov`]" - arg_type = String - default = "DefaultExchangeCoefficients" - "--surface_thermo_state_type" - help = "Surface thermo state type [`GCMSurfaceThermoState` (default), `PrescribedThermoState`]" - arg_type = String - default = "GCMSurfaceThermoState" - "--surface_temperature" - help = "Prescribed surface temperature functional form ['ZonallySymmetric' (default), 'ZonallyAsymmetric']" - arg_type = String - default = "ZonallySymmetric" - "--C_E" - help = "Bulk transfer coefficient" - arg_type = Float64 - default = Float64(0.0044) - "--turbconv" - help = "Turbulence convection scheme [`nothing` (default), `edmf`]" - arg_type = String - "--turbconv_case" - help = "The case run by Turbulence convection scheme [`Bomex` (default), `Bomex`, `DYCOMS_RF01`, `TRMM_LBA`, `GABLS`]" - arg_type = String - "--prognostic_tke" - help = "Whether the turbulence convection scheme uses prognostic or prescribed TKE [`false` (default), `true`]" - arg_type = Bool - default = false - "--hyperdiff" - help = "Hyperdiffusion [`ClimaHyperdiffusion` (or `true`; default), `none` (or `false`)]" - arg_type = String - default = "ClimaHyperdiffusion" - "--idealized_insolation" - help = "Use idealized insolation in radiation model [`false`, `true` (default)]" - arg_type = Bool - default = true - "--idealized_h2o" - help = "Use idealized H2O in radiation model [`false` (default), `true`]" - arg_type = Bool - default = false - "--idealized_clouds" - help = "Use idealized clouds in radiation model [`false` (default), `true`]" - arg_type = Bool - default = false - "--rad" - help = "Radiation model [`nothing` (default), `gray`, `clearsky`, `allsky`, `allskywithclear`]" - arg_type = String - "--energy_name" - help = "Energy variable name [`rhoe` (default), `rhotheta`]" - arg_type = String - default = "rhoe" - "--perturb_initstate" - help = "Add a perturbation to the initial condition [`false`, `true` (default)]" - arg_type = Bool - default = true - "--discrete_hydrostatic_balance" - help = "Set the initial state to discrete hydrostatic balance" - arg_type = Bool - default = false - "--energy_upwinding" - help = "Energy upwinding mode [`none` (default), `first_order` , `third_order`, `boris_book`, `zalesak`]" - arg_type = Symbol - default = :none - "--tracer_upwinding" - help = "Tracer upwinding mode [`none` (default), `first_order` , `third_order`, `boris_book`, `zalesak`]" - arg_type = Symbol - default = :none - "--density_upwinding" - help = "Denisity upwinding mode [`none` (default), `first_order` , `third_order`, `boris_book`, `zalesak`]" - arg_type = Symbol - default = :none - "--edmfx_upwinding" - help = "EDMFX upwinding mode [`none` (default), `first_order` , `third_order`, `boris_book`, `zalesak`]" - arg_type = Symbol - default = :none # TODO: change to :first_order (or higher?) - "--ode_algo" - help = "ODE algorithm [`ARS343` (default), `SSP333`, `IMKG343a`, `ODE.Euler`, `ODE.IMEXEuler`, `ODE.Rosenbrock23`, etc.]" - arg_type = String - default = "ARS343" - "--max_newton_iters" - help = "Maximum number of Newton's method iterations (only for ODE algorithms that use Newton's method)" - arg_type = Int - default = 1 - "--use_newton_rtol" - help = "Whether to check if the current iteration of Newton's method has an error within a relative tolerance, instead of always taking the maximum number of iterations (only for ClimaTimeSteppers.jl)" - arg_type = Bool - default = false - "--newton_rtol" - help = "Relative tolerance of Newton's method (only for ClimaTimeSteppers.jl; only used when `use_newton_rtol` is `true`)" - arg_type = Float64 - default = Float64(1e-5) - "--use_krylov_method" - help = "Whether to use a Krylov method to solve the linear system in Newton's method (only for ClimaTimeSteppers.jl)" - arg_type = Bool - default = false - "--krylov_rtol" - help = "Relative tolerance of the Krylov method (only for ClimaTimeSteppers.jl; only used if `use_krylov_method` is `true`)" - arg_type = Float64 - default = Float64(0.1) - "--use_dynamic_krylov_rtol" - help = "Whether to use Eisenstat-Walker forcing instead of a constant relative tolerance in the Krylov method (only for ClimaTimeSteppers.jl)" - arg_type = Bool - default = false - "--eisenstat_walker_forcing_alpha" - help = "Value of alpha to use for Eisenstat-Walker forcing (only for ClimaTimeSteppers.jl; only used if `use_krylov_method` and `use_dynamic_krylov_rtol` are `true`)" - arg_type = Float64 - default = Float64(2) - "--jvp_step_adjustment" - help = "Amount by which the step size of the forward difference approximation of the Jacobian-vector product in the Krylov method should be scaled (only used if `use_krylov_method` is `true`)" - arg_type = Float64 - default = Float64(1) - "--split_ode" - help = "Use split of ODE problem. Examples: [`true` (implicit, default), `false` (explicit)]" - arg_type = Bool - default = true - "--regression_test" - help = "(Bool) perform regression test" - arg_type = Bool - default = false - "--output_dir" - help = "Output directory" - arg_type = String - "--job_id" - help = "Uniquely identifying string for a particular job" - arg_type = String - "--reference_job_id" - help = "Identifier of job to use as the \"reference\" solution in the quicklook plot; the current job's results get compared to the results of the quicklook job on the main branch (only used if `debugging_tc` is `true`)" - arg_type = String - "--trunc_stack_traces" - help = "Set to `true` to truncate printing of ClimaCore `Field`s" - arg_type = Bool - default = true - "--fps" - help = "Frames per second for animations" - arg_type = Int - default = 5 - "--post_process" - help = "Post process [`true` (default), `false`]" - arg_type = Bool - default = true - "--h_elem" - help = "number of elements per edge on a cubed sphere" - arg_type = Int - default = 6 - "--x_elem" - help = "number of horizontal elements in the x-direction" - arg_type = Int - default = 6 - "--y_elem" - help = "number of horizontal elements in the y-direction" - arg_type = Int - default = 6 - "--z_elem" - help = "number of vertical elements" - arg_type = Int - default = 10 - "--nh_poly" - help = "Horizontal polynomial degree. Note: The number of quadrature points in 1D within each horizontal element is then Nq = <--nh_poly> + 1" - arg_type = Int - default = 3 - "--bubble" - help = "Enable bubble correction for more accurate surface areas" - arg_type = Bool - default = true - "--x_max" - help = "Model domain size, x direction. Default: 300km" - arg_type = Float64 - default = Float64(300e3) - "--y_max" - help = "Model domain size, y direction. Default: 300km" - arg_type = Float64 - default = Float64(300e3) - "--z_max" - help = "Model top height. Default: 30km" - arg_type = Float64 - default = Float64(30e3) - "--z_stretch" - help = "Stretch grid in z-direction. [`true` (default), `false`]" - arg_type = Bool - default = true - "--dz_bottom" - help = "Model bottom grid depth. Default: 500m" - arg_type = Float64 - default = Float64(500) - "--dz_top" - help = "Model top grid depth. Default: 5000m" - arg_type = Float64 - default = Float64(5000) - "--kappa_4" - help = "Hyperdiffusion parameter" - arg_type = Float64 - default = Float64(2e17) - "--divergence_damping_factor" - help = "Divergence damping factor" - arg_type = Float64 - default = Float64(1) - "--rayleigh_sponge" - help = "Rayleigh sponge [`true`, `false` (default)]" - arg_type = Bool - default = false - "--viscous_sponge" - help = "Viscous sponge [`true`, `false` (default)]" - arg_type = Bool - default = false - "--zd_rayleigh" - help = "Rayleigh sponge height" - arg_type = Float64 - default = Float64(15e3) - "--alpha_rayleigh_uh" - help = "Rayleigh sponge coefficient for horizontal velocity" - arg_type = Float64 - default = Float64(1e-4) - "--alpha_rayleigh_w" - help = "Rayleigh sponge coefficient for vertical velocity" - arg_type = Float64 - default = Float64(1) - "--zd_viscous" - help = "Viscous sponge height" - arg_type = Float64 - default = Float64(15e3) - "--kappa_2_sponge" - help = "Viscous sponge coefficient" - arg_type = Float64 - default = Float64(1e6) - "--start_date" - help = "Start date of the simulation" - arg_type = String - default = "19790101" - "--topography" - help = "Define the surface elevation profile [`NoWarp`,`Earth`,`DCMIP200`,`Agnesi`]" - arg_type = String - default = "NoWarp" - "--topo_smoothing" - help = "Choose whether to order-2 smoothing on the LGL mesh" - arg_type = Bool - default = false - "--smoothing_order" - help = "Define the surface smoothing kernel factor (integer) [`3 (default)`]" - arg_type = Int - default = 3 - "--apply_limiter" - help = "Apply a horizontal limiter to every tracer [`true` (default), `false`]" - arg_type = Bool - default = true - "--imex_edmf_turbconv" - help = "Whether to split EDMF's `compute_turbconv_tendencies!` into implicit and explicit components" - arg_type = Bool - default = false - "--imex_edmf_gm" - help = "Whether to split EDMF's `compute_gm_tendencies!` into implicit and explicit components" - arg_type = Bool - default = false - "--debugging_tc" - help = "Save most of the tc aux state to HDF5 file [`false` (default), `true`]" - arg_type = Bool - default = false - "--test_edmf_consistency" - help = "Test edmf equation consistency [`false` (default), `true`]" - arg_type = Bool - default = false - "--test_dycore_consistency" - help = "Test dycore consistency [`false` (default), `true`]" - arg_type = Bool - default = false - "--use_reference_state" - help = "Subtract a reference state from the dycore equations [`false`, `true` (default)]" - arg_type = Bool - default = true - "--check_conservation" - help = "Check conservation of mass and energy [`false` (default), `true`]" - arg_type = Bool - default = false - "--non_orographic_gravity_wave" - help = "Apply parameterization for convective gravity wave forcing on horizontal mean flow [`false` (default), `true`]" - arg_type = Bool - default = false - "--orographic_gravity_wave" - help = "Orographic drag on horizontal mean flow [`nothing` (default), `gfdl_restart`, `raw_topo`]" - arg_type = String - "--device" - help = "Device type to use [`auto` (default) `CPUSingleThreaded`, `CPUMultiThreaded`, `CUDADevice`]" - arg_type = String - default = "auto" - "--perf_summary" - help = "Flag for collecting performance summary information" - arg_type = Bool - default = false - "--perf_mode" - help = "A flag for analyzing performance [`PerfStandard` (default), `PerfExperimental`]" - arg_type = String - default = "PerfStandard" - "--target_job" - help = "An (optional) job to target for analyzing performance" - arg_type = String - "--toml" - help = "A toml file used to override model parameters and configurations. In the case of conflicts, CLI arguments take priority over the toml" - arg_type = String + # ClimaAtmos flag + "--config_file" + help = "A yaml file used to set model configurations" end return s end diff --git a/experiments/AMIP/modular/components/atmosphere/climaatmos_init.jl b/experiments/AMIP/modular/components/atmosphere/climaatmos_init.jl index 4236692611..c937437841 100644 --- a/experiments/AMIP/modular/components/atmosphere/climaatmos_init.jl +++ b/experiments/AMIP/modular/components/atmosphere/climaatmos_init.jl @@ -1,5 +1,4 @@ # atmos_init: for ClimaAtmos pre-AMIP interface -import ClimaAtmos using ClimaAtmos: RRTMGPI import ClimaAtmos: CT1, CT2, CT12, CT3, C3, C12, unit_basis_vector_data, ⊗ import ClimaCoupler.FluxCalculator: @@ -24,8 +23,9 @@ name(::ClimaAtmosSimulation) = "ClimaAtmosSimulation" function atmos_init(::Type{FT}, parsed_args::Dict) where {FT} - atmos_config = ClimaAtmos.AtmosConfig(argparse_settings(); parsed_args) - integrator = ClimaAtmos.get_integrator(atmos_config) + # By passing `parsed_args` to `AtmosConfig`, `parsed_args` overwrites the default atmos config + atmos_config = CA.AtmosConfig(; config_dict = parsed_args) + integrator = CA.get_integrator(atmos_config) Y = integrator.u center_space = axes(Y.c.ρe_tot) face_space = axes(Y.f.u₃) @@ -149,8 +149,8 @@ function coupler_surface_setup( csf_sfc = (; T = nothing, z0m = nothing, z0b = nothing, beta = nothing, q_vap = nothing), ) - surface_state(z0m, z0b, T, beta, q_vap) = ClimaAtmos.SurfaceConditions.SurfaceState(; - parameterization = ClimaAtmos.SurfaceConditions.MoninObukhov(; z0m, z0b), + surface_state(z0m, z0b, T, beta, q_vap) = CA.SurfaceConditions.SurfaceState(; + parameterization = CA.SurfaceConditions.MoninObukhov(; z0m, z0b), T, beta, q_vap, @@ -200,7 +200,7 @@ timestep from ClimaCoupler. """ function atmos_turbulent_fluxes!(atmos_sim::ClimaAtmosSimulation, csf) new_p = get_new_cache(atmos_sim, csf) - ClimaAtmos.SurfaceConditions.update_surface_conditions!(atmos_sim.integrator.u, new_p, atmos_sim.integrator.t) + CA.SurfaceConditions.update_surface_conditions!(atmos_sim.integrator.u, new_p, atmos_sim.integrator.t) atmos_sim.integrator.p.sfc_conditions .= new_p.sfc_conditions end diff --git a/experiments/AMIP/modular/coupler_driver_modular.jl b/experiments/AMIP/modular/coupler_driver_modular.jl index 39cd56d478..2f51741711 100644 --- a/experiments/AMIP/modular/coupler_driver_modular.jl +++ b/experiments/AMIP/modular/coupler_driver_modular.jl @@ -59,6 +59,8 @@ using Dates using UnPack using Plots using Statistics: mean +import ClimaAtmos as CA +import YAML using ClimaCore.Utilities: half, PlusHalf using ClimaCore: InputOutput, Fields @@ -74,7 +76,7 @@ if isinteractive() parsed_args["coupled"] = true #hide parsed_args["surface_setup"] = "PrescribedSurface" #hide # necessary to stop Atmos from calculating its own surface fluxes parsed_args["moist"] = "equil" #hide - parsed_args["vert_diff"] = true #hide + parsed_args["vert_diff"] = "true" #hide parsed_args["rad"] = "gray" #hide parsed_args["energy_check"] = true #hide parsed_args["mode_name"] = "slabplanet" #hide @@ -88,9 +90,29 @@ if isinteractive() # parsed_args["dt_save_restart"] = "5days" #hide parsed_args["precip_model"] = "0M" #hide parsed_args["job_id"] = "interactive_debug_run" + parsed_args["run_name"] = "interactive_debug_run" parsed_args["monthly_checkpoint"] = true + parsed_args["config_file"] = + isnothing(parsed_args["config_file"]) ? "../../../config/model_configs/slabplanet_default.yml" : + parsed_args["config_file"] end +# read in config dictionary from file +config_dict = YAML.load_file(parsed_args["config_file"]) + +atmos_config = if !isnothing(config_dict) + CA.override_default_config(config_dict) +elseif !isnothing(parsed_args["config_file"]) + CA.override_default_config(parsed_args["config_file"]) +else # If no config file is specified, we use the Atmos default config dict as `atmos_config` + @info "Using Atmos default configuration" + CA.default_config_dict() +end + +# merge dictionaries. If there are common keys, the last dictorionary in the `merge` arguments takes precedence: +parsed_args = merge(config_dict, atmos_config, parsed_args) +parsed_args["run_name"] = isnothing(parsed_args["run_name"]) ? config_dict["run_name"] : parsed_args["run_name"] + ## read in some parsed command line arguments mode_name = parsed_args["mode_name"] run_name = parsed_args["run_name"] @@ -148,7 +170,11 @@ import ClimaCoupler.FieldExchanger: import ClimaCoupler.Checkpointer: checkpoint_model_state, get_model_state_vector, restart_model_state! pkg_dir = pkgdir(ClimaCoupler) -COUPLER_OUTPUT_DIR = joinpath(pkg_dir, "experiments/AMIP/modular/output", joinpath(mode_name, run_name)) +if isinteractive() + COUPLER_OUTPUT_DIR = joinpath("output", joinpath(mode_name, run_name)) # TempestRemap fails if interactive and paths are too long +else + COUPLER_OUTPUT_DIR = joinpath(pkg_dir, "experiments/AMIP/modular/output", joinpath(mode_name, run_name)) +end mkpath(COUPLER_OUTPUT_DIR) REGRID_DIR = joinpath(COUPLER_OUTPUT_DIR, "regrid_tmp/") @@ -381,7 +407,7 @@ diagnostics = (monthly_3d_diags, monthly_2d_diags) conservation_checks = nothing if energy_check @assert( - mode_name == "slabplanet" && !ClimaAtmos.is_distributed(ClimaComms.context(boundary_space)), + mode_name == "slabplanet" && !CA.is_distributed(ClimaComms.context(boundary_space)), "Only non-distributed slabplanet allowable for energy_check" ) conservation_checks = @@ -452,7 +478,7 @@ elseif turbulent_fluxes isa PartitionedStateFluxes # update atmos sfc_conditions for surface temperature # TODO: this is hard coded and needs to be simplified (need CA modification) new_p = get_new_cache(atmos_sim, cs.fields) - ClimaAtmos.SurfaceConditions.update_surface_conditions!(atmos_sim.integrator.u, new_p, atmos_sim.integrator.t) # sets T_sfc (but SF calculation not necessary - CA) + CA.SurfaceConditions.update_surface_conditions!(atmos_sim.integrator.u, new_p, atmos_sim.integrator.t) # sets T_sfc (but SF calculation not necessary - CA) atmos_sim.integrator.p.sfc_conditions .= new_p.sfc_conditions end @@ -533,11 +559,7 @@ function solve_coupler!(cs) # update atmos sfc_conditions for surface temperature - TODO: this needs to be simplified (need CA modification) new_p = get_new_cache(atmos_sim, cs.fields) - ClimaAtmos.SurfaceConditions.update_surface_conditions!( - atmos_sim.integrator.u, - new_p, - atmos_sim.integrator.t, - ) # to set T_sfc (but SF calculation not necessary - CA modification) + CA.SurfaceConditions.update_surface_conditions!(atmos_sim.integrator.u, new_p, atmos_sim.integrator.t) # to set T_sfc (but SF calculation not necessary - CA modification) atmos_sim.integrator.p.sfc_conditions .= new_p.sfc_conditions end diff --git a/perf/Manifest.toml b/perf/Manifest.toml index 6281c50f16..7006f6d466 100644 --- a/perf/Manifest.toml +++ b/perf/Manifest.toml @@ -2,12 +2,12 @@ julia_version = "1.8.5" manifest_format = "2.0" -project_hash = "ed64f0bf960c26121ab0c4b5691b73feff0c8714" +project_hash = "e3c6b4b79f09f69e16afcabaa745b4890f358abd" [[deps.ADTypes]] -git-tree-sha1 = "f5c25e8a5b29b5e941b7408bc8cc79fea4d9ef9a" +git-tree-sha1 = "5d2e21d7b0d8c22f67483ef95ebdc39c0e6b6003" uuid = "47edcb42-4c32-4615-8424-f2b9edc5f35b" -version = "0.1.6" +version = "0.2.4" [[deps.AMD]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] @@ -62,9 +62,9 @@ version = "0.1.29" [[deps.ArrayLayouts]] deps = ["FillArrays", "LinearAlgebra", "SparseArrays"] -git-tree-sha1 = "dcda7e0ac618210eabf43751d5cafde100dd539b" +git-tree-sha1 = "0d61921af2799487b80453a44abb57db7a0c1381" uuid = "4c555306-a7a7-4459-81d9-ec55ddd5c99a" -version = "1.3.0" +version = "1.4.1" [[deps.ArtifactWrappers]] deps = ["Downloads", "Pkg"] @@ -76,10 +76,10 @@ version = "0.2.0" uuid = "56f22d72-fd6d-98f1-02f0-08ddc0907c33" [[deps.AtmosphericProfilesLibrary]] -deps = ["Dierckx"] -git-tree-sha1 = "66f7e7f704c848d5b09bd11c980bc28d83f75c77" +deps = ["Dierckx", "LinearAlgebra"] +git-tree-sha1 = "c6be1ce28b7870a60400c51c75dc1b08d6a8dd73" uuid = "86bc3604-9858-485a-bdbe-831ec50de11d" -version = "0.1.3" +version = "0.1.4" [[deps.Atomix]] deps = ["UnsafeAtomics"] @@ -144,15 +144,15 @@ version = "0.1.2" [[deps.CLIMAParameters]] deps = ["DocStringExtensions", "TOML", "Test"] -git-tree-sha1 = "d44564edc0950638a868e26472d474f717575b3f" +git-tree-sha1 = "d35d039179f27abc063f7ae5c564573fe5316bb2" uuid = "6eacf6c3-8458-43b9-ae03-caf5306d3d53" -version = "0.7.7" +version = "0.7.19" [[deps.CPUSummary]] deps = ["CpuId", "IfElse", "PrecompileTools", "Static"] -git-tree-sha1 = "89e0654ed8c7aebad6d5ad235d6242c2d737a928" +git-tree-sha1 = "601f7e7b3d36f18790e2caf83a882d88e9b71ff1" uuid = "2a0fbf3d-bb9c-48f3-b0a9-814d99fd7ab9" -version = "0.2.3" +version = "0.2.4" [[deps.CUDA]] deps = ["AbstractFFTs", "Adapt", "BFloat16s", "CEnum", "CUDA_Driver_jll", "CUDA_Runtime_Discovery", "CUDA_Runtime_jll", "ExprTools", "GPUArrays", "GPUCompiler", "KernelAbstractions", "LLVM", "LazyArtifacts", "Libdl", "LinearAlgebra", "Logging", "Preferences", "Printf", "Random", "Random123", "RandomNumbers", "Reexport", "Requires", "SparseArrays", "SpecialFunctions", "UnsafeAtomicsLLVM"] @@ -210,9 +210,9 @@ version = "0.1.8" [[deps.ClimaAtmos]] deps = ["ArgParse", "ArtifactWrappers", "Artifacts", "AtmosphericProfilesLibrary", "CLIMAParameters", "CUDA", "ClimaComms", "ClimaCore", "ClimaTimeSteppers", "CloudMicrophysics", "Colors", "Dates", "Dierckx", "DiffEqBase", "DiffEqCallbacks", "Distributions", "DocStringExtensions", "FastGaussQuadrature", "ImageFiltering", "Insolation", "Interpolations", "IntervalSets", "JLD2", "LambertW", "LinearAlgebra", "Logging", "NCDatasets", "NVTX", "OrdinaryDiffEq", "Pkg", "Printf", "RRTMGP", "Random", "RootSolvers", "StaticArrays", "Statistics", "StatsBase", "SurfaceFluxes", "TerminalLoggers", "Test", "Thermodynamics", "YAML"] -git-tree-sha1 = "535927e938339558b705c8719eb97a29c2960156" +git-tree-sha1 = "fcb42f37a086e343b9e949261f2ec1cd4388cc5e" uuid = "b2c96348-7fb7-4fe0-8da9-78d88439e717" -version = "0.15.7" +version = "0.16.0" [[deps.ClimaComms]] deps = ["CUDA", "MPI"] @@ -221,10 +221,10 @@ uuid = "3a4d1b5c-c61d-41fd-a00a-5873ba7a1b0d" version = "0.5.3" [[deps.ClimaCore]] -deps = ["Adapt", "BandedMatrices", "BlockArrays", "CUDA", "ClimaComms", "CubedSphere", "DataStructures", "DiffEqBase", "DocStringExtensions", "ForwardDiff", "GaussQuadrature", "GilbertCurves", "HDF5", "InteractiveUtils", "IntervalSets", "LinearAlgebra", "PkgVersion", "RecursiveArrayTools", "Requires", "RootSolvers", "SparseArrays", "Static", "StaticArrays", "Statistics", "UnPack"] -git-tree-sha1 = "6eb2e785a605f1ea0bef9c2210b26a6756ef6d5e" +deps = ["Adapt", "BandedMatrices", "BlockArrays", "CUDA", "ClimaComms", "CubedSphere", "DataStructures", "DocStringExtensions", "ForwardDiff", "GaussQuadrature", "GilbertCurves", "HDF5", "InteractiveUtils", "IntervalSets", "LinearAlgebra", "PkgVersion", "RecursiveArrayTools", "Requires", "RootSolvers", "SparseArrays", "Static", "StaticArrays", "Statistics", "UnPack"] +git-tree-sha1 = "6841faabcaf23af38190e92abdb5eec3e6f8601d" uuid = "d414da3d-4745-48bb-8d80-42e94e092884" -version = "0.10.47" +version = "0.10.50" [[deps.ClimaCorePlots]] deps = ["ClimaCore", "RecipesBase", "StaticArrays", "TriplotBase"] @@ -333,9 +333,9 @@ version = "2.2.1" [[deps.ConstructionBase]] deps = ["LinearAlgebra"] -git-tree-sha1 = "fe2838a593b5f776e1597e086dcd47560d94e816" +git-tree-sha1 = "c53fc348ca4d40d7b371e71fd52251839080cbc9" uuid = "187b0558-2788-49d3-abe0-74a17ed4e7c9" -version = "1.5.3" +version = "1.5.4" [[deps.Contour]] git-tree-sha1 = "d05d9e7b7aedff4e5b51a029dced05cfb6125781" @@ -408,15 +408,15 @@ version = "0.1.0+0" [[deps.DiffEqBase]] deps = ["ArrayInterface", "ChainRulesCore", "DataStructures", "Distributions", "DocStringExtensions", "EnumX", "FastBroadcast", "ForwardDiff", "FunctionWrappers", "FunctionWrappersWrappers", "LinearAlgebra", "Logging", "Markdown", "MuladdMacro", "Parameters", "PreallocationTools", "Printf", "RecursiveArrayTools", "Reexport", "Requires", "SciMLBase", "SciMLOperators", "Setfield", "SparseArrays", "Static", "StaticArraysCore", "Statistics", "Tricks", "TruncatedStacktraces", "ZygoteRules"] -git-tree-sha1 = "ed586656058844e48660c6d6fdb384e83afc50db" +git-tree-sha1 = "dee066b8dce741815729f5973b6db757416948b7" uuid = "2b5f629d-d688-5b77-993f-72d75c75574e" -version = "6.128.0" +version = "6.128.4" [[deps.DiffEqCallbacks]] deps = ["DataStructures", "DiffEqBase", "ForwardDiff", "LinearAlgebra", "Markdown", "NLsolve", "Parameters", "RecipesBase", "RecursiveArrayTools", "SciMLBase", "StaticArraysCore"] -git-tree-sha1 = "303ab70e4524843653e55e16a3dc7b75e677a3dd" +git-tree-sha1 = "9c7d3a84264d935f6981504388b202a770113faa" uuid = "459566f4-90b8-5000-8ac3-15dfb0a30def" -version = "2.27.0" +version = "2.29.1" [[deps.DiffResults]] deps = ["StaticArraysCore"] @@ -486,10 +486,10 @@ uuid = "2e619515-83b5-522b-bb60-26c02a35a201" version = "2.5.0+0" [[deps.ExponentialUtilities]] -deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "Printf", "SnoopPrecompile", "SparseArrays", "libblastrampoline_jll"] -git-tree-sha1 = "fb7dbef7d2631e2d02c49e2750f7447648b0ec9b" +deps = ["Adapt", "ArrayInterface", "GPUArraysCore", "GenericSchur", "LinearAlgebra", "PrecompileTools", "Printf", "SparseArrays", "libblastrampoline_jll"] +git-tree-sha1 = "602e4585bcbd5a25bc06f514724593d13ff9e862" uuid = "d4d017d3-3776-5f7e-afef-a10c40355c18" -version = "1.24.0" +version = "1.25.0" [[deps.ExprTools]] git-tree-sha1 = "27415f162e6028e81c72b82ef756bf321213b6ec" @@ -590,9 +590,9 @@ version = "0.4.2" [[deps.ForwardDiff]] deps = ["CommonSubexpressions", "DiffResults", "DiffRules", "LinearAlgebra", "LogExpFunctions", "NaNMath", "Preferences", "Printf", "Random", "SpecialFunctions", "StaticArrays"] -git-tree-sha1 = "00e252f4d706b3d55a8863432e742bf5717b498d" +git-tree-sha1 = "cf0fe81336da9fb90944683b8c41984b08793dad" uuid = "f6369f11-7733-5829-9624-2563aa707210" -version = "0.10.35" +version = "0.10.36" [[deps.FreeType2_jll]] deps = ["Artifacts", "Bzip2_jll", "JLLWrappers", "Libdl", "Zlib_jll"] @@ -681,10 +681,10 @@ uuid = "88fa7841-ef32-4516-bb70-c6ec135699d9" version = "0.1.0" [[deps.Glib_jll]] -deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Pkg", "Zlib_jll"] -git-tree-sha1 = "d3b3624125c1474292d0d8ed0f65554ac37ddb23" +deps = ["Artifacts", "Gettext_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Libiconv_jll", "Libmount_jll", "PCRE2_jll", "Zlib_jll"] +git-tree-sha1 = "e94c92c7bf4819685eb80186d51c43e71d4afa17" uuid = "7746bdde-850d-59dc-9ae8-88ece973131d" -version = "2.74.0+2" +version = "2.76.5+0" [[deps.Glob]] git-tree-sha1 = "97285bbd5230dd766e9ef6749b80fc617126d496" @@ -709,10 +709,10 @@ uuid = "42e2da0e-8278-4e71-bc24-59509adca0fe" version = "1.0.2" [[deps.HDF5]] -deps = ["Compat", "HDF5_jll", "Libdl", "Mmap", "Printf", "Random", "Requires", "UUIDs"] -git-tree-sha1 = "114e20044677badbc631ee6fdc80a67920561a29" +deps = ["Compat", "HDF5_jll", "Libdl", "MPIPreferences", "Mmap", "Preferences", "Printf", "Random", "Requires", "UUIDs"] +git-tree-sha1 = "ec7df74b7b2022e8252a8bfd4ec23411491adc3b" uuid = "f67ccb44-e63f-5c2f-98bd-6dc0ccc4ba2f" -version = "0.16.16" +version = "0.17.0" [[deps.HDF5_jll]] deps = ["Artifacts", "JLLWrappers", "LibCURL_jll", "Libdl", "OpenSSL_jll", "Pkg", "Zlib_jll"] @@ -722,9 +722,9 @@ version = "1.12.2+2" [[deps.HTTP]] deps = ["Base64", "CodecZlib", "ConcurrentUtilities", "Dates", "ExceptionUnwrapping", "Logging", "LoggingExtras", "MbedTLS", "NetworkOptions", "OpenSSL", "Random", "SimpleBufferStream", "Sockets", "URIs", "UUIDs"] -git-tree-sha1 = "cb56ccdd481c0dd7f975ad2b3b62d9eda088f7e2" +git-tree-sha1 = "5eab648309e2e060198b45820af1a37182de3cce" uuid = "cd3eb016-35fb-5094-929b-558a96fad6f3" -version = "1.9.14" +version = "1.10.0" [[deps.HarfBuzz_jll]] deps = ["Artifacts", "Cairo_jll", "Fontconfig_jll", "FreeType2_jll", "Glib_jll", "Graphite2_jll", "JLLWrappers", "Libdl", "Libffi_jll", "Pkg"] @@ -854,9 +854,9 @@ version = "0.2.1+0" [[deps.KLU]] deps = ["LinearAlgebra", "SparseArrays", "SuiteSparse_jll"] -git-tree-sha1 = "764164ed65c30738750965d55652db9c94c59bfe" +git-tree-sha1 = "884c2968c2e8e7e6bf5956af88cb46aa745c854b" uuid = "ef3ab10e-7fda-4108-b977-705223b18434" -version = "0.4.0" +version = "0.4.1" [[deps.KernelAbstractions]] deps = ["Adapt", "Atomix", "InteractiveUtils", "LinearAlgebra", "MacroTools", "PrecompileTools", "Requires", "SparseArrays", "StaticArrays", "UUIDs", "UnsafeAtomics", "UnsafeAtomicsLLVM"] @@ -866,9 +866,9 @@ version = "0.9.8" [[deps.Krylov]] deps = ["LinearAlgebra", "Printf", "SparseArrays"] -git-tree-sha1 = "fbda7c58464204d92f3b158578fb0b3d4224cea5" +git-tree-sha1 = "17e462054b42dcdda73e9a9ba0c67754170c88ae" uuid = "ba0b0d4f-ebba-5204-a429-3ac8c609bfb7" -version = "0.9.3" +version = "0.9.4" [[deps.LAME_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -890,15 +890,15 @@ version = "3.0.0+1" [[deps.LLVM]] deps = ["CEnum", "LLVMExtra_jll", "Libdl", "Printf", "Unicode"] -git-tree-sha1 = "8695a49bfe05a2dc0feeefd06b4ca6361a018729" +git-tree-sha1 = "a9d2ce1d5007b1e8f6c5b89c5a31ff8bd146db5c" uuid = "929cbde3-209d-540e-8aea-75f648917ca0" -version = "6.1.0" +version = "6.2.1" [[deps.LLVMExtra_jll]] deps = ["Artifacts", "JLLWrappers", "LazyArtifacts", "Libdl", "TOML"] -git-tree-sha1 = "c35203c1e1002747da220ffc3c0762ce7754b08c" +git-tree-sha1 = "7ca6850ae880cc99b59b88517545f91a52020afa" uuid = "dad2f222-ce93-54a1-a47d-0025e8a3acab" -version = "0.0.23+0" +version = "0.0.25+0" [[deps.LLVMOpenMP_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -997,10 +997,10 @@ uuid = "7add5ba3-2f88-524e-9cd5-f83b8a55f7b8" version = "1.42.0+0" [[deps.Libiconv_jll]] -deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] -git-tree-sha1 = "c7cb1f5d892775ba13767a87c7ada0b980ea0a71" +deps = ["Artifacts", "JLLWrappers", "Libdl"] +git-tree-sha1 = "f9557a255370125b405568f9767d6d195822a175" uuid = "94ce4f54-9a6c-5748-9c1c-f9c7231a4531" -version = "1.16.1+2" +version = "1.17.0+0" [[deps.Libmount_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1179,9 +1179,9 @@ version = "4.5.1" [[deps.NVTX]] deps = ["Colors", "JuliaNVTXCallbacks_jll", "Libdl", "NVTX_jll"] -git-tree-sha1 = "c1bfdab07fa259baa4604a05862c43004dd3cd45" +git-tree-sha1 = "8bc9ce4233be3c63f8dcd78ccaf1b63a9c0baa34" uuid = "5da4648a-3479-48b8-97b9-01cb529c0a1f" -version = "0.3.1" +version = "0.3.3" [[deps.NVTX_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl", "Pkg"] @@ -1253,9 +1253,9 @@ version = "1.4.1" [[deps.OpenSSL_jll]] deps = ["Artifacts", "JLLWrappers", "Libdl"] -git-tree-sha1 = "bbb5c2115d63c2f1451cb70e5ef75e8fe4707019" +git-tree-sha1 = "a12e56c72edee3ce6b96667745e6cbbe5498f200" uuid = "458c3c95-2e84-50aa-8efc-19380b2a3a95" -version = "1.1.22+0" +version = "1.1.23+0" [[deps.OpenSpecFun_jll]] deps = ["Artifacts", "CompilerSupportLibraries_jll", "JLLWrappers", "Libdl", "Pkg"] @@ -1276,9 +1276,9 @@ version = "1.6.2" [[deps.OrdinaryDiffEq]] deps = ["ADTypes", "Adapt", "ArrayInterface", "DataStructures", "DiffEqBase", "DocStringExtensions", "ExponentialUtilities", "FastBroadcast", "FastClosures", "FiniteDiff", "ForwardDiff", "FunctionWrappersWrappers", "IfElse", "InteractiveUtils", "LineSearches", "LinearAlgebra", "LinearSolve", "Logging", "LoopVectorization", "MacroTools", "MuladdMacro", "NLsolve", "NonlinearSolve", "Polyester", "PreallocationTools", "PrecompileTools", "Preferences", "RecursiveArrayTools", "Reexport", "SciMLBase", "SciMLNLSolve", "SciMLOperators", "SimpleNonlinearSolve", "SimpleUnPack", "SparseArrays", "SparseDiffTools", "StaticArrayInterface", "StaticArrays", "TruncatedStacktraces"] -git-tree-sha1 = "47c560dcb059570bdbd9f887a6b8958190e498a4" +git-tree-sha1 = "ba3ed480f991b846cf9a8118d3370d9752e7166d" uuid = "1dea7af3-3e70-54e6-95c3-0bf5283fa5ed" -version = "6.53.4" +version = "6.55.0" [[deps.PCRE2_jll]] deps = ["Artifacts", "Libdl"] @@ -1351,15 +1351,15 @@ version = "1.3.5" [[deps.Plots]] deps = ["Base64", "Contour", "Dates", "Downloads", "FFMPEG", "FixedPointNumbers", "GR", "JLFzf", "JSON", "LaTeXStrings", "Latexify", "LinearAlgebra", "Measures", "NaNMath", "Pkg", "PlotThemes", "PlotUtils", "PrecompileTools", "Preferences", "Printf", "REPL", "Random", "RecipesBase", "RecipesPipeline", "Reexport", "RelocatableFolders", "Requires", "Scratch", "Showoff", "SparseArrays", "Statistics", "StatsBase", "UUIDs", "UnicodeFun", "UnitfulLatexify", "Unzip"] -git-tree-sha1 = "9f8675a55b37a70aa23177ec110f6e3f4dd68466" +git-tree-sha1 = "ccee59c6e48e6f2edf8a5b64dc817b6729f99eb5" uuid = "91a5bcdd-55d7-5caf-9e0b-520d859cae80" -version = "1.38.17" +version = "1.39.0" [[deps.Polyester]] deps = ["ArrayInterface", "BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "ManualMemory", "PolyesterWeave", "Requires", "Static", "StaticArrayInterface", "StrideArraysCore", "ThreadingUtilities"] -git-tree-sha1 = "3d811babe092a6e7b130beee84998fe7663348b6" +git-tree-sha1 = "d4c9ebdc6528a4aaf7cfcf43b482e927267b400d" uuid = "f517fe37-dbe3-4b94-8317-1923a5111588" -version = "0.7.5" +version = "0.7.6" [[deps.PolyesterWeave]] deps = ["BitTwiddlingConvenienceFunctions", "CPUSummary", "IfElse", "Static", "ThreadingUtilities"] @@ -1475,9 +1475,9 @@ version = "0.6.12" [[deps.RecursiveArrayTools]] deps = ["Adapt", "ArrayInterface", "DocStringExtensions", "GPUArraysCore", "IteratorInterfaceExtensions", "LinearAlgebra", "RecipesBase", "Requires", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables"] -git-tree-sha1 = "7ed35fb5f831aaf09c2d7c8736d44667a1afdcb0" +git-tree-sha1 = "d7087c013e8a496ff396bae843b1e16d9a30ede8" uuid = "731186ca-8d62-57ce-b412-fbd966d074cd" -version = "2.38.7" +version = "2.38.10" [[deps.RecursiveFactorization]] deps = ["LinearAlgebra", "LoopVectorization", "Polyester", "PrecompileTools", "StrideArraysCore", "TriangularSolve"] @@ -1542,10 +1542,10 @@ uuid = "476501e8-09a2-5ece-8869-fb82de89a1fa" version = "0.6.39" [[deps.SciMLBase]] -deps = ["ADTypes", "ArrayInterface", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces"] -git-tree-sha1 = "04370090604cd399db5bebddb636d80ab9d338e9" +deps = ["ADTypes", "ArrayInterface", "ChainRulesCore", "CommonSolve", "ConstructionBase", "Distributed", "DocStringExtensions", "EnumX", "FillArrays", "FunctionWrappersWrappers", "IteratorInterfaceExtensions", "LinearAlgebra", "Logging", "Markdown", "PrecompileTools", "Preferences", "RecipesBase", "RecursiveArrayTools", "Reexport", "RuntimeGeneratedFunctions", "SciMLOperators", "StaticArraysCore", "Statistics", "SymbolicIndexingInterface", "Tables", "TruncatedStacktraces", "ZygoteRules"] +git-tree-sha1 = "6de099dba3c80e23bde1d19011161ea91a23ed6b" uuid = "0bca4576-84f4-4d90-8ffe-ffa030f20462" -version = "1.94.0" +version = "1.98.0" [[deps.SciMLNLSolve]] deps = ["DiffEqBase", "LineSearches", "NLsolve", "Reexport", "SciMLBase"] @@ -1626,10 +1626,10 @@ deps = ["LinearAlgebra", "Random"] uuid = "2f01184e-e22b-5df5-ae63-d93ebab69eaf" [[deps.SparseDiffTools]] -deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "Reexport", "Requires", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "VertexSafeGraphs"] -git-tree-sha1 = "4c1a57bcbc0b795fbfdc2009e70f9c2fd2815bfe" +deps = ["ADTypes", "Adapt", "ArrayInterface", "Compat", "DataStructures", "FiniteDiff", "ForwardDiff", "Graphs", "LinearAlgebra", "PackageExtensionCompat", "Reexport", "SciMLOperators", "Setfield", "SparseArrays", "StaticArrayInterface", "StaticArrays", "Tricks", "UnPack", "VertexSafeGraphs"] +git-tree-sha1 = "42d131931906bf4f0af97a7113c8456d0a8aff9d" uuid = "47a9eef4-7e08-11e9-0b38-333d64bd3804" -version = "2.4.1" +version = "2.6.0" [[deps.Sparspak]] deps = ["Libdl", "LinearAlgebra", "Logging", "OffsetArrays", "Printf", "SparseArrays", "Test"] @@ -1663,9 +1663,9 @@ version = "1.4.1" [[deps.StaticArrays]] deps = ["LinearAlgebra", "Random", "StaticArraysCore", "Statistics"] -git-tree-sha1 = "9cabadf6e7cd2349b6cf49f1915ad2028d65e881" +git-tree-sha1 = "51621cca8651d9e334a659443a74ce50a3b6dfab" uuid = "90137ffa-7385-5640-81b9-e52037218182" -version = "1.6.2" +version = "1.6.3" [[deps.StaticArraysCore]] git-tree-sha1 = "36b3d696ce6366023a0ea192b4cd442268995a0d" @@ -1678,9 +1678,9 @@ uuid = "10745b16-79ce-11e8-11f9-7d13ad32a3b2" [[deps.StatsAPI]] deps = ["LinearAlgebra"] -git-tree-sha1 = "45a7769a04a3cf80da1c1c7c60caf932e6f4c9f7" +git-tree-sha1 = "1ff449ad350c9c4cbc756624d6f8a8c3ef56d3ed" uuid = "82ae8749-77ed-4fe6-ae5f-f523153014b0" -version = "1.6.0" +version = "1.7.0" [[deps.StatsBase]] deps = ["DataAPI", "DataStructures", "LinearAlgebra", "LogExpFunctions", "Missings", "Printf", "Random", "SortingAlgorithms", "SparseArrays", "Statistics", "StatsAPI"] @@ -1707,9 +1707,10 @@ uuid = "69024149-9ee7-55f6-a4c4-859efe599b68" version = "0.3.7" [[deps.StringManipulation]] -git-tree-sha1 = "46da2434b41f41ac3594ee9816ce5541c6096123" +deps = ["PrecompileTools"] +git-tree-sha1 = "a04cabe79c5f01f4d723cc6704070ada0b9d46d5" uuid = "892a3eda-7b42-436c-8928-eab12a02cf0e" -version = "0.3.0" +version = "0.3.4" [[deps.SuiteSparse]] deps = ["Libdl", "LinearAlgebra", "Serialization", "SparseArrays"] diff --git a/perf/Project.toml b/perf/Project.toml index fdde0df2e2..163af58215 100644 --- a/perf/Project.toml +++ b/perf/Project.toml @@ -46,6 +46,7 @@ TerminalLoggers = "5d786b92-1e48-4d6f-9151-6b4477ca9bed" Test = "8dfed614-e22c-5e08-85e1-65c5234f0b40" Thermodynamics = "b60c26fb-14c3-4610-9d3e-2d17fe7ff00c" UnPack = "3a884ed6-31ef-47d7-9d2a-63182c4928ed" +YAML = "ddb6d928-2868-570f-bddf-ab3f9cf99eb6" [compat] ArgParse = "1.1" @@ -72,6 +73,7 @@ ProfileCanvas = "0.1" ProgressLogging = "0.1" RRTMGP = "0.9" StaticArrays = "1" +YAML = "0.4" julia = "1.8.5" [extras] diff --git a/perf/flame.jl b/perf/flame.jl index 221ccd7000..d539ed1985 100644 --- a/perf/flame.jl +++ b/perf/flame.jl @@ -2,42 +2,53 @@ # and check for overall allocation limits based on previous runs # copied and modified from `ClimaAtmos/perf` +import ClimaAtmos as CA import Profile import ProfileCanvas using Test +using YAML cc_dir = joinpath(dirname(@__DIR__)); +config_dir = joinpath(cc_dir, "config", "model_configs"); include(joinpath(cc_dir, "experiments", "AMIP", "modular", "cli_options.jl")); # assuming a common driver for all tested runs filename = joinpath(cc_dir, "experiments", "AMIP", "modular", "coupler_driver_modular.jl") -# selected runs for performance analysis and their expected allocations (based on previous runs) -run_name_list = - ["default_modular_unthreaded", "coarse_single_modular", "target_amip_n32_shortrun", "target_amip_n1_shortrun"] -run_name = run_name_list[parse(Int, ARGS[2])] +# currently tested jobs and their allowed allocation limits allocs_limit = Dict() allocs_limit["perf_default_modular_unthreaded"] = 8638304 -allocs_limit["perf_coarse_single_modular"] = 18280800 +allocs_limit["perf_coarse_single_modular_ft64_monthly_checkpoints"] = 18280800 allocs_limit["perf_target_amip_n32_shortrun"] = 172134848 # number of time steps used for profiling const n_samples = 2 -# flag to split coupler init from its solve -ENV["CI_PERF_SKIP_COUPLED_RUN"] = true +# import parsed command line arguments +global parsed_args = parse_commandline(argparse_settings()) + +# select the configuration file and extract the run-name +config_file = + parsed_args["config_file"] = + isinteractive() ? "../config/model_configs/default_modular_unthreaded.yml" : parsed_args["config_file"] +run_name = parsed_args["run_name"] = split(basename(config_file), ".")[1] + +# import config setup +config_dict = YAML.load_file(config_file) -# pass in the correct arguments, overriding defaults with those specific to each run_name (in `pipeline.yaml`) -dict = parsed_args_per_job_id(; trigger = "--run_name $run_name") -parsed_args_prescribed = parsed_args_from_ARGS(ARGS) -parsed_args_target = dict[run_name] -global parsed_args = merge(parsed_args_target, parsed_args_prescribed) # global scope needed to recognize this definition in the coupler driver -run_name = "perf_" * run_name -parsed_args["job_id"] = run_name -parsed_args["run_name"] = run_name +# modify names for performance testing +perf_run_name = "perf_" * run_name +parsed_args["job_id"] = perf_run_name +parsed_args["run_name"] = perf_run_name +parsed_args = merge(config_dict, parsed_args) # global scope needed to recognize this definition in the coupler driver + +# disable threading parsed_args["enable_threading"] = false -@info run_name +# flag to split coupler init from its solve +ENV["CI_PERF_SKIP_COUPLED_RUN"] = true + +@info perf_run_name # initialize the coupler try @@ -70,7 +81,7 @@ end # produce flamegraph if haskey(ENV, "BUILDKITE_COMMIT") || haskey(ENV, "BUILDKITE_BRANCH") - output_dir = "perf/output/$run_name/" + output_dir = "perf/output/$perf_run_name/" mkpath(output_dir) ProfileCanvas.html_file(joinpath(output_dir, "flame.html")) else @@ -89,13 +100,13 @@ buffer = 1.4 # increase slightly for (nondeterministic) threaded runs allocs = @allocated step_coupler!(cs, n_samples) @timev step_coupler!(cs, n_samples) -@info "`allocs ($run_name)`: $(allocs)" +@info "`allocs ($perf_run_name)`: $(allocs)" -if allocs < allocs_limit[run_name] * buffer - @info "TODO: lower `allocs_limit[$run_name]` to: $(allocs)" +if allocs < allocs_limit[perf_run_name] * buffer + @info "TODO: lower `allocs_limit[$perf_run_name]` to: $(allocs)" end -Δallocs = allocs / allocs_limit[run_name] +Δallocs = allocs / allocs_limit[perf_run_name] @info "Allocation change (allocs/allocs_limit): $Δallocs" percent_alloc_change = (1 - Δallocs) * 100 if percent_alloc_change ≥ 0 @@ -105,5 +116,5 @@ else end @testset "Allocations limit" begin - @test allocs ≤ allocs_limit[run_name] * buffer + @test allocs ≤ allocs_limit[perf_run_name] * buffer end diff --git a/perf/flame_diff.jl b/perf/flame_diff.jl index c515e44fbd..a5d125fc07 100644 --- a/perf/flame_diff.jl +++ b/perf/flame_diff.jl @@ -1,53 +1,68 @@ # flame_diff.jl: provides allocation breakdown for individual backtraces for single-process unthredded runs # and check for fractional change in allocation compared to the last staged run +import ClimaAtmos as CA import Profile using Test import Base: view include("ProfileCanvasDiff.jl") import .ProfileCanvasDiff using JLD2 +using YAML -buildkite_branch = ENV["BUILDKITE_BRANCH"] -buildkite_commit = ENV["BUILDKITE_COMMIT"] -buildkite_number = ENV["BUILDKITE_BUILD_NUMBER"] -buildkite_build_path = ENV["BUILDKITE_BUILD_PATH"] -buildkite_pipeline_slug = ENV["BUILDKITE_PIPELINE_SLUG"] -buildkite_cc_dir = "/groups/esm/slurm-buildkite/climacoupler-ci/" -scratch_cc_dir = joinpath(buildkite_build_path, buildkite_pipeline_slug) -build_path = joinpath(buildkite_build_path, buildkite_pipeline_slug, buildkite_number, buildkite_pipeline_slug, "perf/") -perf_run_no = ARGS[2] +if isinteractive() + buildkite_cc_dir = "." + scratch_cc_dir = "." + build_path = "0" +else + buildkite_branch = ENV["BUILDKITE_BRANCH"] + buildkite_commit = ENV["BUILDKITE_COMMIT"] + buildkite_number = ENV["BUILDKITE_BUILD_NUMBER"] + buildkite_build_path = ENV["BUILDKITE_BUILD_PATH"] + buildkite_pipeline_slug = ENV["BUILDKITE_PIPELINE_SLUG"] + buildkite_cc_dir = "/groups/esm/slurm-buildkite/climacoupler-ci/" + scratch_cc_dir = joinpath(buildkite_build_path, buildkite_pipeline_slug) + build_path = + joinpath(buildkite_build_path, buildkite_pipeline_slug, buildkite_number, buildkite_pipeline_slug, "perf/") +end cwd = pwd() @info "build_path is: $build_path" cc_dir = joinpath(dirname(@__DIR__)); +config_dir = joinpath(cc_dir, "config", "model_configs"); include(joinpath(cc_dir, "experiments", "AMIP", "modular", "cli_options.jl")); # assuming a common driver for all tested runs filename = joinpath(cc_dir, "experiments", "AMIP", "modular", "coupler_driver_modular.jl") -# selected runs for performance analysis and their expected allocations (based on previous runs) -run_name_list = - ["default_modular_unthreaded", "coarse_single_modular", "target_amip_n32_shortrun", "target_amip_n1_shortrun"] -run_name = run_name_list[parse(Int, perf_run_no)] - # number of time steps used for profiling n_samples = 2 -# flag to split coupler init from its solve -ENV["CI_PERF_SKIP_COUPLED_RUN"] = true +# import parsed command line arguments +parsed_args = parse_commandline(argparse_settings()) + +# select the configuration file and extract the run-name +config_file = + parsed_args["config_file"] = + isinteractive() ? "../config/model_configs/default_modular_unthreaded.yml" : parsed_args["config_file"] +run_name = parsed_args["run_name"] = split(basename(config_file), ".")[1] -# pass in the correct arguments, overriding defaults with those specific to each run_name (in `pipeline.yaml`) -dict = parsed_args_per_job_id(; trigger = "--run_name $run_name") -parsed_args_prescribed = parsed_args_from_ARGS(ARGS) -parsed_args_target = dict[run_name] -parsed_args = merge(parsed_args_target, parsed_args_prescribed) # global scope needed to recognize this definition in the coupler driver -run_name = "perf_diff_" * run_name -parsed_args["job_id"] = run_name -parsed_args["run_name"] = run_name +# import config setup +config_dict = YAML.load_file(config_file) + +# modify names for performance testing +perf_run_name = "perf_" * run_name +parsed_args["job_id"] = perf_run_name +parsed_args["run_name"] = perf_run_name +parsed_args = merge(config_dict, parsed_args) # global scope needed to recognize this definition in the coupler driver + +# disable threading parsed_args["enable_threading"] = false +# flag to split coupler init from its solve +ENV["CI_PERF_SKIP_COUPLED_RUN"] = true + @info run_name function step_coupler!(cs, n_samples) @@ -69,7 +84,7 @@ end ##### # obtain the stacktree from the last saved file in `buildkite_cc_dir` -ref_file = joinpath(buildkite_cc_dir, "$run_name.jld2") +ref_file = joinpath(buildkite_cc_dir, "$perf_run_name.jld2") if isfile(ref_file) tracked_list = load(ref_file) @@ -93,7 +108,7 @@ end # produce flamegraph with colors highlighting the allocation differences relative to the last saved run # profile_data if haskey(ENV, "BUILDKITE_COMMIT") || haskey(ENV, "BUILDKITE_BRANCH") - output_dir = "perf/output/$run_name" + output_dir = "perf/output/$perf_run_name" mkpath(output_dir) ProfileCanvasDiff.html_file( joinpath(output_dir, "flame_diff.html"), @@ -114,7 +129,7 @@ end profile_data, new_tracked_list = ProfileCanvasDiff.view(Profile.fetch(), tracked_list = tracked_list, self_count = true); if buildkite_branch == "staging" isfile(ref_file) ? - mv(ref_file, joinpath(scratch_cc_dir, "flame_reference_file.$run_name.$buildkite_commit.jld2"), force = true) : + mv(ref_file, joinpath(scratch_cc_dir, "flame_reference_file.$perf_run_name.$buildkite_commit.jld2"), force = true) : nothing save(ref_file, new_tracked_list) # reset ref_file upon staging end diff --git a/test/mpi_tests/local_checks.sh b/test/mpi_tests/local_checks.sh index e91166ffe0..7dcfe7c5cb 100644 --- a/test/mpi_tests/local_checks.sh +++ b/test/mpi_tests/local_checks.sh @@ -11,7 +11,6 @@ module load julia/1.8.5 openmpi/4.1.1 hdf5/1.12.1-ompi411 export JULIA_MPI_BINARY=system export JULIA_NUM_THREADS=${SLURM_CPUS_PER_TASK:=1} export CLIMACORE_DISTRIBUTED="MPI" -export JULIA_HDF5_PATH="" export RUN_NAME=amip_restart_mpi_test export RESTART_DIR=experiments/AMIP/modular/output/amip/${RUN_NAME}_artifacts/ @@ -20,7 +19,6 @@ export RESTART_T=200 julia -e 'using Pkg; Pkg.add("MPIPreferences"); using MPIPreferences; use_system_binary()' julia --project -e 'using Pkg; Pkg.instantiate()' julia --project -e 'using Pkg; Pkg.build("MPI")' -julia --project -e 'using Pkg; Pkg.build("HDF5")' julia --project -e 'using Pkg; Pkg.API.precompile()' julia --project=experiments/AMIP/modular/ -e 'using Pkg; Pkg.instantiate(;verbose=true)'