|
| 1 | +# A pipeline for downstream performance checks |
| 2 | +agents: |
| 3 | + queue: clima |
| 4 | + slurm_time: 14:00:00 |
| 5 | + modules: climacommon/2025_05_15 |
| 6 | + |
| 7 | +env: |
| 8 | + JULIA_DEPOT_PATH: "${BUILDKITE_BUILD_PATH}/${BUILDKITE_PIPELINE_SLUG}/depot/default" |
| 9 | + JULIA_MAX_NUM_PRECOMPILE_FILES: 100 |
| 10 | + GKSwstype: 100 |
| 11 | + SLURM_KILL_BAD_EXIT: 1 |
| 12 | + COUPLER_PATH: ".buildkite/perf/ClimaCoupler.jl" |
| 13 | + CONFIG_PATH: "$COUPLER_PATH/config/nightly_configs" |
| 14 | + BENCHMARK_CONFIG_PATH: "$COUPLER_PATH/config/benchmark_configs" |
| 15 | + |
| 16 | +timeout_in_minutes: 840 |
| 17 | + |
| 18 | +steps: |
| 19 | + - label: "Check if pipeline should run :mag:" |
| 20 | + key: "check_changes" |
| 21 | + soft_fail: true |
| 22 | + command: |
| 23 | + - git submodule update --init --recursive .buildkite/perf/ClimaCoupler.jl |
| 24 | + - | |
| 25 | + # Check if files in src, ext, or .buildkite/perf have changed |
| 26 | + if git diff --quiet origin/main...HEAD -- src ext .buildkite/perf; then |
| 27 | + echo "⏭️ No relevant changes detected, skipping downstream checks" |
| 28 | + exit 1 |
| 29 | + else |
| 30 | + echo "✅ Relevant changes detected, running downstream checks" |
| 31 | + exit 0 |
| 32 | + fi |
| 33 | +
|
| 34 | + - label: "init :GPU:" |
| 35 | + key: "init_gpu_env" |
| 36 | + depends_on: "check_changes" |
| 37 | + command: |
| 38 | + - "echo $$JULIA_DEPOT_PATH" |
| 39 | + - echo "--- Instantiate AMIP env" |
| 40 | + # Instantiate and dev install ClimaCore |
| 41 | + - "julia --project=$COUPLER_PATH/experiments/ClimaEarth/ -e 'using Pkg; Pkg.instantiate(;verbose=true)'" |
| 42 | + - 'julia --project=$COUPLER_PATH/experiments/ClimaEarth/ -e ''using Pkg; Pkg.develop(path=".")''' |
| 43 | + - 'julia --project=$COUPLER_PATH/experiments/ClimaEarth/ -e ''using Pkg; Pkg.add("MPI")''' |
| 44 | + - "julia --project=$COUPLER_PATH/experiments/ClimaEarth/ -e 'using Pkg; Pkg.precompile()'" |
| 45 | + - "julia --project=$COUPLER_PATH/experiments/ClimaEarth/ -e 'using Pkg; Pkg.status()'" |
| 46 | + agents: |
| 47 | + slurm_gpus: 1 |
| 48 | + slurm_cpus_per_task: 8 |
| 49 | + env: |
| 50 | + JULIA_NUM_PRECOMPILE_TASKS: 8 |
| 51 | + JULIA_MAX_NUM_PRECOMPILE_FILES: 50 |
| 52 | + |
| 53 | + - label: "Flagship AMIP GPU with prognostic EDMF + 1M + integrated land (16 helems)" |
| 54 | + key: "gpu_amip_progedmf_1M_land_he16" |
| 55 | + depends_on: "init_gpu_env" |
| 56 | + command: |
| 57 | + - "srun julia --threads=3 --color=yes --project=$COUPLER_PATH/experiments/ClimaEarth/ $COUPLER_PATH/experiments/ClimaEarth/run_amip.jl --config_file $BENCHMARK_CONFIG_PATH/amip_progedmf_1m_land_he16.yml --job_id gpu_amip_progedmf_1M_land_he16" |
| 58 | + - echo "--- Checking SYPD from artifacts" |
| 59 | + - bash .buildkite/perf/check-sypd.sh |
| 60 | + artifact_paths: "output/gpu_amip_progedmf_1M_land_he16/artifacts/*" |
| 61 | + env: |
| 62 | + CLIMACOMMS_DEVICE: "CUDA" |
| 63 | + BASELINE_SYPD: "0.081" |
| 64 | + MIN_PERCENT_CHANGE: "-1" |
| 65 | + agents: |
| 66 | + slurm_gpus_per_task: 1 |
| 67 | + slurm_cpus_per_task: 4 |
| 68 | + slurm_ntasks: 1 |
| 69 | + slurm_mem: 16GB |
0 commit comments