From f6a48f05edd096017f8844e6beccb409409b04a8 Mon Sep 17 00:00:00 2001 From: Cedric Nugteren Date: Tue, 10 Apr 2018 21:24:36 +0200 Subject: Made it possible to add tuning parameters to the database using the script --- scripts/database/database.py | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'scripts') diff --git a/scripts/database/database.py b/scripts/database/database.py index 57fbf74a..a2d9c6a0 100755 --- a/scripts/database/database.py +++ b/scripts/database/database.py @@ -73,6 +73,18 @@ def remove_database_entries(database, remove_if_matches_fields): print("[database] Removed %d entries from the database" % (old_length - new_length)) +def add_tuning_parameter(database, parameter_name, kernel, value): + num_changes = 0 + for section in database["sections"]: + if section["kernel"] == kernel: + for result in section["results"]: + if parameter_name not in result["parameters"]: + result["parameters"][parameter_name] = value + section["parameter_names"].append(parameter_name) + num_changes += 1 + print("[database] Made %d addition(s) of %s" % (num_changes, parameter_name)) + + def main(argv): # Parses the command-line arguments @@ -80,6 +92,9 @@ def main(argv): parser.add_argument("source_folder", help="The folder with JSON files to parse to add to the database") parser.add_argument("clblast_root", help="Root of the CLBlast sources") parser.add_argument("-r", "--remove_device", type=str, default=None, help="Removes all entries for a specific device") + parser.add_argument("--add_tuning_parameter", type=str, default=None, help="Adds this parameter to existing entries") + parser.add_argument("--add_tuning_parameter_for_kernel", type=str, default=None, help="Adds the above parameter for this kernel") + parser.add_argument("--add_tuning_parameter_value", type=int, default=0, help="Set this value as the default for the above parameter") parser.add_argument("-v", "--verbose", action="store_true", help="Increase verbosity of the script") cl_args = parser.parse_args(argv) @@ -134,6 +149,17 @@ def main(argv): remove_database_entries(database, {"clblast_device_name": cl_args.remove_device}) io.save_database(database, database_filename) + # Adds new tuning parameters to existing database entries + if cl_args.add_tuning_parameter is not None and\ + cl_args.add_tuning_parameter_for_kernel is not None: + print("[database] Adding tuning parameter: '%s' for kernel '%s' with default %d" % + (cl_args.add_tuning_parameter, cl_args.add_tuning_parameter_for_kernel, + cl_args.add_tuning_parameter_value)) + add_tuning_parameter(database, cl_args.add_tuning_parameter, + cl_args.add_tuning_parameter_for_kernel, + cl_args.add_tuning_parameter_value) + io.save_database(database, database_filename) + # Retrieves the best performing results print("[database] Calculating the best results per device/kernel...") database_best_results = bests.get_best_results(database) -- cgit v1.2.3