summaryrefslogtreecommitdiff
path: root/scripts/database/database.py
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2018-04-10 21:24:36 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2018-04-10 21:24:36 +0200
commitf6a48f05edd096017f8844e6beccb409409b04a8 (patch)
tree6e2361c0ed1dc138afae02d6c4712ab0735ff9ee /scripts/database/database.py
parent3fbbb811375928305c5943d8bd7fa65e4a6a628f (diff)
Made it possible to add tuning parameters to the database using the script
Diffstat (limited to 'scripts/database/database.py')
-rwxr-xr-xscripts/database/database.py26
1 files changed, 26 insertions, 0 deletions
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)