2
2
# To run: `julia --project=.buildkite .buildkite/cpu_scaling_pipeline/generate_pipeline.jl`
3
3
# nodes = (1, 2, 4, 8, 16, 32)
4
4
# helems = (30, 42, 60, 84, 120, 170)
5
- nodes = (1 , 2 , 4 )
6
- helems = (30 , 42 , 60 )
5
+
6
+ # strong scaling
7
+ ss_nodes = (1 , 2 , 4 ) # number of nodes for weak scaling runs
8
+ ss_helems = (30 , 60 , 120 ) # helems for weak scaling runs
9
+ ss_procspernode = 16 # number of MPI processes per node
10
+
11
+ # weak scaling
12
+ ws_nodes = (1 , 2 , 4 ) # number of nodes for weak scaling runs
13
+ ws_helems = (30 , 42 , 60 ) # helems for weak scaling runs
14
+ ws_procspernode = 16 # number of MPI processes per node
7
15
8
16
import YAML
9
17
@@ -36,19 +44,41 @@ init_step = Dict(
36
44
),
37
45
)
38
46
39
- function generate_step (nodes:: Int , helems:: Int )
47
+ function generate_step_ws (nodes:: Int , helems:: Int , procspernode :: Int )
40
48
return Dict (
41
- " label" => " :computer: $nodes node, 16 processes per node, helem = $helems " ,
49
+ " label" => " :computer: MBW weak scaling, $nodes nodes, $procspernode processes per node, helem = $helems " ,
42
50
" command" => " srun julia --color=yes --project=.buildkite .buildkite/ci_driver.jl --config_file $MBW_SCALING_CONFIG_PATH /moist_baroclinic_wave_helem_$(helems) _0M_ws.yml --job_id moist_baroclinic_wave_helem_$(helems) _0M_ws" ,
43
51
" artifact_paths" => " moist_baroclinic_wave_helem_$(helems) _0M_ws/output_active/*" ,
52
+ " key" => " ws_$(nodes) _nodes" ,
44
53
" agents" => Dict (
45
54
" slurm_constraint" => CPU_TYPE,
46
55
" queue" => " new-central" ,
47
56
" slurm_nodes" => nodes,
48
- " slurm_tasks_per_node" => 16 ,
57
+ " slurm_tasks_per_node" => procspernode ,
49
58
" slurm_cpus_per_task" => 1 ,
50
59
" slurm_mem" => 0 ,
51
60
" slurm_time" => " 1:00:00" ,
61
+ " slurm_reservation" => " false" ,
62
+ " slurm_exclusive" => true ,
63
+ ),
64
+ )
65
+ end
66
+
67
+ function generate_step_ss (nodes:: Int , helems:: Int , procspernode:: Int )
68
+ return Dict (
69
+ " label" => " :computer: MBW strong scaling, $nodes nodes, $procspernode processes per node, helem = $helems " ,
70
+ " command" => " srun julia --color=yes --project=.buildkite .buildkite/ci_driver.jl --config_file $MBW_SCALING_CONFIG_PATH /moist_baroclinic_wave_helem_$(helems) _0M_ss.yml --job_id moist_baroclinic_wave_helem_$(helems) _0M_ss" ,
71
+ " artifact_paths" => " moist_baroclinic_wave_helem_$(helems) _0M_ss/output_active/*" ,
72
+ " key" => " ss_$(nodes) _nodes" ,
73
+ " agents" => Dict (
74
+ " slurm_constraint" => CPU_TYPE,
75
+ " queue" => " new-central" ,
76
+ " slurm_nodes" => nodes,
77
+ " slurm_tasks_per_node" => procspernode,
78
+ " slurm_cpus_per_task" => 1 ,
79
+ " slurm_mem" => 0 ,
80
+ " slurm_time" => " 1:00:00" ,
81
+ " slurm_reservation" => " false" ,
52
82
" slurm_exclusive" => true ,
53
83
),
54
84
)
@@ -62,7 +92,15 @@ pipeline = Dict(
62
92
" wait" ,
63
93
Dict (
64
94
" group" => " Moist Baroclinic Wave, weak scaling" ,
65
- " steps" => [generate_step .(nodes, helems)... ],
95
+ " steps" => [
96
+ generate_step_ws .(ws_nodes, ws_helems, ws_procspernode)... ,
97
+ ],
98
+ ),
99
+ Dict (
100
+ " group" => " Moist Baroclinic Wave, strong scaling" ,
101
+ " steps" => [
102
+ generate_step_ss .(ss_nodes, ss_helems, ss_procspernode)... ,
103
+ ],
66
104
),
67
105
],
68
106
)
0 commit comments