Skip to content

Commit becbfb7

Browse files
committed
fix timeout test and add cpu_budget logic
Signed-off-by: Jack Luar <[email protected]>
1 parent 9e899c0 commit becbfb7

File tree

2 files changed

+38
-5
lines changed

2 files changed

+38
-5
lines changed

tools/AutoTuner/src/autotuner/distributed.py

Lines changed: 34 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,30 @@
7474
# Global variable for args
7575
args = None
7676

77+
TEMPLATE = """
78+
Expected figures for this experiment.
79+
Wall time: {runtime:.2f} hours
80+
Number of Samples:
81+
Samples per minute: {num_samples_per_minute:.2f}
82+
Design runtime of 10 min: {num_samples_10min:.2f}
83+
Design runtime of 1h: {num_samples_1h:.2f}
84+
Number of iterations
85+
Design runtime of 10 min: {num_iterations_10min:.2f}
86+
Design runtime of 1h: {num_iterations_1h:.2f}
87+
"""
88+
89+
90+
def calculate_expected_numbers(runtime, num_samples):
91+
# Runtime - hours
92+
return TEMPLATE.format(
93+
runtime=runtime,
94+
num_samples_per_minute=num_samples / (runtime * 60),
95+
num_samples_10min=(num_samples / (runtime * 60)) * 10,
96+
num_samples_1h=(num_samples / (runtime * 60)) * 60,
97+
num_iterations_10min=((num_samples / (runtime * 60)) * 10) / num_samples,
98+
num_iterations_1h=((num_samples / (runtime * 60)) * 60) / num_samples,
99+
)
100+
77101

78102
class AutoTunerBase(tune.Trainable):
79103
"""
@@ -417,7 +441,7 @@ def parse_arguments():
417441
type=int,
418442
metavar="<int>",
419443
default=int(np.floor(cpu_count() / 2)),
420-
help="Number of cpus to be used.",
444+
help="CPU Hours",
421445
)
422446
parser.add_argument(
423447
"--openroad_threads",
@@ -487,6 +511,15 @@ def parse_arguments():
487511
jobs = int(args.cpu_budget / args.resources_per_trial)
488512
args.jobs = jobs
489513

514+
# Calculate timeout based on cpu_budget
515+
if args.cpu_budget is not None:
516+
args.timeout = args.cpu_budget / os.cpu_count()
517+
template = calculate_expected_numbers(args.timeout, args.samples)
518+
print(template)
519+
ans = input("Do you want to continue? [Y/n]")
520+
if ans.lower() != "y":
521+
sys.exit(0)
522+
490523
return args
491524

492525

tools/AutoTuner/test/smoke_test_timeout.py

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
os.chdir(src_dir)
88

99

10-
class BaseTuneTimeoutTest(unittest.TestCase):
10+
class BaseTimeoutSmokeTest(unittest.TestCase):
1111
platform = ""
1212
design = ""
1313

@@ -37,7 +37,7 @@ def test_trial_timeout(self):
3737
)
3838

3939

40-
class ASAP7TuneTimeoutTest(BaseTuneTimeoutTest):
40+
class ASAP7TimeoutSmokeTest(BaseTimeoutSmokeTest):
4141
platform = "asap7"
4242
design = "gcd"
4343

@@ -48,7 +48,7 @@ def test_trial_timeout(self):
4848
self.assertFalse(successful)
4949

5050

51-
class SKY130HDTuneTimeoutTest(BaseTuneTimeoutTest):
51+
class SKY130HDTimeoutSmokeTest(BaseTimeoutSmokeTest):
5252
platform = "sky130hd"
5353
design = "gcd"
5454

@@ -59,7 +59,7 @@ def test_trial_timeout(self):
5959
self.assertFalse(successful)
6060

6161

62-
class IHPSG13G2TuneTimeoutTest(BaseTuneTimeoutTest):
62+
class IHPSG13G2TimeoutSmokeTest(BaseTimeoutSmokeTest):
6363
platform = "ihp-sg13g2"
6464
design = "gcd"
6565

0 commit comments

Comments
 (0)