Skip to content

Commit f8d26c1

Browse files
committed
Add scripts for the paper
1 parent cda4940 commit f8d26c1

File tree

3 files changed

+27
-22
lines changed

3 files changed

+27
-22
lines changed

examples/v2beta1/charm/generate_jobs.py

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
njobs = 16
1515

1616

17-
def create_job(prefix, job_index, priority, problem_size, min_replicas, max_replicas, timesteps):
17+
def create_job(mode, prefix, job_index, priority, problem_size, min_replicas, max_replicas, timesteps):
1818
with open("charm-template.yaml", "r") as file:
1919
template = file.read()
2020

@@ -23,22 +23,30 @@ def create_job(prefix, job_index, priority, problem_size, min_replicas, max_repl
2323
num_chares = 2 ** (num_chares - 1).bit_length()
2424
chare_size = problem_size // num_chares
2525

26+
if mode == "min":
27+
max_replicas = min(min_replicas - 1, 59)
28+
elif mode == "max":
29+
min_replicas = min(max_replicas - 1, 59)
30+
elif mode == "elastic" or mode == "moldable":
31+
min_replicas = min(min_replicas - 1, 59)
32+
max_replicas = min(max_replicas - 1, 59)
33+
2634
job_yaml = template.format(
2735
prefix=prefix,
2836
job_index=job_index,
2937
priority=priority,
3038
problem_size=problem_size,
3139
chare_size=chare_size,
3240
timesteps=timesteps,
33-
min_replicas=min(max_replicas-1, 59),
34-
max_replicas=min(max_replicas-1, 59),
41+
min_replicas=min_replicas,
42+
max_replicas=max_replicas,
3543
)
3644

37-
with open(f"jobs_elastic/charm-job-{job_index}.yaml", "w") as file:
45+
with open(f"jobs_{mode}/charm-job-{job_index}.yaml", "w") as file:
3846
file.write(job_yaml)
3947

4048

41-
def generate_jobs():
49+
def generate_jobs(mode):
4250
sizes_per_pe = [256, 512, 1024, 1024]
4351
min_pes = [2, 4, 8, 16]
4452
timesteps_per_job = [40000, 40000, 40000, 10000]
@@ -57,12 +65,12 @@ def generate_jobs():
5765
problem_size = min_replicas * sizes_per_pe[idx]
5866
timesteps = timesteps_per_job[idx]
5967
prefix = job_prefixes[idx]
60-
create_job(prefix, i, priority, problem_size, min_replicas, max_replicas, timesteps)
68+
create_job(mode, prefix, i, priority, problem_size, min_replicas, max_replicas, timesteps)
6169

6270

63-
def submit_jobs():
71+
def submit_jobs(mode):
6472
for job_index in range(njobs):
65-
job_file = f"jobs_elastic/charm-job-{job_index}.yaml"
73+
job_file = f"jobs_{mode}/charm-job-{job_index}.yaml"
6674
print(f"Submitting {job_file}")
6775
# Here you would submit the job using your cluster's job submission command
6876
os.system(f"kubectl apply -f {job_file}")
@@ -72,10 +80,11 @@ def submit_jobs():
7280

7381

7482
if __name__ == "__main__":
75-
if sys.argv[1] == "generate_jobs":
76-
generate_jobs()
83+
mode = sys.argv[2]
84+
if sys.argv[1] == "generate":
85+
generate_jobs(mode)
7786
elif sys.argv[1] == "submit":
78-
submit_jobs()
87+
submit_jobs(mode)
7988
else:
8089
print("Invalid argument. Use 'generate_jobs' to generate job files or 'submit' to submit them.")
8190
sys.exit(1)

examples/v2beta1/charm/simulation/run.py

Lines changed: 3 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ def generate_job_list(nexps):
116116
jobs_list = []
117117
for i in range(njobs):
118118
idx = choice(indices)
119-
#priority = (3 - idx) + randint(1, 2)
120119
priority = randint(1, 5)
121120
min_replicas = min_pes[idx] - 1
122121
max_replicas = min(4 * (min_replicas + 1), 60) - 1
@@ -417,24 +416,18 @@ def find_critical_experiment(modes, max_pes):
417416
job_prefixes = ["small", "medium", "large", "xlarge"]
418417
counts = [0, 0, 0, 0]
419418
njobs = 16
420-
#njobs = 9
421419

422-
#jobs = [2, 3, 2, 1, 0, 1, 1, 1, 0, 1, 1, 2, 0, 1, 1, 1]
423-
#priorities = [2, 1, 3, 3, 4, 3, 3, 3, 5, 3, 3, 2, 4, 3, 3, 3]
424420
jobs = [2, 1, 1, 0, 3, 3, 0, 3, 1, 1, 0, 3, 0, 1, 1, 1]
425421
priorities = [2, 3, 4, 4, 2, 1, 4, 1, 4, 3, 4, 1, 5, 3, 3, 3]
426-
#jobs = [2, 3, 2, 1, 0, 1, 1, 1, 0]
427422

428423
jobs_list = []
429424
for i, job_index in enumerate(jobs):
430425
idx = job_index
431-
#priority = (3 - job_index) + randint(1, 2)
432-
#print(priority)
433426
priority = priorities[i]
434427
min_replicas = min_pes[idx] - 1
435428
max_replicas = min(4 * (1 + min_replicas), 60) - 1
436429
problem_size = (min_replicas + 1) * sizes_per_pe[idx]
437-
timesteps = timesteps_per_job[idx] #+ 100 * randint(0, 10)
430+
timesteps = timesteps_per_job[idx]
438431
prefix = job_prefixes[idx]
439432
#create_job(prefix, i, priority, problem_size, min_replicas, max_replicas, timesteps)
440433

@@ -453,6 +446,6 @@ def find_critical_experiment(modes, max_pes):
453446
#plot_utilization(events, jobs, 60)
454447
#print(events)
455448
#print(get_stats(events, 60))
456-
#vary_rescale_gap(["elastic", "moldable", "min_replicas", "max_replicas"], 60)
457-
#vary_submission_time(["elastic", "moldable", "min_replicas", "max_replicas"], 60)
449+
vary_rescale_gap(["elastic", "moldable", "min_replicas", "max_replicas"], 60)
450+
vary_submission_time(["elastic", "moldable", "min_replicas", "max_replicas"], 60)
458451
#find_critical_experiment(["elastic", "moldable", "min_replicas", "max_replicas"], 60)

examples/v2beta1/charm/track_utilization.py

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
import subprocess
22
import time
3+
import sys
34

4-
output_file = "/home/aditya/mpi-operator/examples/v2beta1/charm/pod_utilization_moldable_new.log"
5+
mode = sys.argv[1]
6+
7+
output_file = f"pod_utilization_{mode}.log"
58

69
open(output_file, "w").close() # Clear the file before starting
710

0 commit comments

Comments
 (0)