Made it possible to add tuning parameters to the database using the script

pull/274/head
Cedric Nugteren 2018-04-10 21:24:36 +02:00
parent 3fbbb81137
commit f6a48f05ed
1 changed files with 26 additions and 0 deletions

View File

@ -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)