Skip to content

Commit b5f2534

Browse files
committed
bench: Use argparse in make-pbs
1 parent 8fa28c3 commit b5f2534

1 file changed

Lines changed: 40 additions & 28 deletions

File tree

benchmarks/user/make-pbs.py

Lines changed: 40 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,11 @@
11
import os
2-
3-
import click
4-
5-
from benchmark import option_simulation
2+
import argparse
63
import devito
74

85

9-
@click.group()
10-
def menu():
11-
pass
12-
13-
14-
@menu.command(name='generate')
15-
@option_simulation
16-
@click.option('-nn', multiple=True, default=[1], help='Number of nodes')
17-
@click.option('-ncpus', default=1, help='Number of cores *per node*') # Should be ncores
18-
@click.option('-mem', default=120, help='Requested DRAM *per node*')
19-
@click.option('-np', default=1, help='Number of MPI processes *per node*')
20-
@click.option('-nt', default=1, help='Number of OpenMP threads *per MPI process*')
21-
@click.option('--mpi', multiple=True, default=['basic'], help='Devito MPI mode(s)')
22-
@click.option('--arch', default='unknown', help='Test-bed architecture')
23-
@click.option('-r', '--resultsdir', default='results', help='Results directory')
24-
@click.option('--load', multiple=True, default=[], help='Modules to be loaded')
25-
@click.option('--export', multiple=True, default=[], help='Env vars to be exported')
26-
def generate(**kwargs):
6+
def generate(args):
277
join = lambda l: ' '.join('%d' % i for i in l)
28-
args = dict(kwargs)
8+
args = vars(args)
299
args['shape'] = join(args['shape'])
3010
args['space_order'] = join(args['space_order'])
3111

@@ -62,11 +42,11 @@ def generate(**kwargs):
6242
""" # noqa
6343

6444
# Generate one PBS file for each `np` value
65-
for nn in kwargs['nn']:
45+
for nn in args['nn']:
6646
args['nn'] = nn
6747

6848
cmds = []
69-
for i in kwargs['mpi']:
49+
for i in args['mpi']:
7050
args['mpi'] = i
7151
cmds.append(template_cmd % args)
7252
cmds = ' \n'.join(cmds)
@@ -77,12 +57,44 @@ def generate(**kwargs):
7757
f.write(body)
7858

7959

80-
@menu.command(name='cleanup')
81-
def cleanup():
60+
def cleanup(args):
8261
for f in os.listdir():
8362
if f.endswith('.gen.sh'):
8463
os.remove(f)
8564

65+
def create_parser():
66+
parser = argparse.ArgumentParser(description='Generate PBS scripts')
67+
subparsers = parser.add_subparsers(dest='command', required=True)
68+
69+
gen = subparsers.add_parser('generate')
70+
gen.add_argument('-P', '--problem', required=True)
71+
gen.add_argument('-d', '--shape', type=int, nargs='+', default=[50, 50, 50])
72+
gen.add_argument('-so', '--space-order', type=int, nargs='+', default=[2])
73+
gen.add_argument('--tn', type=float, default=250)
74+
gen.add_argument('-nn', type=int, nargs='+', default=[1])
75+
gen.add_argument('-ncpus', type=int, default=1)
76+
gen.add_argument('-mem', type=int, default=120)
77+
gen.add_argument('-np', type=int, default=1)
78+
gen.add_argument('-nt', type=int, default=1)
79+
gen.add_argument('--mpi', nargs='+', default=['basic'])
80+
gen.add_argument('--arch', default='unknown')
81+
gen.add_argument('-r', '--resultsdir', default='results')
82+
gen.add_argument('--load', nargs='*', default=[])
83+
gen.add_argument('--export', nargs='*', default=[])
84+
85+
subparsers.add_parser('cleanup')
86+
return parser
87+
88+
89+
def main():
90+
parser = create_parser()
91+
args = parser.parse_args()
92+
93+
if args.command == 'generate':
94+
generate(args)
95+
elif args.command == 'cleanup':
96+
cleanup(args)
97+
8698

8799
if __name__ == "__main__":
88-
menu()
100+
main()

0 commit comments

Comments
 (0)