Repository: systemml Updated Branches: refs/heads/master c5a330d7d -> 152eba1a7
Write output of systemml run from perf test scripts Closes #561 Project: http://git-wip-us.apache.org/repos/asf/systemml/repo Commit: http://git-wip-us.apache.org/repos/asf/systemml/commit/152eba1a Tree: http://git-wip-us.apache.org/repos/asf/systemml/tree/152eba1a Diff: http://git-wip-us.apache.org/repos/asf/systemml/diff/152eba1a Branch: refs/heads/master Commit: 152eba1a7d5de2d34ab97db7d49596b41569aeb5 Parents: c5a330d Author: Nakul Jindal <[email protected]> Authored: Fri Jul 7 11:23:17 2017 -0700 Committer: Nakul Jindal <[email protected]> Committed: Fri Jul 7 11:23:18 2017 -0700 ---------------------------------------------------------------------- scripts/perftest/python/run_perftest.py | 10 +++++----- scripts/perftest/python/utils.py | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 10 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/systemml/blob/152eba1a/scripts/perftest/python/run_perftest.py ---------------------------------------------------------------------- diff --git a/scripts/perftest/python/run_perftest.py b/scripts/perftest/python/run_perftest.py index dcc52c8..b0257d4 100755 --- a/scripts/perftest/python/run_perftest.py +++ b/scripts/perftest/python/run_perftest.py @@ -82,7 +82,7 @@ ML_PREDICT = {'Kmeans': 'Kmeans-predict', # Responsible for execution and metric logging -def algorithm_workflow(algo, exec_type, config_path, file_name, action_mode): +def algorithm_workflow(algo, exec_type, config_path, dml_file_name, action_mode): """ This function is responsible for overall workflow. This does the following actions Check if the input is key value argument or list of positional args @@ -99,7 +99,7 @@ def algorithm_workflow(algo, exec_type, config_path, file_name, action_mode): config_path : String Path to read the json file from - file_name : String + dml_file_name : String DML file name to be used while processing the arguments give action_mode : String @@ -116,8 +116,8 @@ def algorithm_workflow(algo, exec_type, config_path, file_name, action_mode): list_args = ' '.join(config_data) args = {'-args': list_args} - folder_name = config_path.split('/')[-1] - mat_type, mat_shape, intercept = get_folder_metrics(folder_name, action_mode) + config_file_name = config_path.split('/')[-1] + mat_type, mat_shape, intercept = get_folder_metrics(config_file_name, action_mode) exit_flag_success = get_existence(config_path, action_mode) @@ -125,7 +125,7 @@ def algorithm_workflow(algo, exec_type, config_path, file_name, action_mode): print('data already exists {}'.format(config_path)) time = 'data_exists' else: - time = exec_dml_and_parse_time(exec_type, file_name, args) + time = exec_dml_and_parse_time(exec_type, dml_file_name, config_file_name, args) # Write a _SUCCESS file only if time is found and in data-gen action_mode if len(time.split('.')) == 2 and action_mode == 'data-gen': http://git-wip-us.apache.org/repos/asf/systemml/blob/152eba1a/scripts/perftest/python/utils.py ---------------------------------------------------------------------- diff --git a/scripts/perftest/python/utils.py b/scripts/perftest/python/utils.py index 7ff3b54..464d7f6 100755 --- a/scripts/perftest/python/utils.py +++ b/scripts/perftest/python/utils.py @@ -138,7 +138,7 @@ def get_existence(path, action_mode): return exist -def exec_dml_and_parse_time(exec_type, file_name, args, Time=True): +def exec_dml_and_parse_time(exec_type, dml_file_name, execution_output_file, args, Time=True): """ This function is responsible of execution of input arguments via python sub process, We also extract time obtained from the output of this subprocess @@ -146,9 +146,12 @@ def exec_dml_and_parse_time(exec_type, file_name, args, Time=True): exec_type: String Contains the execution type singlenode / hybrid_spark - file_name: String + dml_file_name: String DML file name to be used while processing the arguments give + execution_output_file: String + Name of the file where the output of the DML run is written out + args: Dictionary Key values pairs depending on the arg type @@ -156,7 +159,7 @@ def exec_dml_and_parse_time(exec_type, file_name, args, Time=True): Boolean argument used to extract time from raw output logs. """ - algorithm = file_name + '.dml' + algorithm = dml_file_name + '.dml' if exec_type == 'singlenode': exec_script = join(os.environ.get('SYSTEMML_HOME'), 'bin', 'systemml-standalone.py') @@ -189,11 +192,15 @@ def exec_dml_and_parse_time(exec_type, file_name, args, Time=True): out1, err1 = proc1.communicate() if "Error" in str(err1): - print('Error Found in {}'.format(file_name)) + print('Error Found in {}'.format(dml_file_name)) total_time = 'failure' else: total_time = parse_time(proc1_log) + with open(execution_output_file, 'w') as f: + for row in proc1_log: + f.write("%s\n" % str(row)) + else: total_time = 'not_specified' @@ -242,7 +249,8 @@ def exec_test_data(exec_type, path): args = {'-args': ' '.join([X, Y, X_test, Y_test, 'csv'])} # Call the exec script without time - exec_dml_and_parse_time(exec_type, test_split_script, args, False) + config_file_name = path.split('/')[-1] + exec_dml_and_parse_time(exec_type, test_split_script, config_file_name, args, False) def check_predict(current_algo, ML_PREDICT):
