From 1af6b695c6e300641d81daea87b7f801d39e661e Mon Sep 17 00:00:00 2001 From: "Kurt A. O'Hearn" <ohearnk@msu.edu> Date: Sat, 22 Sep 2018 22:35:17 -0400 Subject: [PATCH] Tools: reformat proc_by_dim and fix an issue with subprocess command building. --- tools/run_sim_puremd.py | 36 +++++++++++++----------------------- 1 file changed, 13 insertions(+), 23 deletions(-) diff --git a/tools/run_sim_puremd.py b/tools/run_sim_puremd.py index 181e06bd..b7b13774 100644 --- a/tools/run_sim_puremd.py +++ b/tools/run_sim_puremd.py @@ -31,15 +31,9 @@ class TestCase(): r'(?P<key>ensemble_type\s+)\S+(?P<comment>.*)', r'\g<key>{0}\g<comment>'.format(x), l), \ 'nsteps': lambda l, x: sub( r'(?P<key>nsteps\s+)\S+(?P<comment>.*)', r'\g<key>{0}\g<comment>'.format(x), l), \ - 'proc_by_dim1': lambda l, x: sub( - r'(?P<key>proc_by_dim\s+)\S+(?P<proc_by_dim2>\s+\S+)(?P<proc_by_dim3>\s+\S+)(?P<comment>.*)', - r'\g<key>{0}\g<proc_by_dim2>\g<proc_by_dim3>\g<comment>'.format(x), l), \ - 'proc_by_dim2': lambda l, x: sub( - r'(?P<key>proc_by_dim\s+)(?P<proc_by_dim1>\S+\s+)\S+(?P<proc_by_dim3>\s+\S+)(?P<comment>.*)', - r'\g<key>\g<proc_by_dim1>{0}\g<proc_by_dim3>\g<comment>'.format(x), l), \ - 'proc_by_dim3': lambda l, x: sub( - r'(?P<key>proc_by_dim\s+)(?P<proc_by_dim1>\S+\s+)(?P<proc_by_dim2>\S+\s+)\S+(?P<comment>.*)', - r'\g<key>\g<proc_by_dim1>\g<proc_by_dim2>{0}\g<comment>'.format(x), l), \ + 'proc_by_dim': lambda l, x: sub( + r'(?P<key>proc_by_dim\s+)\S+\s+\S+\s+\S+(?P<comment>.*)', + r'\g<key>{0} {1} {2}\g<comment>'.format(*(x.split(':'))), l), \ 'tabulate_long_range': lambda l, x: sub( r'(?P<key>tabulate_long_range\s+)\S+(?P<comment>.*)', r'\g<key>{0}\g<comment>'.format(x), l), \ 'reneighbor': lambda l, x: sub( @@ -100,15 +94,18 @@ class TestCase(): fp_temp.close() def run(self, binary, process_results=False): + from operator import mul + from functools import reduce + # command to run as subprocess args = [ 'mpirun', '-np', - # placeholder, substituted below - '0', + '0', # placeholder, substituted below binary, self.__geo_file, self.__ffield_file, + '', # placeholder, substituted below ] env = dict(environ) @@ -128,9 +125,7 @@ class TestCase(): param_dict['name'] = path.basename(self.__geo_file).split('.')[0] \ + '_cm' + param_dict['charge_method'] \ + '_s' + param_dict['nsteps'] \ - + '_proc' + param_dict['proc_by_dim1'] \ - + '_' + param_dict['proc_by_dim2'] \ - + '_' + param_dict['proc_by_dim3'] \ + + '_proc' + param_dict['proc_by_dim'].replace(':', '_') \ + '_ren' + param_dict['reneighbor'] \ + '_skind' + param_dict['vlist_buffer'] \ + '_q' + param_dict['cm_solver_type'] \ @@ -144,16 +139,14 @@ class TestCase(): + '_pa' + param_dict['cm_solver_pre_app_type'] \ + '_paji'+ str(param_dict['cm_solver_pre_app_jacobi_iters']) - args[2] = str(int(param_dict['proc_by_dim1']) - * int(param_dict['proc_by_dim2']) - * int(param_dict['proc_by_dim3'])); + args[2] = str(reduce(mul, + map(int, param_dict['proc_by_dim'].split(':')), 1)) if not process_results: self._setup(param_dict, temp_file) - #env['OMP_NUM_THREADS'] = param_dict['threads'] start = time() - args.append(temp_file); + args[6] = temp_file; proc_handle = Popen(args, stdout=PIPE, stderr=PIPE, env=env, universal_newlines=True) stdout, stderr = proc_handle.communicate() stop = time() @@ -167,7 +160,6 @@ class TestCase(): else: self._process_result(fout, param_dict, self.__min_step, self.__max_step) - break fout.close() if path.exists(temp_file): @@ -275,9 +267,7 @@ if __name__ == '__main__': params = { 'ensemble_type': ['0'], 'nsteps': ['100'], - 'proc_by_dim1': ['1'], - 'proc_by_dim2': ['1'], - 'proc_by_dim3': ['1'], + 'proc_by_dim': ['1:1:1'], 'tabulate_long_range': ['0'], 'reneighbor': ['1'], 'vlist_buffer': ['0'], -- GitLab