From 07f61ef2d0527a67f07c39f3746977783eaf52e3 Mon Sep 17 00:00:00 2001 From: Julia Sloan Date: Mon, 4 Nov 2024 16:49:28 -0800 Subject: [PATCH] remove mode_name from output paths --- .buildkite/amip/pipeline.yml | 8 +-- .buildkite/benchmarks/pipeline.yml | 16 ++--- .buildkite/longruns/pipeline.yml | 38 +++++------ .buildkite/nightly/pipeline.yml | 8 +-- .buildkite/pipeline.yml | 64 +++++++++---------- NEWS.md | 7 ++ .../components/atmosphere/climaatmos.jl | 3 +- experiments/ClimaEarth/run_amip.jl | 2 +- experiments/ClimaEarth/user_io/benchmarks.jl | 4 +- 9 files changed, 78 insertions(+), 72 deletions(-) diff --git a/.buildkite/amip/pipeline.yml b/.buildkite/amip/pipeline.yml index b417d72fa8..f07dde7efb 100644 --- a/.buildkite/amip/pipeline.yml +++ b/.buildkite/amip/pipeline.yml @@ -45,7 +45,7 @@ steps: command: - echo "--- Run simulation" - "srun --cpu-bind=threads --cpus-per-task=4 julia --threads=3 --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip.yml --job_id amip" - artifact_paths: "experiments/ClimaEarth/output/amip/amip/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip/artifacts/*" timeout_in_minutes: 5760 env: CLIMACOMMS_DEVICE: "CUDA" @@ -64,9 +64,9 @@ steps: - label: ":envelope: Slack report: current AMIP" command: - - for file in $(find experiments/ClimaEarth/output/amip/amip/artifacts/ -regextype posix-extended -regex '.*/bias_[A-Z]{3}\.png'); do label=$(basename "$file" | grep -oP '(?<=bias_)[A-Za-z]{3}'); convert "$file" -gravity North -pointsize 50 -annotate +0+0 "$label" "experiments/ClimaEarth/output/amip/amip/artifacts/tmp_bias_$label.png"; done - - convert +append "experiments/ClimaEarth/output/amip/amip/artifacts/tmp_bias_???.png" experiments/ClimaEarth/output/amip/amip/artifacts/bias_all_seasons.png + - for file in $(find experiments/ClimaEarth/output/amip/ artifacts/ -regextype posix-extended -regex '.*/bias_[A-Z]{3}\.png'); do label=$(basename "$file" | grep -oP '(?<=bias_)[A-Za-z]{3}'); convert "$file" -gravity North -pointsize 50 -annotate +0+0 "$label" "experiments/ClimaEarth/output/amip/ artifacts/tmp_bias_$label.png"; done + - convert +append "experiments/ClimaEarth/output/amip/ artifacts/tmp_bias_???.png" experiments/ClimaEarth/output/amip/ artifacts/bias_all_seasons.png - | - find experiments/ClimaEarth/output/amip/amip/artifacts/ -type f -name 'bias*.png' -print0 | while IFS= read -r -d '' file; do + find experiments/ClimaEarth/output/amip/ artifacts/ -type f -name 'bias*.png' -print0 | while IFS= read -r -d '' file; do slack-upload -c "#coupler-report" -f "$$file" -m png -n "$$(basename "$$file" .png)" -x "$$(basename "$$file" .png)" done diff --git a/.buildkite/benchmarks/pipeline.yml b/.buildkite/benchmarks/pipeline.yml index be25e0f445..6220c17e1f 100644 --- a/.buildkite/benchmarks/pipeline.yml +++ b/.buildkite/benchmarks/pipeline.yml @@ -45,7 +45,7 @@ steps: - label: "CPU ClimaAtmos without diagnostic EDMF" key: "climaatmos" command: "srun julia --color=yes --project=test/ test/component_model_tests/climaatmos_standalone/atmos_driver.jl --config_file $BENCHMARK_CONFIG_PATH/climaatmos.yml --job_id climaatmos" - artifact_paths: "experiments/ClimaEarth/output/climaatmos/climaatmos/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/climaatmos/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -58,7 +58,7 @@ steps: - label: "CPU ClimaAtmos with diagnostic EDMF" key: "climaatmos_diagedmf" command: "srun julia --color=yes --project=test/ test/component_model_tests/climaatmos_standalone/atmos_driver.jl --config_file $BENCHMARK_CONFIG_PATH/climaatmos_diagedmf.yml --job_id climaatmos_diagedmf" - artifact_paths: "experiments/ClimaEarth/output/climaatmos/climaatmos_diagedmf/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/climaatmos_diagedmf/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -71,7 +71,7 @@ steps: - label: "CPU AMIP with diagnostic EDMF" key: "amip_diagedmf" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $BENCHMARK_CONFIG_PATH/amip_diagedmf.yml --job_id amip_diagedmf" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_diagedmf/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_diagedmf/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -84,7 +84,7 @@ steps: - label: "CPU AMIP with diagnostic EDMF and io" key: "amip_diagedmf_io" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $BENCHMARK_CONFIG_PATH/amip_diagedmf_io.yml --job_id amip_diagedmf_io" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_diagedmf_io/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_diagedmf_io/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -99,7 +99,7 @@ steps: - label: "GPU ClimaAtmos without diagnostic EDMF" key: "gpu_climaatmos" command: "srun julia --threads=3 --color=yes --project=test/ test/component_model_tests/climaatmos_standalone/atmos_driver.jl --config_file $BENCHMARK_CONFIG_PATH/climaatmos.yml --job_id gpu_climaatmos" - artifact_paths: "experiments/ClimaEarth/output/climaatmos/gpu_climaatmos/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_climaatmos/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" CLIMACOMMS_DEVICE: "CUDA" @@ -112,7 +112,7 @@ steps: - label: "GPU ClimaAtmos with diagnostic EDMF" key: "gpu_climaatmos_diagedmf" command: "srun julia --threads=3 --color=yes --project=test/ test/component_model_tests/climaatmos_standalone/atmos_driver.jl --config_file $BENCHMARK_CONFIG_PATH/climaatmos_diagedmf.yml --job_id gpu_climaatmos_diagedmf" - artifact_paths: "experiments/ClimaEarth/output/climaatmos/gpu_climaatmos_diagedmf/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_climaatmos_diagedmf/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" CLIMACOMMS_DEVICE: "CUDA" @@ -125,7 +125,7 @@ steps: - label: "GPU AMIP with diagnostic EDMF" key: "gpu_amip_diagedmf" command: "srun julia --threads=3 --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $BENCHMARK_CONFIG_PATH/amip_diagedmf.yml --job_id gpu_amip_diagedmf" - artifact_paths: "experiments/ClimaEarth/output/amip/gpu_amip_diagedmf/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_amip_diagedmf/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" CLIMACOMMS_DEVICE: "CUDA" @@ -138,7 +138,7 @@ steps: - label: "GPU AMIP with diagnostic EDMF and IO" key: "gpu_amip_diagedmf_io" command: "srun julia --threads=3 --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $BENCHMARK_CONFIG_PATH/amip_diagedmf_io.yml --job_id gpu_amip_diagedmf_io" - artifact_paths: "experiments/ClimaEarth/output/amip/gpu_amip_diagedmf_io/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_amip_diagedmf_io/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" CLIMACOMMS_DEVICE: "CUDA" diff --git a/.buildkite/longruns/pipeline.yml b/.buildkite/longruns/pipeline.yml index 06b7491672..3b6150bff7 100644 --- a/.buildkite/longruns/pipeline.yml +++ b/.buildkite/longruns/pipeline.yml @@ -73,7 +73,7 @@ steps: - label: "Slabplanet_aqua: nocouple" key: "slabplanet_aqua_atmos_sf_nocouple" # SF at each Atmos stage, no coupling, prescribed SST from atmos command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_aqua_atmos_sf_nocouple.yml --job_id slabplanet_aqua_atmos_sf_nocouple" - artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua/slabplanet_aqua_atmos_sf_nocouple/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua_atmos_sf_nocouple/artifacts/*" env: BUILD_HISTORY_HANDLE: "" agents: @@ -85,7 +85,7 @@ steps: - label: "Slabplanet_aqua: couple" key: "slabplanet_aqua_atmos_sf_couple" # SF at each Atmos stage, coupling, prescribed SST from coupler - identical results to the above confirm 1) initial conditions in Atmos are unchanged compared to the slab, 2) coupling not introducing variability when constant surface command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_aqua_atmos_sf_couple.yml --job_id slabplanet_aqua_atmos_sf_couple" - artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua/slabplanet_aqua_atmos_sf_couple/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua_atmos_sf_couple/artifacts/*" env: BUILD_HISTORY_HANDLE: "" agents: @@ -97,7 +97,7 @@ steps: - label: "Slabplanet_aqua: coupler fluxes" key: "slabplanet_aqua_coupler_sf" # SF at each coupler timestep, constant ocean - comparing to the above runs, this tests the sensitivity of less frequent flux calculation command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_aqua_coupler_sf.yml --job_id slabplanet_aqua_coupler_sf" - artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua/slabplanet_aqua_coupler_sf/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua_coupler_sf/artifacts/*" env: BUILD_HISTORY_HANDLE: "" agents: @@ -109,7 +109,7 @@ steps: - label: "Slabplanet_aqua: coupler fluxes, evolving ocean" key: "slabplanet_aqua_coupler_sf_evolve_ocn" # SF at each coupler timestep, evolving ocean - comparing to the above run, tests the sensitivity of evolving ocean command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_aqua_coupler_sf_evolve_ocn.yml --job_id slabplanet_aqua_coupler_sf_evolve_ocn" - artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua/slabplanet_aqua_coupler_sf_evolve_ocn/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua_coupler_sf_evolve_ocn/artifacts/*" env: BUILD_HISTORY_HANDLE: "" agents: @@ -121,7 +121,7 @@ steps: - label: "Slabplanet_terra: coupler fluxes, evolving bucket" key: "slabplanet_terra" # SF at each coupler timestep, evolving ocean - comparing to the above run, tests the sensitivity of evolving bucket command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_terra.yml --job_id slabplanet_terra" - artifact_paths: "experiments/ClimaEarth/output/slabplanet_terra/slabplanet_terra/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_terra/artifacts/*" env: BUILD_HISTORY_HANDLE: "" agents: @@ -133,7 +133,7 @@ steps: - label: "Slabplanet: coupler fluxes, evolving ocean and land" key: "slabplanet_coupler_sf_evolve_ocn" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_coupler_sf_evolve_ocn.yml --job_id slabplanet_coupler_sf_evolve_ocn" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_coupler_sf_evolve_ocn/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_coupler_sf_evolve_ocn/artifacts/*" env: BUILD_HISTORY_HANDLE: "" agents: @@ -162,7 +162,7 @@ steps: - label: "TARGET IDEALIZED: new target aqua - fixed ocean T, nocouple, atmos flux calc" key: "slabplanet_aqua_target_nocouple" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_aqua_target_nocouple.yml --job_id slabplanet_aqua_target_nocouple" - artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua/slabplanet_aqua_target_nocouple/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua_target_nocouple/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -175,7 +175,7 @@ steps: - label: "TARGET IDEALIZED: new target aqua - fixed ocean T, coupler flux calc" key: "slabplanet_aqua_target" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_aqua_target.yml --job_id slabplanet_aqua_target" - artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua/slabplanet_aqua_target/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua_target/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -188,7 +188,7 @@ steps: - label: "TARGET IDEALIZED: new target aqua - evolving slab ocean T" key: "slabplanet_aqua_target_evolve_ocn" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_aqua_target_evolve_ocn.yml --job_id slabplanet_aqua_target_evolve_ocn" - artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua/slabplanet_aqua_target_evolve_ocn/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_aqua_target_evolve_ocn/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -201,7 +201,7 @@ steps: - label: "TARGET IDEALIZED: new target slab - fixed ocean T, bucket" key: "slabplanet_target" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_target.yml --job_id slabplanet_target" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_target/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_target/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -214,7 +214,7 @@ steps: - label: "TARGET IDEALIZED: new target slab - evolving slab ocean T, bucket" key: "slabplanet_target_evolve_ocn" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_target_evolve_ocn.yml --job_id slabplanet_target_evolve_ocn" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_target_evolve_ocn/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_target_evolve_ocn/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -231,7 +231,7 @@ steps: - label: "MPI AMIP FINE: new target amip" key: "amip_target" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip_target.yml --job_id amip_target" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_target/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_target/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -244,7 +244,7 @@ steps: - label: "MPI AMIP FINE: new target amip: topo" key: "amip_target_topo" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip_target_topo.yml --job_id amip_target_topo" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_target_topo/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_target_topo/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -257,7 +257,7 @@ steps: - label: "MPI AMIP FINE: new target amip: topo + diagedmf" key: "amip_target_topo_diagedmf_cpu" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip_target_topo_diagedmf_cpu.yml --job_id amip_target_topo_diagedmf_cpu" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_target_topo_diagedmf_cpu/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_target_topo_diagedmf_cpu/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" BUILD_HISTORY_HANDLE: "" @@ -274,7 +274,7 @@ steps: - label: "GPU AMIP FINE: new target amip: topo" key: "amip_target_topo_gpu" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip_target_topo.yml --job_id amip_target_topo_gpu" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_target_topo_gpu/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_target_topo_gpu/artifacts/*" env: CLIMACOMMS_CONTEXT: "MPI" CLIMACOMMS_DEVICE: "CUDA" @@ -288,7 +288,7 @@ steps: command: - echo "--- Run simulation" - "srun --cpu-bind=threads --cpus-per-task=4 julia --threads=3 --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip_target_topo_diagedmf_gpu.yml --job_id amip_target_topo_diagedmf_gpu" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_target_topo_diagedmf_gpu/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_target_topo_diagedmf_gpu/artifacts/*" timeout_in_minutes: 1440 env: CLIMACOMMS_CONTEXT: "MPI" @@ -308,7 +308,7 @@ steps: command: - echo "--- Run simulation" - "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/longrun_amip_dyamond.yml --job_id longrun_amip_dyamond_gpu" - artifact_paths: "experiments/ClimaEarth/output/amip/longrun_amip_dyamond_gpu/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/longrun_amip_dyamond_gpu/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: @@ -335,5 +335,5 @@ steps: - label: ":envelope: Slack report: Slabplanet" command: - - slack-upload -c "#coupler-report" -f experiments/ClimaEarth/output/slabplanet/slabplanet_coupler_sf_evolve_ocn/artifacts/total_energy_bucket.png -m png -n slab_coarse -x "Slabplanet energy conservation" - - slack-upload -c "#coupler-report" -f experiments/ClimaEarth/output/slabplanet/slabplanet_coupler_sf_evolve_ocn/artifacts/total_water_bucket.png -m png -n slab_coarse_w -x "Slabplanet water conservation" + - slack-upload -c "#coupler-report" -f experiments/ClimaEarth/output/slabplanet_coupler_sf_evolve_ocn/artifacts/total_energy_bucket.png -m png -n slab_coarse -x "Slabplanet energy conservation" + - slack-upload -c "#coupler-report" -f experiments/ClimaEarth/output/slabplanet_coupler_sf_evolve_ocn/artifacts/total_water_bucket.png -m png -n slab_coarse_w -x "Slabplanet water conservation" diff --git a/.buildkite/nightly/pipeline.yml b/.buildkite/nightly/pipeline.yml index ccddcfe4d2..d3baeffc14 100644 --- a/.buildkite/nightly/pipeline.yml +++ b/.buildkite/nightly/pipeline.yml @@ -55,7 +55,7 @@ steps: command: - echo "--- Run simulation" - "julia --threads=3 --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip_coarse.yml --job_id amip_coarse" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_coarse/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_coarse/artifacts/*" timeout_in_minutes: 840 env: CLIMACOMMS_DEVICE: "CUDA" @@ -70,7 +70,7 @@ steps: command: - echo "--- Run simulation" - "julia --threads=3 --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip_coarse_random.yml --job_id amip_coarse_random1" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_coarse_random1/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_coarse_random1/artifacts/*" timeout_in_minutes: 1080 env: CLIMACOMMS_DEVICE: "CUDA" @@ -85,7 +85,7 @@ steps: command: - echo "--- Run simulation" - "julia --threads=3 --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip_coarse_random.yml --job_id amip_coarse_random2" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_coarse_random2/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_coarse_random2/artifacts/*" timeout_in_minutes: 1080 env: CLIMACOMMS_DEVICE: "CUDA" @@ -100,7 +100,7 @@ steps: command: - echo "--- Run simulation" - "julia --threads=3 --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/amip_coarse_random.yml --job_id amip_coarse_random3" - artifact_paths: "experiments/ClimaEarth/output/amip/amip_coarse_random3/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/amip_coarse_random3/artifacts/*" timeout_in_minutes: 1080 env: CLIMACOMMS_DEVICE: "CUDA" diff --git a/.buildkite/pipeline.yml b/.buildkite/pipeline.yml index 8bf2499140..addb0219bc 100644 --- a/.buildkite/pipeline.yml +++ b/.buildkite/pipeline.yml @@ -146,70 +146,70 @@ steps: - label: "Slabplanet: default" key: "slabplanet_default" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_default.yml --job_id slabplanet_default" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_default/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_default/artifacts/*" agents: slurm_mem: 20GB - label: "Slabplanet: dry, no radiation" key: "slabplanet_dry_norad" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_dry_norad.yml --job_id slabplanet_dry_norad" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_dry_norad/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_dry_norad/artifacts/*" agents: slurm_mem: 20GB - label: "Slabplanet: default with Float32" key: "slabplanet_ft32" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_ft32.yml --job_id slabplanet_ft32" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_ft32/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_ft32/artifacts/*" agents: slurm_mem: 20GB - label: "Slabplanet: partitioned turbulent fluxes" key: "slabplanet_partitioned_fluxes" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_partitioned_fluxes.yml --job_id slabplanet_partitioned_fluxes" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_partitioned_fluxes/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_partitioned_fluxes/artifacts/*" agents: slurm_mem: 20GB - label: "Slabplanet: non-monotonous surface remap" key: "slabplanet_nonmono" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_nonmono.yml --job_id slabplanet_nonmono" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_nonmono/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_nonmono/artifacts/*" agents: slurm_mem: 20GB - label: "Slabplanet: albedo from static map" key: "slabplanet_albedo_static_map" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_albedo_static_map.yml --job_id slabplanet_albedo_static_map" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_albedo_static_map/artifacts/total_energy*.png" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_albedo_static_map/artifacts/total_energy*.png" agents: slurm_mem: 20GB - label: "Slabplanet: albedo from temporal map" key: "slabplanet_albedo_temporal_map" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_albedo_temporal_map.yml --job_id slabplanet_albedo_temporal_map" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_albedo_temporal_map/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_albedo_temporal_map/artifacts/*" agents: slurm_mem: 20GB - label: "Slabplanet: albedo from function" key: "slabplanet_albedo_function" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_albedo_function.yml --job_id slabplanet_albedo_function" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_albedo_function/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_albedo_function/artifacts/*" agents: slurm_mem: 20GB - label: "Slabplanet: eisenman sea ice" key: "slabplanet_eisenman" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_eisenman.yml --job_id slabplanet_eisenman" - artifact_paths: "experiments/ClimaEarth/output/slabplanet_eisenman/slabplanet_eisenman/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_eisenman/artifacts/*" agents: slurm_mem: 20GB - label: "Slabplanet: extra atmos diagnostics" key: "slabplanet_atmos_diags" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_atmos_diags.yml --job_id slabplanet_atmos_diags" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/slabplanet_atmos_diags/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/slabplanet_atmos_diags/artifacts/*" agents: slurm_mem: 20GB @@ -224,7 +224,7 @@ steps: - label: ":rocket: Slabplanet: default (unthreaded)" key: "slabplanet_unthreaded" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/default_unthreaded.yml --job_id default_unthreaded" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/default_unthreaded/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/default_unthreaded/artifacts/*" env: FLAME_PLOT: "" BUILD_HISTORY_HANDLE: "" @@ -264,48 +264,48 @@ steps: - label: "Moist earth with slab surface - default: monin gray no_sponge idealinsol freq_dt_cpl" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/default_mono.yml --job_id default_mono" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/default_mono/artifacts/total_energy*.png" + artifact_paths: "experiments/ClimaEarth/output/default_mono/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/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/default_notmono.yml --job_id default_notmono" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/default_notmono/artifacts/total_energy*.png" + artifact_paths: "experiments/ClimaEarth/output/default_notmono/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/ClimaEarth/ experiments/ClimaEarth/run_amip.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 --job_id target_params_in_slab_test1" # Unconverged SF (reproduced locally); works with 200s dt_cpl - # artifact_paths: "experiments/ClimaEarth/output/slabplanet/target_params_in_slab_test1/artifacts/total_energy*.png" + # artifact_paths: "experiments/ClimaEarth/output/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/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/target_params_in_slab_test2.yml --job_id target_params_in_slab_test2" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/target_params_in_slab_test2/artifacts/total_energy*.png" + artifact_paths: "experiments/ClimaEarth/output/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/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/target_params_in_slab_test3.yml --job_id target_params_in_slab_test3" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/target_params_in_slab_test3/artifacts/total_energy*.png" + artifact_paths: "experiments/ClimaEarth/output/target_params_in_slab_test3/artifacts/total_energy*.png" agents: slurm_mem: 20GB # breaking: # - label: "Moist earth with slab surface - monin allsky no_sponge idealinsol infreq_dt_cpl" # command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --coupled true --surface_setup PrescribedSurface --moist equil --vert_diff true --rad allskywithclear --rayleigh_sponge false --energy_check true --mode_name slabplanet --t_end 10days --dt_save_to_sol 3600secs --dt_cpl 21600 --dt 200secs --dt_rad 6hours --idealized_insolation true --mono_surface true --h_elem 4 --precip_model 0M --job_id target_params_in_slab1" - # artifact_paths: "experiments/ClimaEarth/output/slabplanet/target_params_in_slab1/artifacts/total_energy*.png" + # artifact_paths: "experiments/ClimaEarth/output/target_params_in_slab1/artifacts/total_energy*.png" - label: "AMIP target: albedo from function" key: "target_amip_albedo_function" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/target_amip_albedo_function.yml --job_id target_amip_albedo_function" - artifact_paths: "experiments/ClimaEarth/output/amip/target_amip_albedo_function/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/target_amip_albedo_function/artifacts/*" agents: slurm_mem: 20GB - label: "AMIP - Float64 + hourly checkpoint" key: "amip" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/coarse_single_ft64_hourly_checkpoints.yml --job_id coarse_single_ft64_hourly_checkpoints" - artifact_paths: "experiments/ClimaEarth/output/amip/coarse_single_ft64_hourly_checkpoints/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/coarse_single_ft64_hourly_checkpoints/artifacts/*" env: FLAME_PLOT: "" BUILD_HISTORY_HANDLE: "" @@ -315,21 +315,21 @@ steps: - label: "AMIP - Float64 test" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/coarse_single_ft64.yml --job_id coarse_single_ft64" - artifact_paths: "experiments/ClimaEarth/output/amip/coarse_single_ft64/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/coarse_single_ft64/artifacts/*" agents: slurm_ntasks: 1 slurm_mem: 20GB - label: "AMIP - Float32 test" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/coarse_single_ft32.yml --job_id coarse_single_ft32" - artifact_paths: "experiments/ClimaEarth/output/amip/coarse_single_ft32/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/coarse_single_ft32/artifacts/*" agents: slurm_ntasks: 1 slurm_mem: 20GB - label: "MPI AMIP" command: "srun julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/coarse_mpi_n4.yml --job_id coarse_mpi_n4" - artifact_paths: "experiments/ClimaEarth/output/amip/coarse_mpi_n4/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/coarse_mpi_n4/artifacts/*" timeout_in_minutes: 240 env: CLIMACOMMS_CONTEXT: "MPI" @@ -342,7 +342,7 @@ steps: - label: "Unthreaded AMIP FINE" # also reported by longruns with a flame graph key: "unthreaded_amip_fine" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/target_amip_n1_shortrun.yml --job_id target_amip_n1_shortrun" - artifact_paths: "experiments/ClimaEarth/output/amip/target_amip_n1_shortrun/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/target_amip_n1_shortrun/artifacts/*" env: BUILD_HISTORY_HANDLE: "" agents: @@ -424,7 +424,7 @@ steps: - label: "GPU Slabplanet: albedo from function" key: "gpu_slabplanet_albedo_function" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_albedo_function.yml --job_id gpu_slabplanet_albedo_function" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/gpu_slabplanet_albedo_function/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_slabplanet_albedo_function/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: @@ -434,7 +434,7 @@ steps: - label: "GPU Slabplanet: albedo from static map" key: "gpu_slabplanet_albedo_static_map" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_albedo_static_map.yml --job_id gpu_slabplanet_albedo_static_map" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/gpu_slabplanet_albedo_static_map/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_slabplanet_albedo_static_map/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: @@ -444,7 +444,7 @@ steps: - label: "GPU Slabplanet: albedo from temporal map" key: "gpu_slabplanet_albedo_temporal_map" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_albedo_temporal_map.yml --job_id gpu_slabplanet_albedo_temporal_map" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/gpu_slabplanet_albedo_temporal_map/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_slabplanet_albedo_temporal_map/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: @@ -454,7 +454,7 @@ steps: - label: "GPU Slabplanet: extra atmos diagnostics" key: "gpu_slabplanet_atmos_diags" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/slabplanet_atmos_diags.yml --job_id gpu_slabplanet_atmos_diags" - artifact_paths: "experiments/ClimaEarth/output/slabplanet/gpu_slabplanet_atmos_diags/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_slabplanet_atmos_diags/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: @@ -465,7 +465,7 @@ steps: - label: "GPU AMIP test: albedo from function" key: "gpu_amip_albedo_function" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/gpu_amip_albedo_function.yml --job_id gpu_amip_albedo_function" - artifact_paths: "experiments/ClimaEarth/output/amip/gpu_amip_albedo_function/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_amip_albedo_function/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: @@ -475,7 +475,7 @@ steps: - label: "GPU AMIP target: topography and diagnostic EDMF" key: "gpu_amip_target_topo_diagedmf_shortrun" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/gpu_amip_target_topo_diagedmf_shortrun.yml --job_id gpu_amip_target_topo_diagedmf_shortrun" - artifact_paths: "experiments/ClimaEarth/output/amip/gpu_amip_target_topo_diagedmf_shortrun/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_amip_target_topo_diagedmf_shortrun/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: @@ -485,7 +485,7 @@ steps: - label: "GPU AMIP: albedo from static map" key: "gpu_amip_albedo_static_map" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/gpu_amip_albedo_static_map.yml --job_id gpu_amip_albedo_static_map" - artifact_paths: "experiments/ClimaEarth/output/amip/gpu_amip_albedo_static_map/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_amip_albedo_static_map/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: @@ -495,7 +495,7 @@ steps: - label: "GPU AMIP: albedo from temporal map + 0M" key: "gpu_amip_albedo_temporal_map" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/gpu_amip_albedo_temporal_map.yml --job_id gpu_amip_albedo_temporal_map" - artifact_paths: "experiments/ClimaEarth/output/amip/gpu_amip_albedo_temporal_map/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_amip_albedo_temporal_map/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: @@ -505,7 +505,7 @@ steps: - label: "GPU AMIP: albedo from temporal map + 1M" key: "gpu_amip_albedo_temporal_map_1M" command: "julia --color=yes --project=experiments/ClimaEarth/ experiments/ClimaEarth/run_amip.jl --config_file $CONFIG_PATH/gpu_amip_albedo_temporal_map_1M.yml --job_id gpu_amip_albedo_temporal_map_1M" - artifact_paths: "experiments/ClimaEarth/output/amip/gpu_amip_albedo_temporal_map_1M/artifacts/*" + artifact_paths: "experiments/ClimaEarth/output/gpu_amip_albedo_temporal_map_1M/artifacts/*" env: CLIMACOMMS_DEVICE: "CUDA" agents: diff --git a/NEWS.md b/NEWS.md index 0ecc3404ba..2e0dc109ca 100644 --- a/NEWS.md +++ b/NEWS.md @@ -14,6 +14,13 @@ higher-resolution version is not available. Please, refer to [ClimaArtifacts](https://github.com/CliMA/ClimaArtifacts) for more information. ### Code cleanup +#### Output path update - PR [#1058](https://github.com/CliMA/ClimaCoupler.jl/pull/1058) +Previously, ClimaEarth simulation outputs were saved in a path +`experiments/ClimaEarth/output/$mode_name/$job_id/artifacts/`. +This PR removes `mode_name` has from this pattern, so output will now be in +`experiments/ClimaEarth/output/$job_id/artifacts/`. +Note that any external scripts that assume an output path will need to be updated. + #### Remove ClimaCoupler.Diagnostics module - PR [#953](https://github.com/CliMA/ClimaCoupler.jl/pull/953) The ClimaCoupler Diagnostics module had become redundant with ClimaDiagnostics.jl, a package designed to provide robust diff --git a/experiments/ClimaEarth/components/atmosphere/climaatmos.jl b/experiments/ClimaEarth/components/atmosphere/climaatmos.jl index f1f7ccdeff..19d13265e0 100644 --- a/experiments/ClimaEarth/components/atmosphere/climaatmos.jl +++ b/experiments/ClimaEarth/components/atmosphere/climaatmos.jl @@ -345,8 +345,7 @@ function get_atmos_config_dict(coupler_dict::Dict, job_id::String) end # specify atmos output directory to be inside the coupler output directory - atmos_output_dir = - joinpath(coupler_dict["coupler_output_dir"], joinpath(coupler_dict["mode_name"], job_id), "clima_atmos") + atmos_output_dir = joinpath(coupler_dict["coupler_output_dir"], job_id, "clima_atmos") # merge configs # (if there are common keys, the last dictionary in the `merge` arguments takes precedence) diff --git a/experiments/ClimaEarth/run_amip.jl b/experiments/ClimaEarth/run_amip.jl index 999e97ddf7..1a5d6d3696 100644 --- a/experiments/ClimaEarth/run_amip.jl +++ b/experiments/ClimaEarth/run_amip.jl @@ -198,7 +198,7 @@ the plots (from postprocessing and the conservation checks) of the simulation wi temporary files will be saved. =# -COUPLER_OUTPUT_DIR = joinpath(config_dict["coupler_output_dir"], joinpath(mode_name, job_id)) +COUPLER_OUTPUT_DIR = joinpath(config_dict["coupler_output_dir"], job_id) dir_paths = setup_output_dirs(output_dir = COUPLER_OUTPUT_DIR, comms_ctx = comms_ctx) @info "Coupler output directory $(dir_paths.output)" @info "Coupler artifacts directory $(dir_paths.artifacts)" diff --git a/experiments/ClimaEarth/user_io/benchmarks.jl b/experiments/ClimaEarth/user_io/benchmarks.jl index 1a12859cc1..ff13225c67 100644 --- a/experiments/ClimaEarth/user_io/benchmarks.jl +++ b/experiments/ClimaEarth/user_io/benchmarks.jl @@ -113,8 +113,8 @@ function get_run_info(parsed_args, run_type) end # Construct CPU and GPU artifacts directories - cpu_artifacts_dir = joinpath(output_dir, mode_name, cpu_job_id, "artifacts") - gpu_artifacts_dir = joinpath(output_dir, mode_name, gpu_job_id, "artifacts") + cpu_artifacts_dir = joinpath(output_dir, cpu_job_id, "artifacts") + gpu_artifacts_dir = joinpath(output_dir, gpu_job_id, "artifacts") return (cpu_job_id, gpu_job_id, cpu_artifacts_dir, gpu_artifacts_dir) end