diff options
105 files changed, 7584 insertions, 4107 deletions
@@ -1,6 +1,10 @@ Development (next version) +- The tuning database now has defaults per architecture (e.g. NVIDIA Kepler SM3.5, AMD Fiji) +- The tuning database now has a dictionary to translate vendor/device names to a common set +- The tuners can now distinguish between different AMD GPU board names of the same architecture - The tuners can now use particle-swarm optimisation to search more efficiently (thanks to 'mcian') +- Further improved compilation time of database.cpp - Various minor fixes and enhancements - Added non-BLAS routines: * SIM2COL/DIM2COL/CIM2COL/ZIM2COL/HIM2COL (im2col transform as used to express convolution as GEMM) diff --git a/CMakeLists.txt b/CMakeLists.txt index f82af47a..5d86d05d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -159,8 +159,8 @@ endif() # Sets the supported routines and the used kernels. New routines and kernels should be added here. set(KERNELS copy_fast copy_pad transpose_fast transpose_pad xaxpy xdot xger xgemm xgemm_direct xgemv) -set(DATABASES copy invert pad padtranspose transpose xaxpy xdot - xgemm xgemm_direct xgemv xgemv_fast xgemv_fast_rot xger xtrsv) +set(DATABASES copy pad padtranspose transpose xaxpy xdot + xgemm xgemm_direct xgemv xgemv_fast xgemv_fast_rot xger) set(SAMPLE_PROGRAMS_CPP sgemm sgemm_batched) set(SAMPLE_PROGRAMS_C sasum dgemv sgemm haxpy cache) if(NETLIB) @@ -194,6 +194,7 @@ set(HEADERS # such that they can be discovered by IDEs such as CLion and Visual include/clblast_half.h src/database/apple_cpu_fallback.hpp src/database/database.hpp + src/database/database_structure.hpp src/database/kernel_selection.hpp src/routines/level1/xamin.hpp src/routines/level1/xmax.hpp @@ -202,6 +203,7 @@ set(HEADERS # such that they can be discovered by IDEs such as CLion and Visual src/routines/common.hpp src/utilities/buffer_test.hpp src/utilities/clblast_exceptions.hpp + src/utilities/device_mapping.hpp src/utilities/msvc.hpp src/utilities/utilities.hpp src/cache.hpp @@ -230,7 +232,12 @@ foreach(ROUTINE ${LEVELX_ROUTINES}) set(HEADERS ${HEADERS} src/routines/levelx/${ROUTINE}.hpp) endforeach() foreach(DATABASE ${DATABASES}) - set(HEADERS ${HEADERS} src/database/kernels/${DATABASE}.hpp) + set(HEADERS ${HEADERS} src/database/kernels/${DATABASE}/${DATABASE}.hpp) + set(HEADERS ${HEADERS} src/database/kernels/${DATABASE}/${DATABASE}_16.hpp) + set(HEADERS ${HEADERS} src/database/kernels/${DATABASE}/${DATABASE}_32.hpp) + set(HEADERS ${HEADERS} src/database/kernels/${DATABASE}/${DATABASE}_64.hpp) + set(HEADERS ${HEADERS} src/database/kernels/${DATABASE}/${DATABASE}_3232.hpp) + set(HEADERS ${HEADERS} src/database/kernels/${DATABASE}/${DATABASE}_6464.hpp) endforeach() # Creates and links the library diff --git a/scripts/database/database.py b/scripts/database/database.py index e398aa30..8f3ccce6 100755 --- a/scripts/database/database.py +++ b/scripts/database/database.py @@ -20,14 +20,6 @@ import database.defaults as defaults # Server storing a copy of the database DATABASE_SERVER_URL = "https://raw.githubusercontent.com/CNugteren/CLBlast-database/master/database.json" -# OpenCL vendor names and their short name -VENDOR_TRANSLATION_TABLE = { - "GenuineIntel": "Intel", - "Intel(R) Corporation": "Intel", - "Advanced Micro Devices, Inc.": "AMD", - "NVIDIA Corporation": "NVIDIA", -} - def remove_mismatched_arguments(database): """Checks for tuning results with mis-matched entries and removes them according to user preferences""" @@ -44,12 +36,14 @@ def remove_mismatched_arguments(database): for kernel_group_name, kernel_group in db.group_by(database["sections"], kernel_attributes): group_by_arguments = db.group_by(kernel_group, clblast.ARGUMENT_ATTRIBUTES) if len(group_by_arguments) != 1: - print("[database] WARNING: entries for a single kernel with multiple argument values " + str(kernel_group_name)) - print("[database] Either quit now, or remove all but one of the argument combinations below:") + print("[database] WARNING: entries for a single kernel with multiple argument values " + + str(kernel_group_name)) + print("[database] Either quit or remove all but one of the argument combinations below:") for index, (attribute_group_name, mismatching_entries) in enumerate(group_by_arguments): print("[database] %d: %s" % (index, attribute_group_name)) for attribute_group_name, mismatching_entries in group_by_arguments: - response = user_input("[database] Remove entries corresponding to %s, [y/n]? " % str(attribute_group_name)) + response = user_input("[database] Remove entries corresponding to %s, [y/n]? " % + str(attribute_group_name)) if response == "y": for entry in mismatching_entries: database["sections"].remove(entry) @@ -59,7 +53,8 @@ def remove_mismatched_arguments(database): for kernel_group_name, kernel_group in db.group_by(database["sections"], kernel_attributes): group_by_arguments = db.group_by(kernel_group, clblast.ARGUMENT_ATTRIBUTES) if len(group_by_arguments) != 1: - print("[database] ERROR: entries for a single kernel with multiple argument values " + str(kernel_group_name)) + print("[database] ERROR: entries for a single kernel with multiple argument values " + + str(kernel_group_name)) assert len(group_by_arguments) == 1 @@ -97,7 +92,8 @@ def main(argv): # Checks whether the command-line arguments are valid clblast_header = os.path.join(cl_args.clblast_root, "include", "clblast.h") # Not used but just for validation if not os.path.isfile(clblast_header): - raise RuntimeError("The path '" + cl_args.clblast_root + "' does not point to the root of the CLBlast library") + raise RuntimeError("The path '" + cl_args.clblast_root + + "' does not point to the root of the CLBlast library") if len(glob.glob(json_files)) < 1: print("[database] The path '" + cl_args.source_folder + "' does not contain any JSON files") @@ -115,11 +111,6 @@ def main(argv): sys.stdout.write("[database] Processing '" + file_json + "' ") # No newline printed imported_data = io.load_tuning_results(file_json) - # Fixes the problem that some vendors use multiple different names - for target in VENDOR_TRANSLATION_TABLE: - if imported_data["device_vendor"] == target: - imported_data["device_vendor"] = VENDOR_TRANSLATION_TABLE[target] - # Adds the new data to the database old_size = db.length(database) database = db.add_section(database, imported_data) @@ -136,7 +127,7 @@ def main(argv): # Removes database entries before continuing if cl_args.remove_device is not None: print("[database] Removing all results for device '%s'" % cl_args.remove_device) - remove_database_entries(database, {"device": cl_args.remove_device}) + remove_database_entries(database, {"clblast_device": cl_args.remove_device}) io.save_database(database, database_filename) # Retrieves the best performing results diff --git a/scripts/database/database/clblast.py b/scripts/database/database/clblast.py index 803d1d2a..428bfdda 100644 --- a/scripts/database/database/clblast.py +++ b/scripts/database/database/clblast.py @@ -7,14 +7,21 @@ import os +# Type settings (also change in database_structure.hpp) +STRING_LENGTH = 50 +PARAMETERS_LENGTH = 14 + # Constants from the C++ code VENDOR_DEFAULT = "default" DEVICE_TYPE_DEFAULT = "All" DEVICE_NAME_DEFAULT = "default" +DEVICE_NAME_DEFAULT_CONSTANT = "kDeviceNameDefault " +DEVICE_ARCHITECTURE_DEFAULT = "default" # List of attributes -DEVICE_TYPE_ATTRIBUTES = ["device_vendor", "device_type"] -DEVICE_ATTRIBUTES = ["device", "device_core_clock", "device_compute_units"] +DEVICE_TYPE_ATTRIBUTES = ["clblast_device_vendor", "clblast_device_type"] +DEVICE_ATTRIBUTES = ["clblast_device_name", "clblast_device_architecture", + "device_core_clock", "device_compute_units"] KERNEL_ATTRIBUTES = ["precision", "kernel_family"] ARGUMENT_ATTRIBUTES = ["arg_m", "arg_n", "arg_k", "arg_alpha", "arg_beta"] ATTRIBUTES = DEVICE_ATTRIBUTES + DEVICE_TYPE_ATTRIBUTES + KERNEL_ATTRIBUTES + ARGUMENT_ATTRIBUTES @@ -42,20 +49,19 @@ def get_cpp_separator(): return "// =================================================================================================" -def get_cpp_header(family): +def get_cpp_header(family, precision): """Retrieves the C++ header""" return ("\n" + get_cpp_separator() + """ -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. // -// This file populates the database with best-found tuning parameters for the '%s' kernels. +// This file populates the database with best-found tuning parameters for the '%s%s' kernels. //\n""" - % family.title() + get_cpp_separator() + \ - "\n\nnamespace clblast {\n" + "namespace database {\n" + get_cpp_separator()) + % (family.title(), precision)) + get_cpp_separator() + "\n" + + +def get_cpp_header_namespace(): + return "\nnamespace clblast {\n" + "namespace database {\n" def get_cpp_footer(): @@ -67,7 +73,7 @@ def get_cpp_precision(family, precision): """Retrieves the C++ code for the start of a new precision""" precision_string = precision_to_string(precision) camelcase_name = family.title().replace("_", "") - return("\n\nconst Database::DatabaseEntry %s%s = {\n \"%s\", Precision::k%s" + return("\nconst DatabaseEntry %s%s = {\n \"%s\", Precision::k%s" % (camelcase_name, precision_string, camelcase_name, precision_string)) @@ -79,6 +85,19 @@ def get_cpp_device_vendor(vendor, device_type): return " { // %s %ss\n kDeviceType%s, \"%s\", {\n" % (vendor, device_type, device_type_caps, vendor) +def get_cpp_family_includes(family, precisions): + result = "\n" + # result += "#include \"clblast.h\"\n" + # result += "#include \"database/database_structure.hpp\"\n" + for precision in precisions: + result += "#include \"database/kernels/%s/%s_%s.hpp\"\n" % (family, family, precision) + return result + + +def print_as_name(name): + return "Name{\"%-50s\"}" % name.strip()[:STRING_LENGTH] + + def print_cpp_database(database, output_dir): """Outputs the database as C++ code""" @@ -87,26 +106,30 @@ def print_cpp_database(database, output_dir): for family_name in kernel_families: family_database = [s for s in database["sections"] if s["kernel_family"] == family_name] - # Opens a new file for each kernel family - full_path = os.path.join(output_dir, family_name + ".hpp") - with open(full_path, 'w+') as f: - f.write(get_cpp_header(family_name)) + # Goes into a new path for each kernel family + family_path = os.path.join(output_dir, family_name) - # Loops over the different precision (e.g. 16, 32, 3232, 64, 6464) - precisions = sorted(set([s["precision"] for s in database["sections"]])) # Based on full database - for precision in precisions: - precision_database = [s for s in family_database if s["precision"] == precision] + # Loops over the different precision (e.g. 16, 32, 3232, 64, 6464) + precisions = sorted(set([s["precision"] for s in database["sections"]])) # Based on full database + for precision in precisions: + precision_database = [s for s in family_database if s["precision"] == precision] + + # Opens a new file for each precision + full_path = os.path.join(family_path, family_name + "_" + precision + ".hpp") + with open(full_path, 'w+') as f: + f.write(get_cpp_header(family_name, precision)) + f.write(get_cpp_header_namespace()) f.write(get_cpp_precision(family_name, precision)) - # In case there is nothing found at all (e.g. 16-bit): continue as if this was a precision of 32 but - # with the defaults only + # In case there is nothing found at all (e.g. 16-bit): continue as if this was a + # precision of 32 but with the defaults only if len(precision_database) == 0: print("[database] No results found for %s:%s, retrieving defaults from %s:32" % (family_name, precision, family_name)) precision_database = [s for s in family_database if s["precision"] == "32" - and s["device_vendor"] == VENDOR_DEFAULT - and s["device_type"] == DEVICE_TYPE_DEFAULT - and s["device"] == DEVICE_NAME_DEFAULT] + and s["clblast_device_vendor"] == VENDOR_DEFAULT + and s["clblast_device_type"] == DEVICE_TYPE_DEFAULT + and s["clblast_device_name"] == DEVICE_NAME_DEFAULT] # Discovers the parameters for this kernel parameter_names = [] @@ -118,51 +141,72 @@ def print_cpp_database(database, output_dir): f.write(", {" + parameter_names_as_string + "}, {\n") # Loops over device vendors (e.g. AMD) - device_vendors = sorted(set([s["device_vendor"] for s in precision_database])) + device_vendors = sorted(set([s["clblast_device_vendor"] for s in precision_database])) for vendor in device_vendors: - vendor_database = [s for s in precision_database if s["device_vendor"] == vendor] + vendor_database = [s for s in precision_database if s["clblast_device_vendor"] == vendor] # Loops over device types (e.g. GPU) - device_types = sorted(set([s["device_type"] for s in vendor_database])) + device_types = sorted(set([s["clblast_device_type"] for s in vendor_database])) for device_type in device_types: - type_database = [s for s in vendor_database if s["device_type"] == device_type] + type_database = [s for s in vendor_database if s["clblast_device_type"] == device_type] f.write(get_cpp_device_vendor(vendor, device_type)) - # Loops over every device of this vendor-type combination - devices = sorted(set([s["device"] for s in type_database])) - for device_name in devices: - device_database = [s for s in type_database if s["device"] == device_name] - device_name_quoted = "\"%s\"," % device_name.strip() - device_name_cpp = " { %-50s { " % device_name_quoted - f.write(device_name_cpp) - - # Collects the parameters for this entry - parameters = [] - parmameter_index = 0 - kernels = sorted(set([s["kernel"] for s in device_database])) - for kernel in kernels: - kernel_database = [s for s in device_database if s["kernel"] == kernel] - - assert len(kernel_database) == 1 - results = kernel_database[0]["results"] - - assert len(results) == 1 - new_parameters = results[0]["parameters"] - for parameter_name in sorted(new_parameters): - assert parameter_name == parameter_names[parmameter_index] - parameter_value = new_parameters[parameter_name] - parameters.append(str(parameter_value)) - parmameter_index += 1 - - # Prints the entry - f.write(", ".join(parameters)) - f.write(" } },\n") + # Loops over every architecture of this vendor-type combination + architectures = sorted(set([s["clblast_device_architecture"] for s in type_database])) + for architecture in architectures: + architecture_database = [s for s in type_database if s["clblast_device_architecture"] == architecture] + architecture_string = DEVICE_ARCHITECTURE_DEFAULT if architecture == "" else architecture + f.write(" { \"%s\", {\n" % architecture_string) + + # Loops over every device of this vendor-type combination + devices = sorted(set([s["clblast_device_name"] for s in architecture_database])) + for device_name in devices: + device_database = [s for s in architecture_database if s["clblast_device_name"] == device_name] + device_name_as_string = print_as_name(device_name) if device_name != DEVICE_NAME_DEFAULT else DEVICE_NAME_DEFAULT_CONSTANT + device_name_cpp = " { %s, Params{ " % device_name_as_string + f.write(device_name_cpp) + + # Collects the parameters for this entry + parameters = [] + parameter_index = 0 + kernels = sorted(set([s["kernel"] for s in device_database])) + for kernel in kernels: + kernel_database = [s for s in device_database if s["kernel"] == kernel] + + assert len(kernel_database) == 1 + results = kernel_database[0]["results"] + + assert len(results) == 1 + new_parameters = results[0]["parameters"] + for parameter_name in sorted(new_parameters): + assert parameter_name == parameter_names[parameter_index] + parameter_value = new_parameters[parameter_name] + parameters.append(str(parameter_value)) + parameter_index += 1 + + # Appends zero's to complete the list + assert parameter_index <= PARAMETERS_LENGTH + for append_index in range(parameter_index, PARAMETERS_LENGTH): + parameters.append("0") + + # Prints the entry + f.write(", ".join(parameters)) + f.write(" } },\n") + + # Prints the architecture footer + f.write(" } },\n") # Prints the vendor-type combination footer f.write(" }\n },\n") # Prints the precision footer - f.write(" }\n};\n\n" + get_cpp_separator()) + f.write(" }\n};\n") + + # Prints the file footer + f.write(get_cpp_footer()) - # Prints the file footer - f.write(get_cpp_footer()) + # Creates the combined family includes header + full_path = os.path.join(family_path, family_name + ".hpp") + with open(full_path, 'w+') as f: + f.write(get_cpp_header(family_name, "")) + f.write(get_cpp_family_includes(family_name, precisions)) diff --git a/scripts/database/database/defaults.py b/scripts/database/database/defaults.py index 444c66df..6042c374 100644 --- a/scripts/database/database/defaults.py +++ b/scripts/database/database/defaults.py @@ -12,14 +12,6 @@ import clblast import bests -def set_default_device(section): - """Sets the device name and parameters to some default values""" - section["device"] = clblast.DEVICE_NAME_DEFAULT - section["device_compute_units"] = 0 - section["device_core_clock"] = 0 - return section - - def set_identifiers(database, group_by_attributes, identifier_name): """Sets a group-identifier based on a given set of attributes. Modifies the database but also returns a list of unique identifiers.""" @@ -55,32 +47,56 @@ def get_groups_by_identifier(database, group_identifiers, identifier_name): return groups -def calculate_defaults(database, verbose): - """Sets defaults for devices of the same type/vendor""" +def add_default_sections(database, grouping, verbose, values_dict, condition, enable_warning): + default_sections = [] - # Groups the database by kernel, vendor and device type (e.g. AMD GPU) - group_identifiers = set_identifiers(database, clblast.GROUP_ATTRIBUTES, "group_identifier") + # Groups the database by a certain grouping + group_identifiers = set_identifiers(database, grouping, "group_identifier") groups = get_groups_by_identifier(database, group_identifiers, "group_identifier") # Loops over all groups - default_sections = {"sections": []} for group, group_identifier in groups: # Computes the best parameters - default_parameters = get_common_best_parameters(group, group_identifier, verbose) + default_parameters = get_common_best_parameters(group, group_identifier, verbose, enable_warning) + assert len(group) > 0 + if condition(group[0]): # Stores all the section's data - assert len(group) > 0 - default_section = {} - for attribute in group[0].keys(): - if attribute != "results" and attribute != "group_identifier": - default_section[attribute] = group[0][attribute] - default_section = set_default_device(default_section) - default_section["results"] = [{"time": 0.0, "parameters": default_parameters}] - default_sections["sections"].append(default_section) + default_section = {} + for attribute in group[0].keys(): + if attribute != "results" and attribute != "group_identifier": + default_section[attribute] = group[0][attribute] + default_section["clblast_device_compute_units"] = 0 + default_section["clblast_device_core_clock"] = 0 + for key in values_dict.keys(): + default_section[key] = values_dict[key] + default_section["results"] = [{"time": 0.0, "parameters": default_parameters}] + default_sections.append(default_section) + return default_sections - # Groups the database by kernel, vendor and device type (e.g. AMD GPU) - but not by arguments! This is to check for - # mis-matched arguments. + +def calculate_defaults(database, verbose): + """Sets defaults for devices of the same type/vendor""" + default_sections = {"sections": []} + + # Groups the database by kernel, vendor and device architecture (e.g. AMD GPU "Fiji") + architecture_group = clblast.GROUP_ATTRIBUTES + ["clblast_device_architecture"] + architecture_defaults = add_default_sections(database, architecture_group, verbose, + {"clblast_device_name": clblast.DEVICE_NAME_DEFAULT}, + lambda entry: True, enable_warning=False) + + # Groups the database by kernel, vendor and device type (e.g. AMD GPU) + device_defaults = add_default_sections(database, clblast.GROUP_ATTRIBUTES, verbose, + {"clblast_device_name": clblast.DEVICE_NAME_DEFAULT, + "clblast_device_architecture": clblast.DEVICE_ARCHITECTURE_DEFAULT}, + lambda entry: entry["clblast_device_architecture"] != "", + enable_warning=True) + default_sections["sections"].extend(device_defaults) + + # Groups the database by kernel, vendor and device type (e.g. AMD GPU) - but not by arguments! + # This is to check for mis-matched arguments in the database. Note: this is not a check on the + # architecture defaults attributes = clblast.DEVICE_TYPE_ATTRIBUTES + clblast.KERNEL_ATTRIBUTES + ["kernel"] group_identifiers = set_identifiers(default_sections, attributes, "temp_identifier") groups = get_groups_by_identifier(default_sections, group_identifiers, "temp_identifier") @@ -90,6 +106,9 @@ def calculate_defaults(database, verbose): assert len(group) == 1 remove_identifiers(default_sections, "temp_identifier") + # Adds the architecture defaults only after running the above check + default_sections["sections"].extend(architecture_defaults) + # Groups the database by kernel only group_identifiers = set_identifiers(database, clblast.KERNEL_ATTRIBUTES + ["kernel"], "group_identifier") groups = get_groups_by_identifier(database, group_identifiers, "group_identifier") @@ -98,7 +117,8 @@ def calculate_defaults(database, verbose): for group, group_identifier in groups: # Computes the best parameters - default_parameters = get_common_best_parameters(group, group_identifier, verbose) + default_parameters = get_common_best_parameters(group, group_identifier, verbose, + enable_warning=True) # Stores all the section's data assert len(group) > 0 @@ -106,9 +126,12 @@ def calculate_defaults(database, verbose): for attribute in group[0].keys(): if attribute != "results" and attribute != "group_identifier": default_section[attribute] = group[0][attribute] - default_section = set_default_device(default_section) - default_section["device_vendor"] = clblast.VENDOR_DEFAULT - default_section["device_type"] = clblast.DEVICE_TYPE_DEFAULT + default_section["clblast_device_name"] = clblast.DEVICE_NAME_DEFAULT + default_section["clblast_device_architecture"] = clblast.DEVICE_ARCHITECTURE_DEFAULT + default_section["clblast_device_vendor"] = clblast.VENDOR_DEFAULT + default_section["clblast_device_type"] = clblast.DEVICE_TYPE_DEFAULT + default_section["clblast_device_compute_units"] = 0 + default_section["clblast_device_core_clock"] = 0 default_section["results"] = [{"time": 0.0, "parameters": default_parameters}] default_sections["sections"].append(default_section) @@ -143,7 +166,7 @@ def get_parameter_names(section): return [result["parameters"] for result in section["results"]] -def get_common_best_parameters(group, group_identifier, verbose): +def get_common_best_parameters(group, group_identifier, verbose, enable_warning): """Sets defaults based on the best values of entries supported by all devices. This might cause a problem in case not every device was tuned with the same parameters. In that case it falls back to the above method to retrieve the smallest best execution time""" @@ -179,7 +202,8 @@ def get_common_best_parameters(group, group_identifier, verbose): # Fall back method in case there are no shared entries at all across devices if num_devices_common == 1: - print("[database] Warning: No common kernels for: " + str(group_identifier) + " at all") + if enable_warning: + print("[database] Warning: No common kernels for: " + str(group_identifier) + " at all") smallest_best_parameters = get_smallest_best_parameters(group) if verbose: print("[database] " + str(group_identifier)) diff --git a/scripts/database/database/io.py b/scripts/database/database/io.py index 58f9103b..722658d8 100644 --- a/scripts/database/database/io.py +++ b/scripts/database/database/io.py @@ -26,14 +26,53 @@ def load_database(filename): """Loads a database from disk""" print("[database] Loading database from '" + filename + "'") with open(filename) as f: - return json.load(f) + database = json.load(f) + return decompress_database(database) def save_database(database, filename): """Saves a database to disk""" + compressed_db = compress_database(database) print("[database] Saving database to '" + filename + "'") with open(filename, "w") as f: - json.dump(database, f, sort_keys=True, indent=4) + json.dump(compressed_db, f, sort_keys=True, indent=2, separators=(',', ': ')) + + +def compress_database(database): + """Moves certain common fields up in the hierarchy, transforms dicts into lists""" + new_sections = [] + for section in database["sections"]: + new_section = {} + for field in section: + if field == "results": + parameter_names = [result["parameters"].keys() for result in section["results"]] + assert len(list(set([" ".join(p) for p in parameter_names]))) == 1 + new_section["parameter_names"] = parameter_names[0] # they are all be the same + new_results = [[",".join([str(v) for v in result["parameters"].values()]), + result["time"]] + for result in section["results"]] + new_section[field] = new_results + else: + new_section[field] = section[field] + new_sections.append(new_section) + return {"sections": new_sections} + + +def decompress_database(database): + """Undo the above compression""" + for section in database["sections"]: + new_results = [] + for result in section["results"]: + parameters = {} + for name, value in zip(section["parameter_names"], result[0].split(",")): + parameters[name] = value + new_result = { + "parameters": parameters, + "time": result[1] + } + new_results.append(new_result) + section["results"] = new_results + return database def load_tuning_results(filename): diff --git a/src/clblast.cpp b/src/clblast.cpp index 9089b17c..d44649bb 100644 --- a/src/clblast.cpp +++ b/src/clblast.cpp @@ -2512,18 +2512,21 @@ StatusCode OverrideParameters(const cl_device_id device, const std::string &kern } // Retrieves the names and values separately - auto parameter_values = std::vector<size_t>(); + auto parameter_values = database::Params{0}; auto parameter_names = std::vector<std::string>(); + auto i = size_t{0}; for (const auto ¶meter : parameters) { - parameter_values.push_back(parameter.second); + parameter_values[i] = parameter.second; parameter_names.push_back(parameter.first); + ++i; } // Creates a small custom database based on the provided parameters - const auto database_device = Database::DatabaseDevice{"default", parameter_values}; - const auto database_vendor = Database::DatabaseVendor{database::kDeviceTypeAll, "default", {database_device}}; - const auto database_entry = Database::DatabaseEntry{kernel_name, precision, parameter_names, {database_vendor}}; - const auto database_entries = std::vector<Database::DatabaseEntry>{database_entry}; + const auto database_device = database::DatabaseDevice{database::kDeviceNameDefault, parameter_values}; + const auto database_architecture = database::DatabaseArchitecture{"default", {database_device}}; + const auto database_vendor = database::DatabaseVendor{database::kDeviceTypeAll, "default", {database_architecture}}; + const auto database_entry = database::DatabaseEntry{kernel_name, precision, parameter_names, {database_vendor}}; + const auto database_entries = std::vector<database::DatabaseEntry>{database_entry}; const auto database = Database(device_cpp, kernel_name, precision, database_entries); // Removes the old database entry and stores the new one in the cache diff --git a/src/clpp11.hpp b/src/clpp11.hpp index e0b8cbe9..7c1457b0 100644 --- a/src/clpp11.hpp +++ b/src/clpp11.hpp @@ -167,6 +167,7 @@ class Platform { // Methods to retrieve platform information std::string Name() const { return GetInfoString(CL_PLATFORM_NAME); } std::string Vendor() const { return GetInfoString(CL_PLATFORM_VENDOR); } + std::string Version() const { return GetInfoString(CL_PLATFORM_VERSION); } // Returns the number of devices on this platform size_t NumDevices() const { @@ -261,6 +262,11 @@ class Device { return static_cast<unsigned long>(GetInfo<cl_ulong>(CL_DEVICE_LOCAL_MEM_SIZE)); } std::string Capabilities() const { return GetInfoString(CL_DEVICE_EXTENSIONS); } + bool HasExtension(const std::string &extension) const { + const auto extensions = Capabilities(); + return extensions.find(extension) != std::string::npos; + } + size_t CoreClock() const { return static_cast<size_t>(GetInfo<cl_uint>(CL_DEVICE_MAX_CLOCK_FREQUENCY)); } @@ -294,13 +300,36 @@ class Device { // Query for a specific type of device or brand bool IsCPU() const { return Type() == "CPU"; } bool IsGPU() const { return Type() == "GPU"; } - bool IsAMD() const { return Vendor() == "AMD" || Vendor() == "Advanced Micro Devices, Inc." || - Vendor() == "AuthenticAMD";; } - bool IsNVIDIA() const { return Vendor() == "NVIDIA" || Vendor() == "NVIDIA Corporation"; } - bool IsIntel() const { return Vendor() == "INTEL" || Vendor() == "Intel" || - Vendor() == "GenuineIntel"; } + bool IsAMD() const { return Vendor() == "AMD" || + Vendor() == "Advanced Micro Devices, Inc." || + Vendor() == "AuthenticAMD"; } + bool IsNVIDIA() const { return Vendor() == "NVIDIA" || + Vendor() == "NVIDIA Corporation"; } + bool IsIntel() const { return Vendor() == "INTEL" || + Vendor() == "Intel" || + Vendor() == "GenuineIntel" || + Vendor() == "Intel(R) Corporation"; } bool IsARM() const { return Vendor() == "ARM"; } + // Platform specific extensions + std::string AMDBoardName() const { // check for 'cl_amd_device_attribute_query' first + #ifndef CL_DEVICE_BOARD_NAME_AMD + #define CL_DEVICE_BOARD_NAME_AMD 0x4038 + #endif + return GetInfoString(CL_DEVICE_BOARD_NAME_AMD); + } + std::string NVIDIAComputeCapability() const { // check for 'cl_nv_device_attribute_query' first + #ifndef CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV + #define CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV 0x4000 + #endif + #ifndef CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV + #define CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV 0x4001 + #endif + return std::string{"SM"} + std::to_string(GetInfo<cl_uint>(CL_DEVICE_COMPUTE_CAPABILITY_MAJOR_NV)) + + std::string{"."} + std::to_string(GetInfo<cl_uint>(CL_DEVICE_COMPUTE_CAPABILITY_MINOR_NV)); + } + + // Accessor to the private data-member const cl_device_id& operator()() const { return device_; } private: diff --git a/src/database/apple_cpu_fallback.hpp b/src/database/apple_cpu_fallback.hpp index ae42749d..e1aa4661 100644 --- a/src/database/apple_cpu_fallback.hpp +++ b/src/database/apple_cpu_fallback.hpp @@ -22,47 +22,47 @@ namespace clblast { namespace database { // ================================================================================================= -const Database::DatabaseEntry XaxpyApple = { - "Xaxpy", Precision::kAny, {"VW", "WGS", "WPT"}, { { kDeviceTypeAll, "default", { { "default", { 8, 1, 4 } } } } } +const DatabaseEntry XaxpyApple = { + "Xaxpy", Precision::kAny, {"VW", "WGS", "WPT"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry XdotApple = { - "Xdot", Precision::kAny, {"WGS1", "WGS2"}, { { kDeviceTypeAll, "default", { { "default", { 1, 1 } } } } } +const DatabaseEntry XdotApple = { + "Xdot", Precision::kAny, {"WGS1", "WGS2"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry XgemvApple = { - "Xgemv", Precision::kAny, {"WGS1", "WPT1", "UNROLL1"}, { { kDeviceTypeAll, "default", { { "default", { 1, 4, 1 } } } } } +const DatabaseEntry XgemvApple = { + "Xgemv", Precision::kAny, {"WGS1", "WPT1", "UNROLL1"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 1, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry XgemvFastApple = { - "XgemvFast", Precision::kAny, {"VW2", "WGS2", "WPT2"}, { { kDeviceTypeAll, "default", { { "default", { 1, 1, 1 } } } } } +const DatabaseEntry XgemvFastApple = { + "XgemvFast", Precision::kAny, {"VW2", "WGS2", "WPT2"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry XgemvFastRotApple = { - "XgemvFastRot", Precision::kAny, {"VW3", "WGS3", "WPT3"}, { { kDeviceTypeAll, "default", { { "default", { 1, 1, 1 } } } } } +const DatabaseEntry XgemvFastRotApple = { + "XgemvFastRot", Precision::kAny, {"VW3", "WGS3", "WPT3"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry XgerApple = { - "Xger", Precision::kAny, {"WGS1", "WGS2", "WPT"}, { { kDeviceTypeAll, "default", { { "default", { 64, 1, 2 } } } } } +const DatabaseEntry XgerApple = { + "Xger", Precision::kAny, {"WGS1", "WGS2", "WPT"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 64, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry XtrsvApple = { - "Xtrsv", Precision::kAny, {"TRSV_BLOCK_SIZE"}, { { kDeviceTypeAll, "default", { { "default", { 32 } } } } } +const DatabaseEntry XtrsvApple = { + "Xtrsv", Precision::kAny, {"TRSV_BLOCK_SIZE"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry XgemmApple = { - "Xgemm", Precision::kAny, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { { kDeviceTypeAll, "default", { { "default", { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1 } } } } } +const DatabaseEntry XgemmApple = { + "Xgemm", Precision::kAny, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1 } } } } } } } }; -const Database::DatabaseEntry XgemmDirectApple = { - "XgemmDirect", Precision::kAny, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { { kDeviceTypeAll, "default", { { "default", { 1, 1, 1, 1, 1, 0, 0, 1, 1, 1 } } } } } +const DatabaseEntry XgemmDirectApple = { + "XgemmDirect", Precision::kAny, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry CopyApple = { - "Copy", Precision::kAny, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { { kDeviceTypeAll, "default", { { "default", { 1, 1, 1, 1 } } } } } +const DatabaseEntry CopyApple = { + "Copy", Precision::kAny, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry PadApple = { - "Pad", Precision::kAny, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { { kDeviceTypeAll, "default", { { "default", { 1, 1, 1, 1 } } } } } +const DatabaseEntry PadApple = { + "Pad", Precision::kAny, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry TransposeApple = { - "Transpose", Precision::kAny, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { { kDeviceTypeAll, "default", { { "default", { 1, 0, 0, 1 } } } } } +const DatabaseEntry TransposeApple = { + "Transpose", Precision::kAny, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry PadtransposeApple = { - "Padtranspose", Precision::kAny, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { { kDeviceTypeAll, "default", { { "default", { 0, 1, 1 } } } } } +const DatabaseEntry PadtransposeApple = { + "Padtranspose", Precision::kAny, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; -const Database::DatabaseEntry InvertApple = { - "Invert", Precision::kAny, {"INTERNAL_BLOCK_SIZE"}, { { kDeviceTypeAll, "default", { { "default", { 16 } } } } } +const DatabaseEntry InvertApple = { + "Invert", Precision::kAny, {"INTERNAL_BLOCK_SIZE"}, { { kDeviceTypeAll, "default", { { "default", { { kDeviceNameDefault, Params{ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } } } } } }; // ================================================================================================= diff --git a/src/database/database.cpp b/src/database/database.cpp index 79c2ea03..4187ffe3 100644 --- a/src/database/database.cpp +++ b/src/database/database.cpp @@ -16,19 +16,21 @@ #include "utilities/utilities.hpp" #include "database/database.hpp" -#include "database/kernels/xaxpy.hpp" -#include "database/kernels/xdot.hpp" -#include "database/kernels/xgemv.hpp" -#include "database/kernels/xgemv_fast.hpp" -#include "database/kernels/xgemv_fast_rot.hpp" -#include "database/kernels/xger.hpp" + +#include "database/kernels/xaxpy/xaxpy.hpp" +#include "database/kernels/xdot/xdot.hpp" +#include "database/kernels/xgemv/xgemv.hpp" +#include "database/kernels/xgemv_fast/xgemv_fast.hpp" +#include "database/kernels/xgemv_fast_rot/xgemv_fast_rot.hpp" +#include "database/kernels/xger/xger.hpp" +#include "database/kernels/xgemm/xgemm.hpp" +#include "database/kernels/xgemm_direct/xgemm_direct.hpp" +#include "database/kernels/copy/copy.hpp" +#include "database/kernels/pad/pad.hpp" +#include "database/kernels/transpose/transpose.hpp" +#include "database/kernels/padtranspose/padtranspose.hpp" + #include "database/kernels/xtrsv.hpp" -#include "database/kernels/xgemm.hpp" -#include "database/kernels/xgemm_direct.hpp" -#include "database/kernels/copy.hpp" -#include "database/kernels/pad.hpp" -#include "database/kernels/transpose.hpp" -#include "database/kernels/padtranspose.hpp" #include "database/kernels/invert.hpp" #include "database/apple_cpu_fallback.hpp" #include "database/kernel_selection.hpp" @@ -37,7 +39,7 @@ namespace clblast { // ================================================================================================= // Initializes the databases -const std::vector<Database::DatabaseEntry> Database::database = std::vector<Database::DatabaseEntry>{ +const std::vector<database::DatabaseEntry> Database::database = std::vector<database::DatabaseEntry>{ database::XaxpyHalf, database::XaxpySingle, database::XaxpyDouble, database::XaxpyComplexSingle, database::XaxpyComplexDouble, database::XdotHalf, database::XdotSingle, database::XdotDouble, database::XdotComplexSingle, database::XdotComplexDouble, database::XgemvHalf, database::XgemvSingle, database::XgemvDouble, database::XgemvComplexSingle, database::XgemvComplexDouble, @@ -54,7 +56,7 @@ const std::vector<Database::DatabaseEntry> Database::database = std::vector<Data database::InvertHalf, database::InvertSingle, database::InvertDouble, database::InvertComplexSingle, database::InvertComplexDouble, database::KernelSelectionHalf, database::KernelSelectionSingle, database::KernelSelectionDouble, database::KernelSelectionComplexSingle, database::KernelSelectionComplexDouble }; -const std::vector<Database::DatabaseEntry> Database::apple_cpu_fallback = std::vector<Database::DatabaseEntry>{ +const std::vector<database::DatabaseEntry> Database::apple_cpu_fallback = std::vector<database::DatabaseEntry>{ database::XaxpyApple, database::XdotApple, database::XgemvApple, database::XgemvFastApple, database::XgemvFastRotApple, database::XgerApple, database::XtrsvApple, database::XgemmApple, database::XgemmDirectApple, @@ -65,41 +67,31 @@ const std::vector<Database::DatabaseEntry> Database::apple_cpu_fallback = std::v // The default values const std::string Database::kDeviceVendorAll = "default"; -// Alternative names for some OpenCL vendors -const std::unordered_map<std::string, std::string> Database::kVendorNames{ - { "Intel(R) Corporation", "Intel" }, - { "GenuineIntel", "Intel" }, - { "Advanced Micro Devices, Inc.", "AMD" }, - { "NVIDIA Corporation", "NVIDIA" }, -}; - // ================================================================================================= // Constructor, computing device properties and populating the parameter-vector from the database. // This takes an optional overlay database in case of custom tuning or custom kernels. Database::Database(const Device &device, const std::string &kernel_name, - const Precision precision, const std::vector<DatabaseEntry> &overlay): - parameters_(std::make_shared<Parameters>()) { - - // Finds information of the current device - auto device_type = device.Type(); - auto device_vendor = device.Vendor(); - auto device_name = device.Name(); - - // Set the short vendor name - for (auto &combination : kVendorNames) { - if (device_vendor == combination.first) { - device_vendor = combination.second; - } - } + const Precision precision, const std::vector<database::DatabaseEntry> &overlay): + parameters_(std::make_shared<database::Parameters>()) { + + // Finds device information + const auto device_type = GetDeviceType(device); + const auto device_vendor = GetDeviceVendor(device); + const auto device_architecture = GetDeviceArchitecture(device); + const auto device_name = GetDeviceName(device); + + // Prints the obtained information in verbose mode + log_debug("Device type '" + device_type + "'; vendor '" + device_vendor + "'"); + log_debug("Device name '" + device_name + "'; architecture '" + device_architecture + "'"); // Sets the databases to search through - auto databases = std::list<std::vector<DatabaseEntry>>{overlay, database}; + auto databases = std::list<std::vector<database::DatabaseEntry>>{overlay, database}; // Special case: modifies the database if the device is a CPU with Apple OpenCL #if defined(__APPLE__) || defined(__MACOSX) if (device.Type() == "CPU") { - auto extensions = device.Capabilities(); + const auto extensions = device.Capabilities(); const auto is_apple = (extensions.find("cl_APPLE_SetMemObjectDestructor") == std::string::npos) ? false : true; if (is_apple) { databases.push_front(apple_cpu_fallback); @@ -108,9 +100,10 @@ Database::Database(const Device &device, const std::string &kernel_name, #endif // Searches potentially multiple databases - auto search_result = Parameters(); + auto search_result = database::Parameters(); for (auto &db: databases) { - search_result = Search(kernel_name, device_type, device_vendor, device_name, precision, db); + search_result = Search(kernel_name, device_vendor, device_type, + device_name, device_architecture, precision, db); if (search_result.size() != 0) { parameters_->insert(search_result.begin(), search_result.end()); break; @@ -143,12 +136,11 @@ std::vector<std::string> Database::GetParameterNames() const { // ================================================================================================= // Searches a particular database for the right kernel and precision -Database::Parameters Database::Search(const std::string &this_kernel, - const std::string &this_type, - const std::string &this_vendor, - const std::string &this_device, +database::Parameters Database::Search(const std::string &this_kernel, + const std::string &this_vendor, const std::string &this_type, + const std::string &this_device, const std::string &this_architecture, const Precision this_precision, - const std::vector<DatabaseEntry> &this_database) const { + const std::vector<database::DatabaseEntry> &this_database) const { // Selects the right kernel for (auto &db: this_database) { @@ -156,51 +148,77 @@ Database::Parameters Database::Search(const std::string &this_kernel, (db.precision == this_precision || db.precision == Precision::kAny)) { // Searches for the right vendor and device type, or selects the default if unavailable - const auto parameters = SearchVendorAndType(this_vendor, this_type, this_device, + const auto parameters = SearchVendorAndType(this_vendor, this_type, this_device, this_architecture, db.vendors, db.parameter_names); if (parameters.size() != 0) { return parameters; } - return SearchVendorAndType(kDeviceVendorAll, database::kDeviceTypeAll, this_device, + return SearchVendorAndType(kDeviceVendorAll, database::kDeviceTypeAll, this_device, this_architecture, db.vendors, db.parameter_names); } } // If we reached this point, the entry was not found in this database - return Parameters(); + return database::Parameters(); } -Database::Parameters Database::SearchVendorAndType(const std::string &target_vendor, - const std::string &target_type, - const std::string &this_device, - const std::vector<DatabaseVendor> &vendors, +database::Parameters Database::SearchVendorAndType(const std::string &target_vendor, const std::string &target_type, + const std::string &this_device, const std::string &this_architecture, + const std::vector<database::DatabaseVendor> &vendors, const std::vector<std::string> ¶meter_names) const { for (auto &vendor: vendors) { if ((vendor.name == target_vendor) && (vendor.type == target_type)) { + log_debug("Found architectures of vendor '" + target_vendor + "' and type '" + target_type + "'"); - // Searches the device; if unavailable, returns the vendor's default parameters - const auto parameters = SearchDevice(this_device, vendor.devices, parameter_names); + // Searches the architecture; if unavailable returns the vendor's default parameters + auto parameters = SearchArchitecture(this_architecture, this_device, vendor.architectures, parameter_names); if (parameters.size() != 0) { return parameters; } - return SearchDevice("default", vendor.devices, parameter_names); + return SearchArchitecture("default", this_device, vendor.architectures, parameter_names); } } - return Parameters(); + return database::Parameters(); } -Database::Parameters Database::SearchDevice(const std::string &target_device, - const std::vector<DatabaseDevice> &devices, +database::Parameters Database::SearchArchitecture(const std::string &target_architecture, + const std::string &this_device, + const std::vector<database::DatabaseArchitecture> &architectures, + const std::vector<std::string> ¶meter_names) const { + for (auto &architecture: architectures) { + if (architecture.name == target_architecture) { + log_debug("Found devices of architecture type '" + target_architecture + "'"); + + // Searches the device; if unavailable returns the architecture's default parameters + auto parameters = SearchDevice(this_device, architecture.devices, parameter_names); + if (parameters.size() != 0) { return parameters; } + return SearchDevice("default", architecture.devices, parameter_names); + } + } + return database::Parameters(); +} + +database::Parameters Database::SearchDevice(const std::string &target_device, + const std::vector<database::DatabaseDevice> &devices, const std::vector<std::string> ¶meter_names) const { for (auto &device: devices) { - if (device.name == target_device) { + const auto device_name = CharArrayToString(device.name); + if (device_name == target_device) { + log_debug("Found parameters for device type '" + target_device + "'"); // Sets the parameters accordingly - auto parameters = Parameters(); - if (parameter_names.size() != device.parameters.size()) { return Parameters(); } // ERROR + auto parameters = database::Parameters(); + if (parameter_names.size() > device.parameters.size()) { return database::Parameters(); } // ERROR for (auto i = size_t{0}; i < parameter_names.size(); ++i) { - parameters[parameter_names[i]] = device.parameters[i]; + parameters[parameter_names[i]] = static_cast<size_t>(device.parameters[i]); } return parameters; } } - return Parameters(); + return database::Parameters(); +} + +// Helper to convert from database format to proper types +std::string Database::CharArrayToString(const database::Name char_array) const { + auto result = std::string(char_array.data()); + result.erase(result.find_last_not_of(" \t\n\r\f\v") + 1); + return result; } // ================================================================================================= diff --git a/src/database/database.hpp b/src/database/database.hpp index b652164c..4cb0bf6a 100644 --- a/src/database/database.hpp +++ b/src/database/database.hpp @@ -22,64 +22,29 @@ #include <unordered_map> #include "utilities/utilities.hpp" +#include "database/database_structure.hpp" namespace clblast { // ================================================================================================= -// A special namespace to hold all the global constant variables (including the database entries) -namespace database { - - // The OpenCL device types - const std::string kDeviceTypeCPU = "CPU"; - const std::string kDeviceTypeGPU = "GPU"; - const std::string kDeviceTypeAccelerator = "accelerator"; - const std::string kDeviceTypeAll = "default"; - -} // namespace database - -// ================================================================================================= - // See comment at top of file for a description of the class class Database { public: - // Type alias for the database parameters - using Parameters = std::unordered_map<std::string, size_t>; - - // Structures for content inside the database - struct DatabaseDevice { - std::string name; - std::vector<size_t> parameters; // parameter values - }; - struct DatabaseVendor { - std::string type; - std::string name; - std::vector<DatabaseDevice> devices; - }; - struct DatabaseEntry { - std::string kernel; - Precision precision; - std::vector<std::string> parameter_names; - std::vector<DatabaseVendor> vendors; - }; - // The OpenCL device vendors static const std::string kDeviceVendorAll; - // Alternative names for some OpenCL vendors - static const std::unordered_map<std::string, std::string> kVendorNames; - // The database consists of separate database entries, stored together in a vector - static const std::vector<DatabaseEntry> database; + static const std::vector<database::DatabaseEntry> database; // Database for a special case: Apple CPUs support limited number of threads - static const std::vector<DatabaseEntry> apple_cpu_fallback; + static const std::vector<database::DatabaseEntry> apple_cpu_fallback; Database() = default; // The constructor with a user-provided database overlay (potentially an empty vector) explicit Database(const Device &device, const std::string &kernel_name, - const Precision precision, const std::vector<DatabaseEntry> &overlay); + const Precision precision, const std::vector<database::DatabaseEntry> &overlay); // Accessor of values by key size_t operator[](const std::string &key) const { return parameters_->find(key)->second; } @@ -93,21 +58,29 @@ class Database { private: // Search method functions, returning a set of parameters (possibly empty) - Parameters Search(const std::string &this_kernel, const std::string &this_type, - const std::string &this_vendor, const std::string &this_device, - const Precision this_precision, - const std::vector<DatabaseEntry> &db) const; - Parameters SearchDevice(const std::string &target_device, - const std::vector<DatabaseDevice> &devices, - const std::vector<std::string> ¶meter_names) const; - Parameters SearchVendorAndType(const std::string &target_vendor, - const std::string &target_type, - const std::string &this_device, - const std::vector<DatabaseVendor> &vendors, - const std::vector<std::string> ¶meter_names) const; + database::Parameters Search(const std::string &this_kernel, + const std::string &this_vendor, const std::string &this_type, + const std::string &this_device, const std::string &this_architecture, + const Precision this_precision, + const std::vector<database::DatabaseEntry> &db) const; + database::Parameters SearchDevice(const std::string &target_device, + const std::vector<database::DatabaseDevice> &devices, + const std::vector<std::string> ¶meter_names) const; + database::Parameters SearchArchitecture(const std::string &target_architecture, + const std::string &this_device, + const std::vector<database::DatabaseArchitecture> &architectures, + const std::vector<std::string> ¶meter_names) const; + database::Parameters SearchVendorAndType(const std::string &target_vendor, + const std::string &target_type, + const std::string &this_device, const std::string &this_architecture, + const std::vector<database::DatabaseVendor> &vendors, + const std::vector<std::string> ¶meter_names) const; + + // Helper to convert from database format to proper types + std::string CharArrayToString(const database::Name char_array) const; // Found parameters suitable for this device/kernel - std::shared_ptr<Parameters> parameters_; + std::shared_ptr<database::Parameters> parameters_; }; // ================================================================================================= diff --git a/src/database/database_structure.hpp b/src/database/database_structure.hpp new file mode 100644 index 00000000..d592d7ac --- /dev/null +++ b/src/database/database_structure.hpp @@ -0,0 +1,67 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This +// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- +// width of 100 characters per line. +// +// Author(s): +// Cedric Nugteren <www.cedricnugteren.nl> +// +// This file describes the database storage structures. +// +// ================================================================================================= + +#ifndef CLBLAST_DATABASE_DATABASE_STRUCTURE_H_ +#define CLBLAST_DATABASE_DATABASE_STRUCTURE_H_ + +#include <string> +#include <array> +#include <vector> +#include <unordered_map> + +namespace clblast { +// A special namespace to hold all the global constant variables (including the database entries) +namespace database { + +// ================================================================================================= + +// Type alias for the database storage (arrays for fast compilation/efficiency) +using Name = std::array<char, 51>; // name as stored in database (50 chars + string terminator) +using Params = std::array<size_t, 14>; // parameters as stored in database + +// Type alias after extracting from the database (map for improved code readability) +using Parameters = std::unordered_map<std::string, size_t>; // parameters after reading from DB + +// The OpenCL device types +const std::string kDeviceTypeCPU = "CPU"; +const std::string kDeviceTypeGPU = "GPU"; +const std::string kDeviceTypeAccelerator = "accelerator"; +const std::string kDeviceTypeAll = "default"; +const Name kDeviceNameDefault = {"default "}; + +struct DatabaseDevice { + const Name name; + const Params parameters; // parameter values +}; +struct DatabaseArchitecture { + const std::string name; + const std::vector<DatabaseDevice> devices; +}; +struct DatabaseVendor { + const std::string type; + const std::string name; + const std::vector<DatabaseArchitecture> architectures; +}; +struct DatabaseEntry { + const std::string kernel; + const Precision precision; + const std::vector<std::string> parameter_names; + const std::vector<DatabaseVendor> vendors; +}; + +// ================================================================================================= +} // namespace database +} // namespace clblast + +// CLBLAST_DATABASE_DATABASE_STRUCTURE_H_ +#endif diff --git a/src/database/kernel_selection.hpp b/src/database/kernel_selection.hpp index 82c7d59d..6d74b9f9 100644 --- a/src/database/kernel_selection.hpp +++ b/src/database/kernel_selection.hpp @@ -18,21 +18,21 @@ namespace clblast { namespace database { // ================================================================================================= -const Database::DatabaseEntry KernelSelectionHalf = { +const DatabaseEntry KernelSelectionHalf = { "KernelSelection", Precision::kHalf, {"XGEMM_MIN_INDIRECT_SIZE"}, { { // Intel GPUs kDeviceTypeGPU, "Intel", { - { "default", { 1*1*1 } }, + { "default", { { kDeviceNameDefault, Params{ 1*1*1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // NVIDIA GPUs kDeviceTypeGPU, "NVIDIA", { - { "default", { 1280*1280*1280 } }, + { "default", { { kDeviceNameDefault, Params{ 1280*1280*1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // Default kDeviceTypeAll, "default", { - { "default", { 512*512*512 } }, + { "default", { { kDeviceNameDefault, Params{ 512*512*512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -40,26 +40,26 @@ const Database::DatabaseEntry KernelSelectionHalf = { // ================================================================================================= -const Database::DatabaseEntry KernelSelectionSingle = { +const DatabaseEntry KernelSelectionSingle = { "KernelSelection", Precision::kSingle, {"XGEMM_MIN_INDIRECT_SIZE"}, { { // Intel GPUs kDeviceTypeGPU, "Intel", { - { "default", { 1*1*1 } }, + { "default", { { kDeviceNameDefault, Params{ 1*1*1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // NVIDIA GPUs kDeviceTypeGPU, "NVIDIA", { - { "default", { 1280*1280*1280 } }, + { "default", { { kDeviceNameDefault, Params{ 1280*1280*1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { kDeviceTypeGPU, "ARM", { - { "default", { 128*128*128} }, + { "default", { { kDeviceNameDefault, Params{ 128*128*128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // Default kDeviceTypeAll, "default", { - { "default", { 512*512*512 } }, + { "default", { { kDeviceNameDefault, Params{ 512*512*512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -67,21 +67,21 @@ const Database::DatabaseEntry KernelSelectionSingle = { // ================================================================================================= -const Database::DatabaseEntry KernelSelectionComplexSingle = { +const DatabaseEntry KernelSelectionComplexSingle = { "KernelSelection", Precision::kComplexSingle, {"XGEMM_MIN_INDIRECT_SIZE"}, { { // Intel GPUs kDeviceTypeGPU, "Intel", { - { "default", { 1*1*1 } }, + { "default", { { kDeviceNameDefault, Params{ 1*1*1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // NVIDIA GPUs kDeviceTypeGPU, "NVIDIA", { - { "default", { 1280*1280*1280 } }, + { "default", { { kDeviceNameDefault, Params{ 1280*1280*1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // Default kDeviceTypeAll, "default", { - { "default", { 512*512*512 } }, + { "default", { { kDeviceNameDefault, Params{ 512*512*512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -89,21 +89,21 @@ const Database::DatabaseEntry KernelSelectionComplexSingle = { // ================================================================================================= -const Database::DatabaseEntry KernelSelectionDouble = { +const DatabaseEntry KernelSelectionDouble = { "KernelSelection", Precision::kDouble, {"XGEMM_MIN_INDIRECT_SIZE"}, { { // Intel GPUs kDeviceTypeGPU, "Intel", { - { "default", { 1*1*1 } }, + { "default", { { kDeviceNameDefault, Params{ 1*1*1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // NVIDIA GPUs kDeviceTypeGPU, "NVIDIA", { - { "default", { 1280*1280*1280 } }, + { "default", { { kDeviceNameDefault, Params{ 1280*1280*1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // Default kDeviceTypeAll, "default", { - { "default", { 512*512*512 } }, + { "default", { { kDeviceNameDefault, Params{ 512*512*512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -111,21 +111,21 @@ const Database::DatabaseEntry KernelSelectionDouble = { // ================================================================================================= -const Database::DatabaseEntry KernelSelectionComplexDouble = { +const DatabaseEntry KernelSelectionComplexDouble = { "KernelSelection", Precision::kComplexDouble, {"XGEMM_MIN_INDIRECT_SIZE"}, { { // Intel GPUs kDeviceTypeGPU, "Intel", { - { "default", { 1*1*1 } }, + { "default", { { kDeviceNameDefault, Params{ 1*1*1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // NVIDIA GPUs kDeviceTypeGPU, "NVIDIA", { - { "default", { 1280*1280*1280 } }, + { "default", { { kDeviceNameDefault, Params{ 1280*1280*1280, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, { // Default kDeviceTypeAll, "default", { - { "default", { 512*512*512 } }, + { "default", { { kDeviceNameDefault, Params{ 512*512*512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } diff --git a/src/database/kernels/copy.hpp b/src/database/kernels/copy.hpp deleted file mode 100644 index e5defb32..00000000 --- a/src/database/kernels/copy.hpp +++ /dev/null @@ -1,354 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Copy' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry CopyHalf = { - "Copy", Precision::kHalf, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 16, 8, 4, 4 } }, - { "default", { 16, 8, 4, 4 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 8, 16, 8, 4 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 8, 32, 4, 8 } }, - { "default", { 8, 32, 4, 8 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 32, 8, 8, 1 } }, - { "default", { 32, 8, 8, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 16, 8, 4, 4 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry CopySingle = { - "Copy", Precision::kSingle, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 8, 4, 1 } }, - { "ATI Radeon HD 6750M", { 16, 8, 2, 1 } }, - { "Ellesmere", { 8, 8, 4, 8 } }, - { "Fiji", { 16, 16, 1, 2 } }, - { "Hawaii", { 32, 8, 2, 2 } }, - { "Oland", { 32, 8, 4, 2 } }, - { "Pitcairn", { 8, 16, 4, 1 } }, - { "Tahiti", { 32, 8, 2, 2 } }, - { "Tonga", { 32, 8, 4, 4 } }, - { "Turks", { 8, 8, 4, 2 } }, - { "default", { 8, 16, 4, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 32, 8, 2, 4 } }, - { "default", { 32, 8, 2, 4 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 32, 16, 8, 1 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 16, 8, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 8, 4, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 32, 16, 8, 1 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 16, 8, 2 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 32, 8, 8, 1 } }, - { "default", { 32, 16, 8, 2 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 8, 8, 2, 1 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 32, 16, 4, 1 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 32, 16, 4, 1 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 16, 8, 2, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 16, 8, 4, 8 } }, - { "Iris", { 16, 8, 1, 2 } }, - { "Iris Pro", { 32, 8, 4, 4 } }, - { "default", { 8, 8, 2, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 8, 8, 1 } }, - { "default", { 32, 8, 8, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 8, 4, 1 } }, - { "GeForce GT 650M", { 16, 16, 4, 2 } }, - { "GeForce GTX 1070", { 8, 16, 4, 1 } }, - { "GeForce GTX 1080", { 8, 32, 4, 1 } }, - { "GeForce GTX 480", { 8, 8, 4, 1 } }, - { "GeForce GTX 670", { 16, 32, 4, 1 } }, - { "GeForce GTX 680", { 32, 16, 4, 1 } }, - { "GeForce GTX 750", { 32, 8, 2, 2 } }, - { "GeForce GTX 750 Ti", { 16, 32, 2, 2 } }, - { "GeForce GTX 980", { 32, 16, 1, 1 } }, - { "GeForce GTX TITAN", { 32, 8, 2, 4 } }, - { "GeForce GTX TITAN Black", { 8, 32, 4, 8 } }, - { "GeForce GTX TITAN X", { 32, 8, 1, 2 } }, - { "TITAN X (Pascal)", { 8, 32, 4, 1 } }, - { "Tesla K20m", { 8, 8, 4, 4 } }, - { "Tesla K40m", { 8, 8, 4, 2 } }, - { "default", { 8, 32, 4, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 32, 8, 8, 1 } }, - { "default", { 32, 8, 8, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 8, 4, 4 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry CopyComplexSingle = { - "Copy", Precision::kComplexSingle, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 8, 1, 1 } }, - { "ATI Radeon HD 6750M", { 8, 8, 1, 1 } }, - { "Ellesmere", { 16, 16, 1, 4 } }, - { "Fiji", { 16, 8, 1, 2 } }, - { "Hawaii", { 32, 8, 1, 2 } }, - { "Oland", { 8, 16, 1, 1 } }, - { "Pitcairn", { 8, 8, 1, 2 } }, - { "Tahiti", { 8, 8, 2, 2 } }, - { "Tonga", { 8, 32, 1, 2 } }, - { "Turks", { 32, 8, 4, 1 } }, - { "default", { 16, 8, 1, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 32, 16, 4, 2 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 16, 16, 8, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 8, 4, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 32, 8, 2, 2 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 32, 4, 1 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 16, 8, 8, 1 } }, - { "default", { 32, 8, 8, 1 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 16, 8, 2, 1 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 16, 16, 2, 2 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 8, 8, 1, 1 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 8, 32, 2, 4 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 8, 8, 2, 1 } }, - { "Iris", { 16, 8, 1, 2 } }, - { "Iris Pro", { 32, 16, 1, 4 } }, - { "default", { 16, 8, 1, 2 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 8, 4, 1 } }, - { "default", { 32, 8, 4, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 8, 1, 1 } }, - { "GeForce GTX 1070", { 16, 8, 1, 1 } }, - { "GeForce GTX 1080", { 32, 8, 1, 2 } }, - { "GeForce GTX 480", { 16, 16, 1, 1 } }, - { "GeForce GTX 670", { 16, 8, 1, 1 } }, - { "GeForce GTX 750", { 16, 8, 1, 2 } }, - { "GeForce GTX 750 Ti", { 16, 32, 1, 1 } }, - { "GeForce GTX 980", { 8, 8, 1, 1 } }, - { "GeForce GTX TITAN Black", { 16, 8, 1, 1 } }, - { "GeForce GTX TITAN X", { 16, 8, 1, 1 } }, - { "TITAN X (Pascal)", { 8, 16, 2, 1 } }, - { "Tesla K20m", { 8, 8, 1, 4 } }, - { "Tesla K40m", { 16, 8, 1, 1 } }, - { "default", { 32, 8, 1, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 32, 8, 1, 1 } }, - { "default", { 32, 8, 1, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 16, 8, 1, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry CopyDouble = { - "Copy", Precision::kDouble, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 8, 1, 1 } }, - { "Ellesmere", { 32, 8, 1, 4 } }, - { "Fiji", { 16, 8, 1, 2 } }, - { "Hawaii", { 32, 8, 1, 2 } }, - { "Oland", { 32, 8, 2, 8 } }, - { "Pitcairn", { 32, 8, 1, 1 } }, - { "Tahiti", { 8, 32, 2, 1 } }, - { "Tonga", { 8, 32, 2, 4 } }, - { "default", { 16, 8, 2, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 16, 8, 8, 2 } }, - { "default", { 16, 8, 8, 2 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 16, 32, 8, 1 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 16, 8, 8, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 16, 8, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 16, 32, 2, 1 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 16, 32, 8, 1 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 16, 16, 8, 1 } }, - { "default", { 16, 8, 8, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 8, 8, 8, 1 } }, - { "default", { 8, 8, 8, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 32, 16, 2, 1 } }, - { "GeForce GTX 1070", { 8, 8, 4, 1 } }, - { "GeForce GTX 1080", { 8, 8, 4, 1 } }, - { "GeForce GTX 480", { 8, 8, 2, 1 } }, - { "GeForce GTX 670", { 8, 8, 2, 1 } }, - { "GeForce GTX 680", { 16, 32, 2, 1 } }, - { "GeForce GTX 750", { 8, 16, 2, 1 } }, - { "GeForce GTX 750 Ti", { 16, 8, 2, 1 } }, - { "GeForce GTX 980", { 32, 8, 2, 1 } }, - { "GeForce GTX TITAN", { 16, 32, 2, 2 } }, - { "GeForce GTX TITAN Black", { 16, 8, 2, 8 } }, - { "GeForce GTX TITAN X", { 32, 16, 1, 1 } }, - { "TITAN X (Pascal)", { 8, 8, 2, 2 } }, - { "Tesla K20m", { 8, 8, 2, 1 } }, - { "Tesla K40m", { 8, 8, 2, 2 } }, - { "default", { 32, 32, 2, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 16, 8, 2, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry CopyComplexDouble = { - "Copy", Precision::kComplexDouble, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 8, 16, 1, 1 } }, - { "Ellesmere", { 8, 32, 1, 2 } }, - { "Fiji", { 8, 16, 1, 1 } }, - { "Hawaii", { 32, 8, 2, 8 } }, - { "Oland", { 8, 16, 1, 1 } }, - { "Pitcairn", { 16, 8, 1, 1 } }, - { "Tahiti", { 8, 16, 1, 1 } }, - { "Tonga", { 16, 8, 2, 1 } }, - { "default", { 8, 16, 1, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 32, 8, 1, 2 } }, - { "default", { 32, 8, 1, 2 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 8, 8, 8, 1 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 8, 8, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 16, 2, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 32, 32, 8, 1 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 16, 8, 4 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 8, 8, 8, 1 } }, - { "default", { 16, 8, 8, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 8, 8, 1 } }, - { "default", { 32, 8, 8, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 8, 8, 1, 1 } }, - { "GeForce GTX 1070", { 8, 32, 1, 4 } }, - { "GeForce GTX 1080", { 8, 8, 1, 1 } }, - { "GeForce GTX 480", { 16, 8, 1, 1 } }, - { "GeForce GTX 670", { 16, 8, 1, 1 } }, - { "GeForce GTX 680", { 8, 8, 1, 1 } }, - { "GeForce GTX 750", { 32, 8, 1, 1 } }, - { "GeForce GTX 750 Ti", { 16, 16, 1, 1 } }, - { "GeForce GTX 980", { 8, 8, 1, 1 } }, - { "GeForce GTX TITAN", { 16, 16, 1, 1 } }, - { "GeForce GTX TITAN Black", { 8, 8, 1, 2 } }, - { "GeForce GTX TITAN X", { 16, 8, 1, 1 } }, - { "TITAN X (Pascal)", { 8, 8, 1, 2 } }, - { "Tesla K20m", { 8, 8, 1, 2 } }, - { "Tesla K40m", { 8, 8, 1, 1 } }, - { "default", { 8, 8, 1, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 16, 8, 1, 1 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/copy/copy.hpp b/src/database/kernels/copy/copy.hpp new file mode 100644 index 00000000..8c6e7e03 --- /dev/null +++ b/src/database/kernels/copy/copy.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Copy' kernels. +// +// ================================================================================================= + +#include "database/kernels/copy/copy_16.hpp" +#include "database/kernels/copy/copy_32.hpp" +#include "database/kernels/copy/copy_3232.hpp" +#include "database/kernels/copy/copy_64.hpp" +#include "database/kernels/copy/copy_6464.hpp" diff --git a/src/database/kernels/copy/copy_16.hpp b/src/database/kernels/copy/copy_16.hpp new file mode 100644 index 00000000..faf6d2bc --- /dev/null +++ b/src/database/kernels/copy/copy_16.hpp @@ -0,0 +1,54 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Copy16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry CopyHalf = { + "Copy", Precision::kHalf, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 16, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 8, 16, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 8, 32, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/copy/copy_32.hpp b/src/database/kernels/copy/copy_32.hpp new file mode 100644 index 00000000..28b56cae --- /dev/null +++ b/src/database/kernels/copy/copy_32.hpp @@ -0,0 +1,162 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Copy32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry CopySingle = { + "Copy", Precision::kSingle, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 8, 8, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 16, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 8, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 32, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 8, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 32, 8, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 32, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 16, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 32, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 16, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 16, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 8, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 32, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 32, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 16, 8, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 32, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 8, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GT 650M "}, Params{ 16, 16, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 32, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 32, 8, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 8, 32, 4, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 8, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 8, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 32, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 32, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 8, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/copy/copy_3232.hpp b/src/database/kernels/copy/copy_3232.hpp new file mode 100644 index 00000000..3c742734 --- /dev/null +++ b/src/database/kernels/copy/copy_3232.hpp @@ -0,0 +1,151 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Copy3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry CopyComplexSingle = { + "Copy", Precision::kComplexSingle, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 16, 16, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 8, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 8, 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 32, 16, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 16, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 16, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 16, 16, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 8, 32, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 8, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 32, 16, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 8, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/copy/copy_64.hpp b/src/database/kernels/copy/copy_64.hpp new file mode 100644 index 00000000..07261310 --- /dev/null +++ b/src/database/kernels/copy/copy_64.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Copy64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry CopyDouble = { + "Copy", Precision::kDouble, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 32, 8, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 8, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 8, 32, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 16, 8, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 16, 32, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 16, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 16, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 16, 32, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 16, 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 8, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 8, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 32, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 8, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 16, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 32, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 8, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 8, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 8, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 8, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 32, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 8, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/copy/copy_6464.hpp b/src/database/kernels/copy/copy_6464.hpp new file mode 100644 index 00000000..7b52eb08 --- /dev/null +++ b/src/database/kernels/copy/copy_6464.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Copy6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry CopyComplexDouble = { + "Copy", Precision::kComplexDouble, {"COPY_DIMX", "COPY_DIMY", "COPY_VW", "COPY_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 8, 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 8, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 8, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 32, 32, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 16, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 8, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 32, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/invert.hpp b/src/database/kernels/invert.hpp index 193d1ab4..b7464382 100644 --- a/src/database/kernels/invert.hpp +++ b/src/database/kernels/invert.hpp @@ -15,11 +15,11 @@ namespace clblast { namespace database { // ================================================================================================= -const Database::DatabaseEntry InvertHalf = { +const DatabaseEntry InvertHalf = { "Invert", Precision::kHalf, {"INTERNAL_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 16 } }, + { "default", { { kDeviceNameDefault, Params{ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -27,11 +27,11 @@ const Database::DatabaseEntry InvertHalf = { // ================================================================================================= -const Database::DatabaseEntry InvertSingle = { +const DatabaseEntry InvertSingle = { "Invert", Precision::kSingle, {"INTERNAL_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 16 } }, + { "default", { { kDeviceNameDefault, Params{ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -39,11 +39,11 @@ const Database::DatabaseEntry InvertSingle = { // ================================================================================================= -const Database::DatabaseEntry InvertComplexSingle = { +const DatabaseEntry InvertComplexSingle = { "Invert", Precision::kComplexSingle, {"INTERNAL_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 16 } }, + { "default", { { kDeviceNameDefault, Params{ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -51,11 +51,11 @@ const Database::DatabaseEntry InvertComplexSingle = { // ================================================================================================= -const Database::DatabaseEntry InvertDouble = { +const DatabaseEntry InvertDouble = { "Invert", Precision::kDouble, {"INTERNAL_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 16 } }, + { "default", { { kDeviceNameDefault, Params{ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -63,11 +63,11 @@ const Database::DatabaseEntry InvertDouble = { // ================================================================================================= -const Database::DatabaseEntry InvertComplexDouble = { +const DatabaseEntry InvertComplexDouble = { "Invert", Precision::kComplexDouble, {"INTERNAL_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 16 } }, + { "default", { { kDeviceNameDefault, Params{ 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } diff --git a/src/database/kernels/pad.hpp b/src/database/kernels/pad.hpp deleted file mode 100644 index b6ebde43..00000000 --- a/src/database/kernels/pad.hpp +++ /dev/null @@ -1,362 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Pad' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry PadHalf = { - "Pad", Precision::kHalf, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 16, 8, 1, 2 } }, - { "default", { 16, 8, 1, 2 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 8, 8, 4, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 8, 32, 2, 2 } }, - { "default", { 8, 8, 2, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 16, 8, 4, 2 } }, - { "default", { 16, 8, 4, 2 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 8, 8, 4, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry PadSingle = { - "Pad", Precision::kSingle, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 8, 1, 1 } }, - { "ATI Radeon HD 6750M", { 8, 16, 2, 1 } }, - { "Ellesmere", { 32, 8, 2, 2 } }, - { "Fiji", { 16, 16, 1, 2 } }, - { "Hawaii", { 32, 8, 1, 4 } }, - { "Oland", { 8, 8, 1, 2 } }, - { "Pitcairn", { 32, 8, 1, 2 } }, - { "Tahiti", { 32, 8, 1, 2 } }, - { "Tonga", { 16, 16, 2, 2 } }, - { "Turks", { 32, 8, 2, 1 } }, - { "default", { 8, 16, 1, 2 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 32, 8, 1, 4 } }, - { "default", { 32, 8, 1, 4 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 32, 32, 4, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 16, 4, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 8, 2, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 16, 32, 4, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 16, 4, 4 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 32, 8, 4, 1 } }, - { "default", { 32, 8, 4, 2 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 32, 8, 2, 4 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 32, 8, 2, 4 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 16, 8, 1, 2 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 16, 8, 4, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 32, 8, 4, 2 } }, - { "Iris", { 32, 16, 2, 1 } }, - { "Iris Pro", { 16, 8, 2, 1 } }, - { "default", { 32, 8, 4, 2 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 16, 2, 1 } }, - { "default", { 32, 16, 2, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 32, 8, 2, 1 } }, - { "GeForce GT 650M", { 32, 16, 2, 2 } }, - { "GeForce GTX 1070", { 16, 8, 1, 1 } }, - { "GeForce GTX 1080", { 16, 8, 1, 1 } }, - { "GeForce GTX 480", { 32, 8, 1, 4 } }, - { "GeForce GTX 670", { 32, 8, 2, 2 } }, - { "GeForce GTX 680", { 16, 8, 4, 1 } }, - { "GeForce GTX 750", { 32, 16, 4, 2 } }, - { "GeForce GTX 750 Ti", { 16, 8, 4, 1 } }, - { "GeForce GTX 980", { 16, 8, 1, 1 } }, - { "GeForce GTX TITAN", { 32, 8, 2, 1 } }, - { "GeForce GTX TITAN Black", { 32, 8, 1, 2 } }, - { "GeForce GTX TITAN X", { 16, 16, 1, 1 } }, - { "TITAN X (Pascal)", { 16, 8, 1, 2 } }, - { "Tesla K20m", { 32, 8, 2, 1 } }, - { "Tesla K40m", { 32, 8, 1, 1 } }, - { "default", { 32, 8, 4, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 32, 8, 2, 1 } }, - { "default", { 32, 8, 2, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 8, 2, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry PadComplexSingle = { - "Pad", Precision::kComplexSingle, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 8, 1, 1 } }, - { "ATI Radeon HD 6750M", { 16, 8, 2, 1 } }, - { "Ellesmere", { 16, 16, 2, 4 } }, - { "Fiji", { 16, 8, 1, 2 } }, - { "Hawaii", { 32, 8, 1, 2 } }, - { "Oland", { 8, 32, 1, 1 } }, - { "Pitcairn", { 8, 8, 1, 2 } }, - { "Tahiti", { 16, 16, 1, 1 } }, - { "Tonga", { 16, 8, 1, 2 } }, - { "Turks", { 16, 8, 4, 4 } }, - { "default", { 16, 8, 1, 2 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 32, 8, 1, 4 } }, - { "default", { 32, 8, 1, 4 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 32, 8, 4, 2 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 8, 2, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 8, 1, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 32, 32, 4, 1 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 8, 2, 4 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 32, 16, 4, 1 } }, - { "default", { 32, 8, 4, 2 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 8, 8, 1, 2 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 8, 8, 1, 1 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 8, 8, 1, 1 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 32, 8, 1, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 32, 8, 1, 1 } }, - { "Iris", { 32, 16, 2, 4 } }, - { "Iris Pro", { 32, 8, 2, 1 } }, - { "default", { 32, 8, 1, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 8, 1, 1 } }, - { "default", { 32, 8, 1, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 16, 1, 1 } }, - { "GeForce GTX 1070", { 8, 32, 1, 1 } }, - { "GeForce GTX 1080", { 32, 8, 1, 1 } }, - { "GeForce GTX 480", { 16, 8, 2, 1 } }, - { "GeForce GTX 670", { 16, 8, 1, 2 } }, - { "GeForce GTX 680", { 16, 32, 1, 2 } }, - { "GeForce GTX 750", { 32, 8, 2, 1 } }, - { "GeForce GTX 750 Ti", { 16, 8, 1, 1 } }, - { "GeForce GTX 980", { 16, 16, 1, 1 } }, - { "GeForce GTX TITAN", { 16, 8, 2, 1 } }, - { "GeForce GTX TITAN Black", { 16, 8, 1, 2 } }, - { "GeForce GTX TITAN X", { 16, 8, 1, 1 } }, - { "TITAN X (Pascal)", { 32, 32, 1, 2 } }, - { "Tesla K20m", { 32, 8, 1, 2 } }, - { "Tesla K40m", { 16, 8, 1, 1 } }, - { "default", { 32, 8, 1, 2 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 32, 8, 4, 1 } }, - { "default", { 32, 8, 4, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 8, 1, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry PadDouble = { - "Pad", Precision::kDouble, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 8, 1, 1 } }, - { "Ellesmere", { 8, 32, 2, 1 } }, - { "Fiji", { 8, 16, 1, 2 } }, - { "Hawaii", { 32, 8, 1, 2 } }, - { "Oland", { 8, 32, 1, 1 } }, - { "Pitcairn", { 8, 8, 1, 2 } }, - { "Tahiti", { 32, 8, 1, 1 } }, - { "Tonga", { 32, 8, 4, 1 } }, - { "default", { 16, 16, 1, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 32, 8, 4, 2 } }, - { "default", { 32, 8, 4, 2 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 32, 8, 4, 2 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 8, 4, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 16, 2, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 32, 32, 4, 1 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 32, 4, 1 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 32, 8, 2, 1 } }, - { "default", { 32, 16, 4, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 8, 1, 1 } }, - { "default", { 32, 8, 1, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 32, 8, 1, 1 } }, - { "GeForce GTX 1070", { 8, 8, 1, 1 } }, - { "GeForce GTX 1080", { 32, 32, 2, 1 } }, - { "GeForce GTX 480", { 16, 8, 1, 1 } }, - { "GeForce GTX 670", { 16, 16, 2, 1 } }, - { "GeForce GTX 680", { 32, 32, 1, 2 } }, - { "GeForce GTX 750", { 32, 16, 1, 1 } }, - { "GeForce GTX 750 Ti", { 8, 16, 1, 1 } }, - { "GeForce GTX 980", { 8, 16, 1, 1 } }, - { "GeForce GTX TITAN", { 32, 8, 1, 1 } }, - { "GeForce GTX TITAN Black", { 16, 8, 1, 1 } }, - { "GeForce GTX TITAN X", { 16, 8, 1, 1 } }, - { "TITAN X (Pascal)", { 8, 32, 4, 1 } }, - { "Tesla K20m", { 32, 8, 1, 1 } }, - { "Tesla K40m", { 16, 8, 1, 2 } }, - { "default", { 32, 8, 1, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 8, 1, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry PadComplexDouble = { - "Pad", Precision::kComplexDouble, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 16, 8, 1, 1 } }, - { "Ellesmere", { 8, 16, 1, 2 } }, - { "Fiji", { 32, 8, 2, 1 } }, - { "Hawaii", { 32, 8, 1, 1 } }, - { "Oland", { 8, 16, 2, 1 } }, - { "Pitcairn", { 16, 8, 1, 1 } }, - { "Tahiti", { 8, 16, 1, 1 } }, - { "Tonga", { 8, 16, 1, 1 } }, - { "default", { 8, 16, 1, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 16, 8, 4, 1 } }, - { "default", { 16, 8, 4, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 16, 16, 4, 1 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 8, 2, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 8, 2, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 16, 32, 4, 1 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 32, 2, 2 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 32, 8, 2, 1 } }, - { "default", { 32, 8, 2, 2 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 8, 4, 1 } }, - { "default", { 32, 8, 4, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 8, 8, 1, 1 } }, - { "GeForce GTX 1070", { 8, 8, 2, 2 } }, - { "GeForce GTX 1080", { 8, 8, 1, 1 } }, - { "GeForce GTX 480", { 16, 8, 1, 1 } }, - { "GeForce GTX 670", { 32, 8, 1, 1 } }, - { "GeForce GTX 680", { 8, 8, 1, 1 } }, - { "GeForce GTX 750", { 8, 8, 1, 1 } }, - { "GeForce GTX 750 Ti", { 16, 32, 1, 1 } }, - { "GeForce GTX 980", { 16, 16, 1, 1 } }, - { "GeForce GTX TITAN", { 8, 32, 1, 2 } }, - { "GeForce GTX TITAN Black", { 16, 8, 1, 4 } }, - { "GeForce GTX TITAN X", { 16, 8, 1, 1 } }, - { "TITAN X (Pascal)", { 8, 16, 1, 1 } }, - { "Tesla K20m", { 8, 8, 1, 2 } }, - { "Tesla K40m", { 8, 8, 1, 1 } }, - { "default", { 16, 8, 1, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 8, 1, 1 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/pad/pad.hpp b/src/database/kernels/pad/pad.hpp new file mode 100644 index 00000000..bc91c09f --- /dev/null +++ b/src/database/kernels/pad/pad.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Pad' kernels. +// +// ================================================================================================= + +#include "database/kernels/pad/pad_16.hpp" +#include "database/kernels/pad/pad_32.hpp" +#include "database/kernels/pad/pad_3232.hpp" +#include "database/kernels/pad/pad_64.hpp" +#include "database/kernels/pad/pad_6464.hpp" diff --git a/src/database/kernels/pad/pad_16.hpp b/src/database/kernels/pad/pad_16.hpp new file mode 100644 index 00000000..89684314 --- /dev/null +++ b/src/database/kernels/pad/pad_16.hpp @@ -0,0 +1,54 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Pad16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadHalf = { + "Pad", Precision::kHalf, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 8, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 8, 32, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 16, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 8, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/pad/pad_32.hpp b/src/database/kernels/pad/pad_32.hpp new file mode 100644 index 00000000..b7ba635f --- /dev/null +++ b/src/database/kernels/pad/pad_32.hpp @@ -0,0 +1,162 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Pad32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadSingle = { + "Pad", Precision::kSingle, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 16, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 16, 16, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 8, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 32, 32, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 8, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 16, 32, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 16, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 32, 8, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 32, 8, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 16, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 32, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GT 650M "}, Params{ 32, 16, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 16, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 32, 16, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/pad/pad_3232.hpp b/src/database/kernels/pad/pad_3232.hpp new file mode 100644 index 00000000..1cf80b5f --- /dev/null +++ b/src/database/kernels/pad/pad_3232.hpp @@ -0,0 +1,161 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Pad3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadComplexSingle = { + "Pad", Precision::kComplexSingle, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 16, 16, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 8, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 16, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 32, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 8, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 32, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 32, 16, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 16, 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/pad/pad_64.hpp b/src/database/kernels/pad/pad_64.hpp new file mode 100644 index 00000000..76bcdcf7 --- /dev/null +++ b/src/database/kernels/pad/pad_64.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Pad64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadDouble = { + "Pad", Precision::kDouble, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 8, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 8, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 8, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 32, 8, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 16, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 32, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 32, 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 16, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 32, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/pad/pad_6464.hpp b/src/database/kernels/pad/pad_6464.hpp new file mode 100644 index 00000000..4246495c --- /dev/null +++ b/src/database/kernels/pad/pad_6464.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Pad6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadComplexDouble = { + "Pad", Precision::kComplexDouble, {"PAD_DIMX", "PAD_DIMY", "PAD_WPTX", "PAD_WPTY"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 8, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 8, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 16, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 16, 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 16, 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 32, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 32, 8, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 8, 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 8, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 8, 8, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 32, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 16, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 8, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 8, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 8, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/padtranspose.hpp b/src/database/kernels/padtranspose.hpp deleted file mode 100644 index bbda5c65..00000000 --- a/src/database/kernels/padtranspose.hpp +++ /dev/null @@ -1,361 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Padtranspose' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry PadtransposeHalf = { - "Padtranspose", Precision::kHalf, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 0, 16, 4 } }, - { "default", { 0, 16, 4 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 0, 8, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 1, 8, 2 } }, - { "default", { 0, 8, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 0, 8, 8 } }, - { "default", { 0, 8, 8 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 0, 8, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry PadtransposeSingle = { - "Padtranspose", Precision::kSingle, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 0, 16, 4 } }, - { "ATI Radeon HD 6750M", { 1, 16, 1 } }, - { "Ellesmere", { 1, 8, 4 } }, - { "Fiji", { 0, 16, 2 } }, - { "Hawaii", { 1, 16, 4 } }, - { "Oland", { 0, 16, 4 } }, - { "Pitcairn", { 0, 16, 4 } }, - { "Tahiti", { 0, 16, 4 } }, - { "Tonga", { 0, 16, 2 } }, - { "Turks", { 1, 16, 1 } }, - { "default", { 0, 16, 4 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 0, 8, 2 } }, - { "default", { 0, 8, 2 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 0, 8, 8 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 0, 16, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 0, 32, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 0, 8, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 0, 8, 8 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 0, 32, 1 } }, - { "default", { 0, 8, 8 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 1, 16, 2 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 0, 16, 4 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 1, 16, 2 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 0, 16, 4 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 1, 16, 2 } }, - { "Iris", { 1, 16, 2 } }, - { "Iris Pro", { 1, 16, 2 } }, - { "default", { 1, 16, 2 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 0, 16, 2 } }, - { "default", { 0, 16, 2 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 32, 2 } }, - { "GeForce GTX 1070", { 0, 16, 1 } }, - { "GeForce GTX 1080", { 1, 16, 2 } }, - { "GeForce GTX 480", { 1, 16, 2 } }, - { "GeForce GTX 670", { 1, 32, 2 } }, - { "GeForce GTX 680", { 1, 16, 2 } }, - { "GeForce GTX 750", { 1, 32, 2 } }, - { "GeForce GTX 750 Ti", { 1, 32, 2 } }, - { "GeForce GTX 980", { 0, 16, 1 } }, - { "GeForce GTX TITAN", { 1, 16, 2 } }, - { "GeForce GTX TITAN Black", { 1, 32, 2 } }, - { "GeForce GTX TITAN X", { 1, 32, 1 } }, - { "TITAN X (Pascal)", { 1, 16, 2 } }, - { "Tesla K20m", { 1, 16, 2 } }, - { "Tesla K40m", { 1, 32, 2 } }, - { "default", { 1, 32, 2 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 0, 8, 2 } }, - { "default", { 0, 8, 2 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 16, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry PadtransposeComplexSingle = { - "Padtranspose", Precision::kComplexSingle, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 0, 16, 4 } }, - { "ATI Radeon HD 6750M", { 1, 16, 1 } }, - { "Ellesmere", { 0, 8, 4 } }, - { "Fiji", { 1, 16, 2 } }, - { "Hawaii", { 0, 16, 2 } }, - { "Oland", { 0, 8, 4 } }, - { "Pitcairn", { 0, 8, 4 } }, - { "Tahiti", { 0, 16, 2 } }, - { "Tonga", { 0, 16, 2 } }, - { "Turks", { 0, 16, 4 } }, - { "default", { 0, 8, 4 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 1, 16, 2 } }, - { "default", { 1, 16, 2 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 0, 8, 8 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 1, 8, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 0, 8, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 0, 8, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 0, 8, 8 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 0, 8, 4 } }, - { "default", { 0, 8, 8 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 1, 16, 2 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 0, 16, 2 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 1, 16, 2 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 0, 16, 2 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 0, 16, 4 } }, - { "Iris", { 0, 16, 2 } }, - { "Iris Pro", { 1, 16, 2 } }, - { "default", { 1, 16, 2 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 1, 16, 1 } }, - { "default", { 1, 16, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 16, 1 } }, - { "GeForce GTX 1070", { 1, 16, 1 } }, - { "GeForce GTX 1080", { 0, 8, 1 } }, - { "GeForce GTX 480", { 1, 16, 1 } }, - { "GeForce GTX 670", { 1, 16, 1 } }, - { "GeForce GTX 680", { 1, 16, 1 } }, - { "GeForce GTX 750", { 1, 16, 2 } }, - { "GeForce GTX 750 Ti", { 1, 16, 1 } }, - { "GeForce GTX 980", { 0, 16, 1 } }, - { "GeForce GTX TITAN", { 1, 16, 1 } }, - { "GeForce GTX TITAN Black", { 0, 16, 1 } }, - { "GeForce GTX TITAN X", { 1, 32, 1 } }, - { "TITAN X (Pascal)", { 1, 8, 1 } }, - { "Tesla K20m", { 0, 16, 1 } }, - { "Tesla K40m", { 1, 16, 1 } }, - { "default", { 1, 16, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 0, 8, 4 } }, - { "default", { 0, 8, 4 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 8, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry PadtransposeDouble = { - "Padtranspose", Precision::kDouble, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 0, 16, 4 } }, - { "Ellesmere", { 0, 16, 4 } }, - { "Fiji", { 0, 16, 2 } }, - { "Hawaii", { 0, 16, 2 } }, - { "Oland", { 0, 16, 4 } }, - { "Pitcairn", { 0, 8, 4 } }, - { "Tahiti", { 1, 16, 2 } }, - { "Tonga", { 0, 8, 2 } }, - { "default", { 0, 16, 4 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 0, 16, 2 } }, - { "default", { 0, 16, 2 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 0, 8, 8 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 1, 8, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 0, 64, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 0, 8, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 0, 8, 8 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 1, 32, 1 } }, - { "default", { 1, 8, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 0, 16, 1 } }, - { "default", { 0, 16, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 16, 1 } }, - { "GeForce GTX 1070", { 1, 16, 1 } }, - { "GeForce GTX 1080", { 0, 8, 1 } }, - { "GeForce GTX 480", { 1, 16, 1 } }, - { "GeForce GTX 670", { 1, 16, 1 } }, - { "GeForce GTX 680", { 1, 16, 1 } }, - { "GeForce GTX 750", { 1, 16, 2 } }, - { "GeForce GTX 750 Ti", { 1, 32, 2 } }, - { "GeForce GTX 980", { 1, 32, 1 } }, - { "GeForce GTX TITAN", { 0, 16, 1 } }, - { "GeForce GTX TITAN Black", { 0, 16, 1 } }, - { "GeForce GTX TITAN X", { 1, 32, 1 } }, - { "TITAN X (Pascal)", { 0, 8, 1 } }, - { "Tesla K20m", { 0, 16, 1 } }, - { "Tesla K40m", { 1, 16, 1 } }, - { "default", { 1, 16, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 16, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry PadtransposeComplexDouble = { - "Padtranspose", Precision::kComplexDouble, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 0, 8, 4 } }, - { "Ellesmere", { 0, 8, 4 } }, - { "Fiji", { 0, 8, 2 } }, - { "Hawaii", { 0, 8, 4 } }, - { "Oland", { 0, 8, 4 } }, - { "Pitcairn", { 0, 8, 4 } }, - { "Tahiti", { 0, 8, 2 } }, - { "Tonga", { 0, 8, 2 } }, - { "default", { 0, 8, 4 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 0, 8, 1 } }, - { "default", { 0, 8, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 0, 8, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 1, 8, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 1, 16, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 1, 8, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 0, 8, 4 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 1, 8, 4 } }, - { "default", { 0, 8, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 0, 16, 1 } }, - { "default", { 0, 16, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 16, 1 } }, - { "GeForce GTX 1070", { 1, 16, 1 } }, - { "GeForce GTX 1080", { 1, 8, 1 } }, - { "GeForce GTX 480", { 1, 16, 1 } }, - { "GeForce GTX 670", { 1, 16, 1 } }, - { "GeForce GTX 680", { 1, 32, 1 } }, - { "GeForce GTX 750", { 1, 16, 1 } }, - { "GeForce GTX 750 Ti", { 1, 8, 2 } }, - { "GeForce GTX 980", { 0, 16, 1 } }, - { "GeForce GTX TITAN", { 1, 16, 1 } }, - { "GeForce GTX TITAN Black", { 0, 16, 1 } }, - { "GeForce GTX TITAN X", { 1, 32, 1 } }, - { "TITAN X (Pascal)", { 1, 8, 1 } }, - { "Tesla K20m", { 1, 16, 1 } }, - { "Tesla K40m", { 1, 16, 1 } }, - { "default", { 1, 16, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 0, 8, 2 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/padtranspose/padtranspose.hpp b/src/database/kernels/padtranspose/padtranspose.hpp new file mode 100644 index 00000000..c395653a --- /dev/null +++ b/src/database/kernels/padtranspose/padtranspose.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Padtranspose' kernels. +// +// ================================================================================================= + +#include "database/kernels/padtranspose/padtranspose_16.hpp" +#include "database/kernels/padtranspose/padtranspose_32.hpp" +#include "database/kernels/padtranspose/padtranspose_3232.hpp" +#include "database/kernels/padtranspose/padtranspose_64.hpp" +#include "database/kernels/padtranspose/padtranspose_6464.hpp" diff --git a/src/database/kernels/padtranspose/padtranspose_16.hpp b/src/database/kernels/padtranspose/padtranspose_16.hpp new file mode 100644 index 00000000..ea09a062 --- /dev/null +++ b/src/database/kernels/padtranspose/padtranspose_16.hpp @@ -0,0 +1,54 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Padtranspose16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadtransposeHalf = { + "Padtranspose", Precision::kHalf, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 1, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/padtranspose/padtranspose_32.hpp b/src/database/kernels/padtranspose/padtranspose_32.hpp new file mode 100644 index 00000000..6e607768 --- /dev/null +++ b/src/database/kernels/padtranspose/padtranspose_32.hpp @@ -0,0 +1,161 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Padtranspose32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadtransposeSingle = { + "Padtranspose", Precision::kSingle, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 1, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 1, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 0, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 0, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/padtranspose/padtranspose_3232.hpp b/src/database/kernels/padtranspose/padtranspose_3232.hpp new file mode 100644 index 00000000..b959dfaf --- /dev/null +++ b/src/database/kernels/padtranspose/padtranspose_3232.hpp @@ -0,0 +1,161 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Padtranspose3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadtransposeComplexSingle = { + "Padtranspose", Precision::kComplexSingle, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 1, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 1, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/padtranspose/padtranspose_64.hpp b/src/database/kernels/padtranspose/padtranspose_64.hpp new file mode 100644 index 00000000..3539d474 --- /dev/null +++ b/src/database/kernels/padtranspose/padtranspose_64.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Padtranspose64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadtransposeDouble = { + "Padtranspose", Precision::kDouble, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 0, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 1, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 0, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 0, 8, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/padtranspose/padtranspose_6464.hpp b/src/database/kernels/padtranspose/padtranspose_6464.hpp new file mode 100644 index 00000000..7fe6dca3 --- /dev/null +++ b/src/database/kernels/padtranspose/padtranspose_6464.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Padtranspose6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry PadtransposeComplexDouble = { + "Padtranspose", Precision::kComplexDouble, {"PADTRA_PAD", "PADTRA_TILE", "PADTRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 1, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 1, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 1, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 1, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 0, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 1, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 1, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 0, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/transpose.hpp b/src/database/kernels/transpose.hpp deleted file mode 100644 index b00a23dc..00000000 --- a/src/database/kernels/transpose.hpp +++ /dev/null @@ -1,350 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Transpose' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry TransposeHalf = { - "Transpose", Precision::kHalf, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 4, 0, 1, 8 } }, - { "default", { 4, 0, 1, 8 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 8, 1, 1, 8 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 16, 0, 0, 4 } }, - { "default", { 8, 1, 0, 8 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 8, 0, 0, 4 } }, - { "default", { 8, 0, 0, 4 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 8, 0, 1, 8 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry TransposeSingle = { - "Transpose", Precision::kSingle, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 4, 0, 1, 8 } }, - { "ATI Radeon HD 6750M", { 8, 0, 1, 2 } }, - { "Ellesmere", { 16, 0, 1, 4 } }, - { "Fiji", { 16, 0, 1, 2 } }, - { "Hawaii", { 4, 0, 1, 8 } }, - { "Oland", { 8, 0, 1, 4 } }, - { "Pitcairn", { 16, 0, 1, 1 } }, - { "Tahiti", { 4, 0, 1, 4 } }, - { "Tonga", { 8, 1, 1, 2 } }, - { "Turks", { 8, 0, 1, 2 } }, - { "default", { 8, 0, 1, 2 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 8, 0, 1, 4 } }, - { "default", { 8, 0, 1, 4 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 1, 0, 16 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 4, 0, 0, 8 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 4, 0, 1, 8 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 4, 0, 0, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 4, 1, 0, 16 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 4, 0, 0, 8 } }, - { "default", { 4, 0, 0, 8 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 16, 0, 1, 4 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 16, 0, 0, 4 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 16, 0, 0, 4 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 8, 0, 1, 4 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 16, 0, 1, 2 } }, - { "Iris", { 8, 1, 0, 4 } }, - { "Iris Pro", { 16, 1, 0, 4 } }, - { "default", { 16, 0, 0, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 16, 1, 1, 1 } }, - { "default", { 16, 1, 1, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 32, 1, 1, 2 } }, - { "GeForce GT 650M", { 8, 1, 0, 4 } }, - { "GeForce GTX 1070", { 8, 0, 1, 4 } }, - { "GeForce GTX 1080", { 4, 0, 0, 4 } }, - { "GeForce GTX 480", { 16, 1, 0, 2 } }, - { "GeForce GTX 670", { 16, 1, 1, 2 } }, - { "GeForce GTX 680", { 16, 1, 1, 2 } }, - { "GeForce GTX 750", { 4, 0, 0, 8 } }, - { "GeForce GTX 750 Ti", { 32, 1, 0, 2 } }, - { "GeForce GTX 980", { 16, 0, 0, 1 } }, - { "GeForce GTX TITAN", { 8, 1, 0, 4 } }, - { "GeForce GTX TITAN Black", { 8, 1, 0, 4 } }, - { "GeForce GTX TITAN X", { 16, 0, 0, 4 } }, - { "TITAN X (Pascal)", { 8, 0, 0, 4 } }, - { "Tesla K20m", { 8, 0, 0, 4 } }, - { "Tesla K40m", { 8, 1, 0, 4 } }, - { "default", { 8, 1, 0, 4 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 8, 1, 1, 4 } }, - { "default", { 8, 1, 1, 4 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 8, 0, 1, 4 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry TransposeComplexSingle = { - "Transpose", Precision::kComplexSingle, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 4, 1, 1, 4 } }, - { "ATI Radeon HD 6750M", { 16, 1, 1, 1 } }, - { "Ellesmere", { 4, 0, 1, 4 } }, - { "Fiji", { 8, 1, 1, 2 } }, - { "Hawaii", { 16, 0, 1, 1 } }, - { "Oland", { 4, 0, 1, 2 } }, - { "Pitcairn", { 8, 0, 1, 1 } }, - { "Tahiti", { 16, 0, 1, 1 } }, - { "Tonga", { 16, 0, 1, 1 } }, - { "Turks", { 8, 1, 1, 4 } }, - { "default", { 8, 0, 1, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 16, 0, 0, 2 } }, - { "default", { 16, 0, 0, 2 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 0, 1, 8 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 8, 0, 0, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 4, 0, 0, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 4, 1, 0, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 4, 1, 0, 8 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 16, 0, 0, 4 } }, - { "default", { 4, 1, 0, 8 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 16, 1, 1, 2 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 8, 0, 0, 2 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 8, 0, 0, 2 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 16, 1, 1, 2 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 16, 1, 0, 2 } }, - { "Iris", { 8, 0, 0, 2 } }, - { "Iris Pro", { 16, 1, 0, 2 } }, - { "default", { 16, 1, 0, 2 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 1, 1, 1 } }, - { "GeForce GTX 1070", { 16, 1, 1, 1 } }, - { "GeForce GTX 1080", { 16, 1, 0, 1 } }, - { "GeForce GTX 480", { 16, 1, 0, 1 } }, - { "GeForce GTX 670", { 16, 1, 1, 1 } }, - { "GeForce GTX 680", { 16, 1, 1, 1 } }, - { "GeForce GTX 750", { 16, 1, 0, 1 } }, - { "GeForce GTX 750 Ti", { 16, 1, 0, 1 } }, - { "GeForce GTX 980", { 16, 1, 0, 1 } }, - { "GeForce GTX TITAN", { 16, 0, 0, 1 } }, - { "GeForce GTX TITAN Black", { 16, 1, 0, 1 } }, - { "GeForce GTX TITAN X", { 32, 1, 0, 1 } }, - { "TITAN X (Pascal)", { 8, 1, 0, 2 } }, - { "Tesla K20m", { 16, 0, 0, 1 } }, - { "Tesla K40m", { 16, 1, 0, 1 } }, - { "default", { 16, 1, 0, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 16, 1, 0, 1 } }, - { "default", { 16, 1, 0, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 8, 1, 1, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry TransposeDouble = { - "Transpose", Precision::kDouble, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 4, 0, 1, 4 } }, - { "Ellesmere", { 4, 0, 1, 4 } }, - { "Fiji", { 8, 1, 1, 2 } }, - { "Hawaii", { 16, 0, 1, 1 } }, - { "Oland", { 8, 1, 1, 2 } }, - { "Pitcairn", { 4, 0, 1, 2 } }, - { "Tahiti", { 4, 1, 1, 4 } }, - { "Tonga", { 4, 0, 1, 4 } }, - { "default", { 4, 0, 1, 4 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 8, 0, 0, 1 } }, - { "default", { 8, 0, 0, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 1, 0, 8 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 4, 0, 0, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 4, 1, 0, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 4, 1, 0, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 4, 0, 0, 16 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 4, 0, 0, 8 } }, - { "default", { 4, 1, 0, 8 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 1, 0, 1 } }, - { "default", { 32, 1, 0, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 1, 1, 2 } }, - { "GeForce GTX 1070", { 8, 0, 1, 2 } }, - { "GeForce GTX 1080", { 8, 0, 0, 2 } }, - { "GeForce GTX 480", { 8, 1, 0, 2 } }, - { "GeForce GTX 670", { 16, 1, 1, 2 } }, - { "GeForce GTX 680", { 16, 1, 1, 2 } }, - { "GeForce GTX 750", { 16, 1, 0, 1 } }, - { "GeForce GTX 750 Ti", { 32, 1, 0, 2 } }, - { "GeForce GTX 980", { 16, 0, 0, 2 } }, - { "GeForce GTX TITAN", { 8, 0, 0, 2 } }, - { "GeForce GTX TITAN Black", { 16, 1, 0, 2 } }, - { "GeForce GTX TITAN X", { 32, 1, 0, 1 } }, - { "TITAN X (Pascal)", { 16, 1, 0, 2 } }, - { "Tesla K20m", { 16, 1, 0, 2 } }, - { "Tesla K40m", { 16, 1, 1, 2 } }, - { "default", { 16, 1, 1, 2 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 16, 1, 1, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry TransposeComplexDouble = { - "Transpose", Precision::kComplexDouble, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 4, 1, 1, 2 } }, - { "Ellesmere", { 16, 0, 1, 1 } }, - { "Fiji", { 16, 0, 1, 1 } }, - { "Hawaii", { 4, 0, 1, 2 } }, - { "Oland", { 16, 0, 1, 1 } }, - { "Pitcairn", { 4, 0, 1, 1 } }, - { "Tahiti", { 16, 0, 1, 1 } }, - { "Tonga", { 8, 1, 1, 2 } }, - { "default", { 16, 0, 1, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 8, 0, 0, 1 } }, - { "default", { 8, 0, 0, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 0, 1, 8 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 4, 0, 0, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 4, 0, 0, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 4, 1, 0, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 4, 0, 1, 8 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 16, 1, 0, 2 } }, - { "default", { 4, 0, 0, 8 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 1, 1, 1 } }, - { "GeForce GTX 1070", { 8, 0, 0, 1 } }, - { "GeForce GTX 1080", { 8, 0, 0, 1 } }, - { "GeForce GTX 480", { 8, 1, 0, 1 } }, - { "GeForce GTX 670", { 16, 1, 1, 1 } }, - { "GeForce GTX 680", { 16, 1, 1, 1 } }, - { "GeForce GTX 750", { 16, 1, 0, 1 } }, - { "GeForce GTX 750 Ti", { 16, 1, 0, 1 } }, - { "GeForce GTX 980", { 32, 1, 0, 1 } }, - { "GeForce GTX TITAN", { 16, 1, 0, 1 } }, - { "GeForce GTX TITAN Black", { 16, 0, 0, 1 } }, - { "GeForce GTX TITAN X", { 32, 1, 0, 1 } }, - { "TITAN X (Pascal)", { 8, 0, 0, 1 } }, - { "Tesla K20m", { 16, 1, 0, 1 } }, - { "Tesla K40m", { 16, 1, 0, 1 } }, - { "default", { 16, 1, 0, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 16, 1, 1, 1 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/transpose/transpose.hpp b/src/database/kernels/transpose/transpose.hpp new file mode 100644 index 00000000..fa262c50 --- /dev/null +++ b/src/database/kernels/transpose/transpose.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Transpose' kernels. +// +// ================================================================================================= + +#include "database/kernels/transpose/transpose_16.hpp" +#include "database/kernels/transpose/transpose_32.hpp" +#include "database/kernels/transpose/transpose_3232.hpp" +#include "database/kernels/transpose/transpose_64.hpp" +#include "database/kernels/transpose/transpose_6464.hpp" diff --git a/src/database/kernels/transpose/transpose_16.hpp b/src/database/kernels/transpose/transpose_16.hpp new file mode 100644 index 00000000..e63102d1 --- /dev/null +++ b/src/database/kernels/transpose/transpose_16.hpp @@ -0,0 +1,54 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Transpose16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry TransposeHalf = { + "Transpose", Precision::kHalf, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 8, 1, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 16, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 8, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 8, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/transpose/transpose_32.hpp b/src/database/kernels/transpose/transpose_32.hpp new file mode 100644 index 00000000..dcc549e2 --- /dev/null +++ b/src/database/kernels/transpose/transpose_32.hpp @@ -0,0 +1,162 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Transpose32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry TransposeSingle = { + "Transpose", Precision::kSingle, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 16, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 16, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 8, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 8, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 8, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 8, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 1, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 4, 1, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 16, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 16, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 16, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 8, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 16, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 8, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 16, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 32, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GT 650M "}, Params{ 8, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 8, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 8, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 8, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 8, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 8, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 8, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/transpose/transpose_3232.hpp b/src/database/kernels/transpose/transpose_3232.hpp new file mode 100644 index 00000000..24e02f29 --- /dev/null +++ b/src/database/kernels/transpose/transpose_3232.hpp @@ -0,0 +1,153 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Transpose3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry TransposeComplexSingle = { + "Transpose", Precision::kComplexSingle, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 4, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 4, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 8, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 8, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 16, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 8, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 4, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 4, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 16, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 8, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 8, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 8, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 32, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/transpose/transpose_64.hpp b/src/database/kernels/transpose/transpose_64.hpp new file mode 100644 index 00000000..ad806d21 --- /dev/null +++ b/src/database/kernels/transpose/transpose_64.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Transpose64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry TransposeDouble = { + "Transpose", Precision::kDouble, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 4, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 4, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 1, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 4, 0, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 4, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 4, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 4, 0, 0, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 1, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 8, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 8, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 16, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 32, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 8, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 16, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/transpose/transpose_6464.hpp b/src/database/kernels/transpose/transpose_6464.hpp new file mode 100644 index 00000000..3f59b916 --- /dev/null +++ b/src/database/kernels/transpose/transpose_6464.hpp @@ -0,0 +1,123 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Transpose6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry TransposeComplexDouble = { + "Transpose", Precision::kComplexDouble, {"TRA_DIM", "TRA_PAD", "TRA_SHUFFLE", "TRA_WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 4, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 4, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 4, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 4, 1, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 4, 0, 1, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 16, 1, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 32, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 32, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 16, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xaxpy.hpp b/src/database/kernels/xaxpy.hpp deleted file mode 100644 index 5cb225d1..00000000 --- a/src/database/kernels/xaxpy.hpp +++ /dev/null @@ -1,362 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Xaxpy' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry XaxpyHalf = { - "Xaxpy", Precision::kHalf, {"VW", "WGS", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 4, 128, 4 } }, - { "default", { 4, 128, 4 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 1, 64, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 8, 64, 1 } }, - { "default", { 8, 64, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 8, 64, 1 } }, - { "default", { 8, 64, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 8, 64, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XaxpySingle = { - "Xaxpy", Precision::kSingle, {"VW", "WGS", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 1, 128, 1 } }, - { "ATI Radeon HD 6750M", { 1, 256, 2 } }, - { "Ellesmere", { 1, 64, 4 } }, - { "Fiji", { 4, 64, 1 } }, - { "Hawaii", { 2, 64, 2 } }, - { "Oland", { 1, 128, 1 } }, - { "Pitcairn", { 2, 128, 1 } }, - { "Tahiti", { 2, 64, 1 } }, - { "Tonga", { 1, 256, 8 } }, - { "Turks", { 2, 256, 1 } }, - { "default", { 2, 256, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 4, 256, 1 } }, - { "default", { 4, 256, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 8, 512, 1 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 1, 512, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 1, 128, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 4, 256, 1 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 2, 1024, 1 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 1, 128, 1 } }, - { "default", { 8, 512, 1 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 1, 128, 1 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 1, 256, 1 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 1, 64, 1 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 1, 64, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 8, 512, 1 } }, - { "Iris", { 1, 64, 1 } }, - { "Iris Pro", { 1, 128, 2 } }, - { "default", { 4, 256, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 2, 1024, 2 } }, - { "default", { 2, 1024, 2 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 2, 64, 1 } }, - { "GeForce GT 650M", { 2, 1024, 1 } }, - { "GeForce GTX 1070", { 1, 64, 4 } }, - { "GeForce GTX 1080", { 1, 256, 1 } }, - { "GeForce GTX 480", { 2, 128, 1 } }, - { "GeForce GTX 670", { 2, 64, 1 } }, - { "GeForce GTX 680", { 1, 128, 1 } }, - { "GeForce GTX 750", { 1, 64, 1 } }, - { "GeForce GTX 750 Ti", { 2, 64, 1 } }, - { "GeForce GTX 980", { 1, 1024, 1 } }, - { "GeForce GTX TITAN", { 4, 256, 1 } }, - { "GeForce GTX TITAN Black", { 4, 128, 4 } }, - { "GeForce GTX TITAN X", { 1, 64, 1 } }, - { "TITAN X (Pascal)", { 4, 128, 1 } }, - { "Tesla K20m", { 4, 128, 1 } }, - { "Tesla K40m", { 4, 128, 1 } }, - { "default", { 4, 1024, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 4, 128, 2 } }, - { "default", { 4, 128, 2 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 4, 64, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XaxpyComplexSingle = { - "Xaxpy", Precision::kComplexSingle, {"VW", "WGS", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 2, 64, 8 } }, - { "ATI Radeon HD 6750M", { 1, 64, 1 } }, - { "Ellesmere", { 2, 256, 1 } }, - { "Fiji", { 1, 128, 2 } }, - { "Hawaii", { 1, 128, 2 } }, - { "Oland", { 1, 128, 1 } }, - { "Pitcairn", { 1, 64, 1 } }, - { "Tahiti", { 1, 64, 1 } }, - { "Tonga", { 1, 256, 8 } }, - { "Turks", { 2, 256, 1 } }, - { "default", { 1, 128, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 1, 256, 1 } }, - { "default", { 1, 256, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 1024, 1 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 4, 256, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 4, 1024, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 1, 1024, 2 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 4, 1024, 1 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 2, 1024, 1 } }, - { "default", { 8, 1024, 1 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 4, 64, 2 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 1, 64, 1 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 1, 64, 1 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 1, 64, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 4, 64, 1 } }, - { "Iris", { 2, 128, 1 } }, - { "Iris Pro", { 1, 256, 8 } }, - { "default", { 4, 64, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 1, 1024, 1 } }, - { "default", { 1, 1024, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 512, 1 } }, - { "GeForce GTX 1070", { 1, 64, 2 } }, - { "GeForce GTX 1080", { 2, 64, 1 } }, - { "GeForce GTX 480", { 1, 256, 1 } }, - { "GeForce GTX 670", { 1, 256, 1 } }, - { "GeForce GTX 680", { 1, 256, 1 } }, - { "GeForce GTX 750", { 1, 512, 1 } }, - { "GeForce GTX 750 Ti", { 1, 512, 1 } }, - { "GeForce GTX 980", { 1, 64, 1 } }, - { "GeForce GTX TITAN", { 1, 256, 1 } }, - { "GeForce GTX TITAN Black", { 1, 128, 2 } }, - { "GeForce GTX TITAN X", { 1, 512, 1 } }, - { "TITAN X (Pascal)", { 2, 512, 1 } }, - { "Tesla K20m", { 1, 128, 1 } }, - { "Tesla K40m", { 1, 128, 1 } }, - { "default", { 1, 256, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 1, 64, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 128, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XaxpyDouble = { - "Xaxpy", Precision::kDouble, {"VW", "WGS", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 1, 256, 1 } }, - { "Ellesmere", { 2, 64, 4 } }, - { "Fiji", { 2, 64, 4 } }, - { "Hawaii", { 1, 64, 2 } }, - { "Oland", { 1, 64, 1 } }, - { "Pitcairn", { 1, 128, 1 } }, - { "Tahiti", { 1, 64, 1 } }, - { "Tonga", { 1, 128, 4 } }, - { "default", { 2, 64, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 2, 128, 2 } }, - { "default", { 2, 128, 2 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 64, 1 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 1, 1024, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 2, 1024, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 8, 64, 1 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 8, 256, 1 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 8, 2048, 1 } }, - { "default", { 8, 64, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 2, 512, 1 } }, - { "default", { 2, 512, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 64, 1 } }, - { "GeForce GTX 1070", { 1, 64, 8 } }, - { "GeForce GTX 1080", { 1, 128, 1 } }, - { "GeForce GTX 480", { 1, 128, 1 } }, - { "GeForce GTX 670", { 1, 64, 1 } }, - { "GeForce GTX 680", { 1, 64, 1 } }, - { "GeForce GTX 750", { 1, 128, 1 } }, - { "GeForce GTX 750 Ti", { 1, 256, 2 } }, - { "GeForce GTX 980", { 1, 256, 1 } }, - { "GeForce GTX TITAN", { 2, 1024, 1 } }, - { "GeForce GTX TITAN Black", { 2, 128, 1 } }, - { "GeForce GTX TITAN X", { 1, 512, 1 } }, - { "TITAN X (Pascal)", { 2, 512, 1 } }, - { "Tesla K20m", { 2, 128, 1 } }, - { "Tesla K40m", { 2, 128, 1 } }, - { "default", { 1, 128, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 2, 256, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XaxpyComplexDouble = { - "Xaxpy", Precision::kComplexDouble, {"VW", "WGS", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 1, 128, 1 } }, - { "Ellesmere", { 1, 128, 1 } }, - { "Fiji", { 1, 64, 1 } }, - { "Hawaii", { 2, 64, 1 } }, - { "Oland", { 1, 256, 1 } }, - { "Pitcairn", { 1, 128, 1 } }, - { "Tahiti", { 1, 128, 1 } }, - { "Tonga", { 1, 64, 1 } }, - { "default", { 1, 128, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 1, 64, 8 } }, - { "default", { 1, 64, 8 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 1024, 1 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 8, 128, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 8, 128, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 8, 512, 1 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 8, 1024, 1 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 1, 256, 1 } }, - { "default", { 8, 256, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 1, 1024, 1 } }, - { "default", { 1, 1024, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 64, 1 } }, - { "GeForce GTX 1070", { 1, 64, 2 } }, - { "GeForce GTX 1080", { 1, 256, 1 } }, - { "GeForce GTX 480", { 1, 128, 1 } }, - { "GeForce GTX 670", { 1, 256, 1 } }, - { "GeForce GTX 680", { 1, 64, 1 } }, - { "GeForce GTX 750", { 1, 1024, 1 } }, - { "GeForce GTX 750 Ti", { 1, 64, 2 } }, - { "GeForce GTX 980", { 1, 1024, 1 } }, - { "GeForce GTX TITAN", { 1, 64, 4 } }, - { "GeForce GTX TITAN Black", { 1, 128, 4 } }, - { "GeForce GTX TITAN X", { 1, 1024, 1 } }, - { "TITAN X (Pascal)", { 1, 256, 2 } }, - { "Tesla K20m", { 1, 64, 1 } }, - { "Tesla K40m", { 1, 64, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 256, 1 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/xaxpy/xaxpy.hpp b/src/database/kernels/xaxpy/xaxpy.hpp new file mode 100644 index 00000000..aa920183 --- /dev/null +++ b/src/database/kernels/xaxpy/xaxpy.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xaxpy' kernels. +// +// ================================================================================================= + +#include "database/kernels/xaxpy/xaxpy_16.hpp" +#include "database/kernels/xaxpy/xaxpy_32.hpp" +#include "database/kernels/xaxpy/xaxpy_3232.hpp" +#include "database/kernels/xaxpy/xaxpy_64.hpp" +#include "database/kernels/xaxpy/xaxpy_6464.hpp" diff --git a/src/database/kernels/xaxpy/xaxpy_16.hpp b/src/database/kernels/xaxpy/xaxpy_16.hpp new file mode 100644 index 00000000..d102bb52 --- /dev/null +++ b/src/database/kernels/xaxpy/xaxpy_16.hpp @@ -0,0 +1,54 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xaxpy16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XaxpyHalf = { + "Xaxpy", Precision::kHalf, {"VW", "WGS", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 8, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 8, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 8, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xaxpy/xaxpy_32.hpp b/src/database/kernels/xaxpy/xaxpy_32.hpp new file mode 100644 index 00000000..38d595db --- /dev/null +++ b/src/database/kernels/xaxpy/xaxpy_32.hpp @@ -0,0 +1,162 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xaxpy32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XaxpySingle = { + "Xaxpy", Precision::kSingle, {"VW", "WGS", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 4, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 2, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 2, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 1, 256, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 2, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 1, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 4, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 8, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 1, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 1, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 4, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 2, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 8, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 1, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 2, 1024, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 1024, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 2, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GT 650M "}, Params{ 2, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 4, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 4, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 4, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 4, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 512, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 4, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 4, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 4, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xaxpy/xaxpy_3232.hpp b/src/database/kernels/xaxpy/xaxpy_3232.hpp new file mode 100644 index 00000000..e002c521 --- /dev/null +++ b/src/database/kernels/xaxpy/xaxpy_3232.hpp @@ -0,0 +1,161 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xaxpy3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XaxpyComplexSingle = { + "Xaxpy", Precision::kComplexSingle, {"VW", "WGS", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 2, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 1, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 2, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 1, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 1, 256, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 2, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 4, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 4, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 1, 1024, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 4, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 2, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 4, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 4, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 2, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 1, 256, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 1, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 1, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 1, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 2, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xaxpy/xaxpy_64.hpp b/src/database/kernels/xaxpy/xaxpy_64.hpp new file mode 100644 index 00000000..51196633 --- /dev/null +++ b/src/database/kernels/xaxpy/xaxpy_64.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xaxpy64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XaxpyDouble = { + "Xaxpy", Precision::kDouble, {"VW", "WGS", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 2, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 2, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 1, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 1, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 2, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 2, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 8, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 8, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 8, 2048, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 2, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 2, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 2, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 2, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 2, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 1, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 2, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 2, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xaxpy/xaxpy_6464.hpp b/src/database/kernels/xaxpy/xaxpy_6464.hpp new file mode 100644 index 00000000..5249fe84 --- /dev/null +++ b/src/database/kernels/xaxpy/xaxpy_6464.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xaxpy6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XaxpyComplexDouble = { + "Xaxpy", Precision::kComplexDouble, {"VW", "WGS", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 1, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 8, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 8, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 8, 512, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 8, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 1, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 1, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 1024, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 1, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xdot.hpp b/src/database/kernels/xdot.hpp deleted file mode 100644 index 986c32b2..00000000 --- a/src/database/kernels/xdot.hpp +++ /dev/null @@ -1,292 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Xdot' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry XdotHalf = { - "Xdot", Precision::kHalf, {"WGS1", "WGS2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 256, 64 } }, - { "default", { 256, 64 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 256, 32 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 128, 32 } }, - { "default", { 128, 32 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 64, 64 } }, - { "default", { 64, 64 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 128, 64 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XdotSingle = { - "Xdot", Precision::kSingle, {"WGS1", "WGS2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 128, 32 } }, - { "ATI Radeon HD 6750M", { 256, 32 } }, - { "Ellesmere", { 128, 32 } }, - { "Fiji", { 256, 32 } }, - { "Oland", { 256, 32 } }, - { "Pitcairn", { 128, 32 } }, - { "Tahiti", { 128, 32 } }, - { "Tonga", { 64, 32 } }, - { "Turks", { 128, 64 } }, - { "default", { 256, 32 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 32, 32 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 1024, 32 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 64, 128 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 64, 32 } }, - { "default", { 64, 64 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 64, 32 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 256, 32 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 64, 32 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 512, 128 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 32, 32 } }, - { "Iris Pro", { 512, 64 } }, - { "default", { 64, 32 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 128, 32 } }, - { "GeForce GT 650M", { 128, 64 } }, - { "GeForce GTX 1070", { 128, 1024 } }, - { "GeForce GTX 1080", { 512, 64 } }, - { "GeForce GTX 480", { 512, 32 } }, - { "GeForce GTX 670", { 512, 1024 } }, - { "GeForce GTX 680", { 128, 128 } }, - { "GeForce GTX 750", { 128, 32 } }, - { "GeForce GTX 750 Ti", { 64, 32 } }, - { "GeForce GTX 980", { 256, 32 } }, - { "GeForce GTX TITAN Black", { 512, 64 } }, - { "GeForce GTX TITAN X", { 256, 32 } }, - { "TITAN X (Pascal)", { 1024, 32 } }, - { "Tesla K20m", { 1024, 32 } }, - { "default", { 256, 64 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 128, 64 } }, - { "default", { 128, 64 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 128, 32 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XdotComplexSingle = { - "Xdot", Precision::kComplexSingle, {"WGS1", "WGS2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 64, 32 } }, - { "ATI Radeon HD 6750M", { 256, 256 } }, - { "Ellesmere", { 256, 32 } }, - { "Fiji", { 256, 64 } }, - { "Oland", { 128, 32 } }, - { "Pitcairn", { 256, 32 } }, - { "Tahiti", { 64, 32 } }, - { "Tonga", { 256, 64 } }, - { "Turks", { 128, 32 } }, - { "default", { 256, 32 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 128, 64 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 1024, 32 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 64, 32 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 256, 32 } }, - { "default", { 256, 32 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 256, 32 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 256, 32 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 32, 32 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 512, 32 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 32, 256 } }, - { "Iris Pro", { 32, 32 } }, - { "default", { 32, 32 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 64, 32 } }, - { "GeForce GTX 1070", { 128, 32 } }, - { "GeForce GTX 1080", { 128, 64 } }, - { "GeForce GTX 480", { 512, 32 } }, - { "GeForce GTX 670", { 256, 32 } }, - { "GeForce GTX 680", { 128, 64 } }, - { "GeForce GTX 750", { 64, 32 } }, - { "GeForce GTX 750 Ti", { 64, 32 } }, - { "GeForce GTX 980", { 256, 64 } }, - { "GeForce GTX TITAN Black", { 128, 64 } }, - { "GeForce GTX TITAN X", { 256, 32 } }, - { "TITAN X (Pascal)", { 256, 32 } }, - { "Tesla K20m", { 512, 32 } }, - { "default", { 512, 64 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 64, 256 } }, - { "default", { 64, 256 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 256, 32 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XdotDouble = { - "Xdot", Precision::kDouble, {"WGS1", "WGS2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 64, 128 } }, - { "Ellesmere", { 128, 64 } }, - { "Fiji", { 256, 32 } }, - { "Oland", { 256, 32 } }, - { "Pitcairn", { 128, 32 } }, - { "Tahiti", { 256, 32 } }, - { "Tonga", { 128, 64 } }, - { "default", { 128, 64 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 64, 128 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 512, 64 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 64, 64 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 256, 32 } }, - { "default", { 256, 64 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 128, 32 } }, - { "GeForce GTX 1070", { 128, 512 } }, - { "GeForce GTX 1080", { 128, 128 } }, - { "GeForce GTX 480", { 512, 32 } }, - { "GeForce GTX 670", { 256, 32 } }, - { "GeForce GTX 680", { 128, 64 } }, - { "GeForce GTX 750", { 64, 256 } }, - { "GeForce GTX 750 Ti", { 128, 64 } }, - { "GeForce GTX 980", { 128, 32 } }, - { "GeForce GTX TITAN Black", { 128, 64 } }, - { "GeForce GTX TITAN X", { 256, 32 } }, - { "TITAN X (Pascal)", { 128, 32 } }, - { "Tesla K20m", { 512, 32 } }, - { "default", { 128, 128 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 128, 64 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XdotComplexDouble = { - "Xdot", Precision::kComplexDouble, {"WGS1", "WGS2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 64, 32 } }, - { "Ellesmere", { 256, 32 } }, - { "Fiji", { 256, 32 } }, - { "Oland", { 256, 32 } }, - { "Pitcairn", { 256, 32 } }, - { "Tahiti", { 256, 32 } }, - { "Tonga", { 128, 64 } }, - { "default", { 256, 32 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 32, 128 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 1024, 32 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 1024, 32 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 32 } }, - { "default", { 128, 32 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 64, 32 } }, - { "GeForce GTX 1070", { 128, 64 } }, - { "GeForce GTX 1080", { 128, 32 } }, - { "GeForce GTX 480", { 512, 32 } }, - { "GeForce GTX 670", { 512, 128 } }, - { "GeForce GTX 680", { 256, 64 } }, - { "GeForce GTX 750", { 256, 32 } }, - { "GeForce GTX 750 Ti", { 64, 32 } }, - { "GeForce GTX 980", { 64, 32 } }, - { "GeForce GTX TITAN Black", { 128, 32 } }, - { "GeForce GTX TITAN X", { 128, 32 } }, - { "TITAN X (Pascal)", { 128, 64 } }, - { "Tesla K20m", { 128, 32 } }, - { "default", { 128, 64 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 256, 32 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/xdot/xdot.hpp b/src/database/kernels/xdot/xdot.hpp new file mode 100644 index 00000000..5d54cdc9 --- /dev/null +++ b/src/database/kernels/xdot/xdot.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xdot' kernels. +// +// ================================================================================================= + +#include "database/kernels/xdot/xdot_16.hpp" +#include "database/kernels/xdot/xdot_32.hpp" +#include "database/kernels/xdot/xdot_3232.hpp" +#include "database/kernels/xdot/xdot_64.hpp" +#include "database/kernels/xdot/xdot_6464.hpp" diff --git a/src/database/kernels/xdot/xdot_16.hpp b/src/database/kernels/xdot/xdot_16.hpp new file mode 100644 index 00000000..ba9307dd --- /dev/null +++ b/src/database/kernels/xdot/xdot_16.hpp @@ -0,0 +1,54 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xdot16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XdotHalf = { + "Xdot", Precision::kHalf, {"WGS1", "WGS2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xdot/xdot_32.hpp b/src/database/kernels/xdot/xdot_32.hpp new file mode 100644 index 00000000..933a3d14 --- /dev/null +++ b/src/database/kernels/xdot/xdot_32.hpp @@ -0,0 +1,137 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xdot32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XdotSingle = { + "Xdot", Precision::kSingle, {"WGS1", "WGS2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 1024, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 512, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 512, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GT 650M "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 512, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 512, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 1024, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1024, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 128, 1024, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 512, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 1024, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1024, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xdot/xdot_3232.hpp b/src/database/kernels/xdot/xdot_3232.hpp new file mode 100644 index 00000000..5ed6baea --- /dev/null +++ b/src/database/kernels/xdot/xdot_3232.hpp @@ -0,0 +1,136 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xdot3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XdotComplexSingle = { + "Xdot", Precision::kComplexSingle, {"WGS1", "WGS2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 1024, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 32, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 512, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 64, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xdot/xdot_64.hpp b/src/database/kernels/xdot/xdot_64.hpp new file mode 100644 index 00000000..58a67496 --- /dev/null +++ b/src/database/kernels/xdot/xdot_64.hpp @@ -0,0 +1,107 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xdot64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XdotDouble = { + "Xdot", Precision::kDouble, {"WGS1", "WGS2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 64, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 512, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 64, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 64, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 128, 512, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xdot/xdot_6464.hpp b/src/database/kernels/xdot/xdot_6464.hpp new file mode 100644 index 00000000..755ec390 --- /dev/null +++ b/src/database/kernels/xdot/xdot_6464.hpp @@ -0,0 +1,107 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xdot6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XdotComplexDouble = { + "Xdot", Precision::kComplexDouble, {"WGS1", "WGS2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 32, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 1024, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 1024, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 512, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 512, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 256, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 256, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 256, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm.hpp b/src/database/kernels/xgemm.hpp deleted file mode 100644 index 43854afb..00000000 --- a/src/database/kernels/xgemm.hpp +++ /dev/null @@ -1,348 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Xgemm' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry XgemmHalf = { - "Xgemm", Precision::kHalf, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, - { "default", { 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics Skylake ULT GT2", { 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, - { "default", { 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemmSingle = { - "Xgemm", Precision::kSingle, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 2, 16, 16, 64, 8, 16, 128, 0, 0, 0, 0, 2, 8 } }, - { "ATI Radeon HD 6750M", { 32, 2, 8, 16, 128, 8, 8, 128, 0, 0, 1, 1, 8, 8 } }, - { "Ellesmere", { 32, 2, 8, 8, 16, 16, 16, 64, 1, 1, 0, 0, 1, 2 } }, - { "Fiji", { 32, 2, 16, 16, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, - { "Hawaii", { 16, 2, 16, 32, 128, 32, 8, 64, 1, 1, 1, 1, 4, 2 } }, - { "Oland", { 16, 2, 32, 16, 64, 32, 16, 128, 1, 1, 1, 0, 2, 4 } }, - { "Pitcairn", { 16, 2, 16, 8, 32, 16, 16, 128, 0, 0, 1, 0, 1, 1 } }, - { "Tahiti", { 32, 2, 16, 32, 128, 16, 8, 64, 0, 0, 0, 0, 4, 1 } }, - { "Tonga", { 16, 2, 16, 32, 64, 16, 8, 128, 1, 1, 0, 0, 2, 8 } }, - { "Turks", { 32, 2, 8, 8, 64, 8, 8, 64, 0, 0, 0, 0, 4, 4 } }, - { "default", { 32, 2, 8, 8, 32, 8, 8, 64, 0, 0, 0, 0, 4, 4 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 16, 2, 8, 8, 64, 8, 16, 16, 0, 0, 1, 1, 8, 1 } }, - { "default", { 16, 2, 8, 8, 64, 8, 16, 16, 0, 0, 1, 1, 8, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 16, 2, 8, 8, 128, 16, 8, 128, 0, 1, 1, 1, 1, 8 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 8, 32, 32, 64, 32, 16, 64, 1, 1, 1, 0, 2, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 2, 16, 8, 128, 16, 8, 64, 0, 0, 1, 0, 1, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 32, 2, 32, 8, 128, 8, 8, 128, 1, 1, 1, 1, 2, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 16, 2, 8, 8, 128, 8, 8, 128, 1, 1, 1, 0, 1, 8 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 32, 8, 16, 16, 64, 32, 32, 64, 0, 1, 1, 0, 1, 2 } }, - { "default", { 32, 2, 8, 8, 32, 8, 8, 64, 1, 1, 0, 0, 4, 4 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 32, 2, 8, 8, 128, 32, 16, 64, 0, 0, 1, 0, 4, 2 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 32, 8, 8, 8, 64, 32, 16, 64, 1, 1, 1, 1, 4, 2 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 16, 2, 16, 8, 32, 8, 16, 128, 1, 1, 1, 1, 2, 4 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 32, 2, 16, 16, 64, 16, 8, 64, 1, 1, 1, 0, 2, 4 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 4, 4 } }, - { "Iris", { 16, 8, 16, 8, 128, 32, 16, 64, 1, 1, 1, 1, 4, 1 } }, - { "Iris Pro", { 16, 2, 16, 8, 64, 32, 32, 128, 1, 1, 1, 0, 4, 4 } }, - { "default", { 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 4, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 2, 32, 32, 32, 32, 8, 128, 0, 0, 1, 0, 1, 4 } }, - { "default", { 32, 2, 32, 32, 32, 32, 8, 128, 0, 0, 1, 0, 1, 4 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 2, 16, 8, 32, 8, 16, 64, 1, 1, 1, 1, 2, 4 } }, - { "GeForce GT 650M", { 32, 2, 8, 8, 32, 32, 32, 64, 1, 1, 0, 0, 4, 2 } }, - { "GeForce GTX 1070", { 16, 2, 32, 16, 128, 32, 8, 128, 1, 1, 1, 0, 4, 1 } }, - { "GeForce GTX 1080", { 32, 2, 16, 8, 64, 8, 8, 64, 1, 1, 1, 1, 4, 8 } }, - { "GeForce GTX 480", { 16, 2, 16, 8, 64, 32, 16, 64, 1, 1, 1, 1, 2, 2 } }, - { "GeForce GTX 670", { 16, 2, 8, 8, 64, 16, 16, 64, 1, 1, 1, 0, 2, 4 } }, - { "GeForce GTX 680", { 32, 8, 8, 16, 64, 32, 16, 128, 1, 1, 0, 0, 4, 2 } }, - { "GeForce GTX 750", { 16, 2, 16, 16, 64, 32, 8, 128, 1, 1, 1, 1, 1, 2 } }, - { "GeForce GTX 750 Ti", { 16, 2, 16, 16, 128, 32, 8, 64, 1, 1, 0, 1, 8, 2 } }, - { "GeForce GTX 980", { 16, 2, 16, 16, 64, 16, 8, 128, 1, 1, 1, 0, 4, 8 } }, - { "GeForce GTX TITAN", { 16, 8, 32, 16, 64, 8, 8, 64, 1, 1, 1, 0, 2, 2 } }, - { "GeForce GTX TITAN Black", { 16, 2, 16, 8, 64, 16, 16, 64, 1, 1, 1, 0, 4, 1 } }, - { "GeForce GTX TITAN X", { 16, 2, 8, 16, 128, 8, 8, 128, 1, 1, 1, 1, 4, 8 } }, - { "TITAN X (Pascal)", { 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 4, 1 } }, - { "Tesla K20m", { 16, 2, 32, 16, 64, 16, 8, 64, 1, 1, 1, 0, 2, 4 } }, - { "Tesla K40m", { 16, 8, 16, 8, 64, 16, 16, 128, 1, 1, 1, 0, 2, 4 } }, - { "default", { 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 4, 2 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 32, 2, 8, 8, 32, 8, 8, 32, 1, 1, 0, 0, 4, 1 } }, - { "default", { 32, 2, 8, 8, 32, 8, 8, 32, 1, 1, 0, 0, 4, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 2, 8, 8, 32, 8, 8, 32, 1, 1, 0, 0, 4, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemmComplexSingle = { - "Xgemm", Precision::kComplexSingle, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 2, 32, 32, 64, 8, 8, 64, 0, 0, 1, 1, 2, 8 } }, - { "ATI Radeon HD 6750M", { 32, 2, 8, 8, 32, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, - { "Ellesmere", { 32, 2, 16, 16, 32, 8, 8, 32, 1, 1, 0, 0, 1, 4 } }, - { "Fiji", { 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 1, 2 } }, - { "Hawaii", { 32, 2, 32, 8, 32, 8, 16, 32, 1, 0, 1, 0, 1, 1 } }, - { "Oland", { 32, 2, 16, 8, 32, 32, 32, 128, 1, 0, 0, 1, 2, 4 } }, - { "Pitcairn", { 16, 2, 8, 8, 32, 8, 8, 32, 0, 1, 1, 1, 4, 2 } }, - { "Tahiti", { 16, 2, 8, 8, 32, 8, 16, 32, 1, 0, 0, 1, 2, 1 } }, - { "Tonga", { 16, 2, 32, 8, 64, 16, 32, 64, 1, 1, 1, 0, 2, 1 } }, - { "Turks", { 16, 2, 8, 8, 32, 32, 8, 32, 0, 1, 0, 0, 2, 1 } }, - { "default", { 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 1, 2 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 16, 2, 8, 16, 128, 16, 8, 128, 0, 0, 0, 1, 8, 1 } }, - { "default", { 16, 2, 8, 16, 128, 16, 8, 128, 0, 0, 0, 1, 8, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 16, 2, 32, 8, 128, 16, 16, 128, 1, 1, 0, 1, 1, 2 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 2, 32, 16, 32, 16, 16, 64, 0, 1, 1, 0, 1, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 2, 16, 16, 64, 8, 16, 64, 0, 1, 0, 0, 4, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 32, 2, 8, 8, 128, 16, 32, 128, 0, 0, 0, 0, 1, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 2, 8, 8, 128, 32, 8, 128, 0, 0, 0, 0, 1, 4 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 32, 2, 8, 16, 16, 16, 16, 128, 0, 0, 1, 1, 1, 4 } }, - { "default", { 32, 2, 16, 16, 64, 8, 8, 32, 0, 0, 0, 0, 4, 2 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 16, 8, 8, 16, 64, 32, 8, 32, 0, 0, 0, 0, 2, 1 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 16, 8, 8, 8, 32, 16, 16, 64, 1, 0, 0, 0, 4, 4 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 32, 8, 16, 16, 64, 16, 16, 64, 1, 1, 1, 1, 2, 1 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 32, 2, 16, 16, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 32, 2, 16, 16, 64, 16, 16, 64, 0, 0, 0, 0, 4, 2 } }, - { "Iris", { 32, 8, 32, 16, 64, 8, 16, 64, 1, 0, 1, 0, 1, 1 } }, - { "Iris Pro", { 16, 2, 8, 8, 32, 32, 8, 32, 1, 1, 1, 1, 1, 1 } }, - { "default", { 32, 2, 8, 8, 32, 8, 8, 32, 1, 1, 0, 0, 4, 2 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 2, 32, 32, 32, 32, 16, 128, 1, 0, 0, 0, 1, 4 } }, - { "default", { 32, 2, 32, 32, 32, 32, 16, 128, 1, 0, 0, 0, 1, 4 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 8, 32, 32, 64, 32, 16, 128, 1, 0, 1, 0, 1, 4 } }, - { "GeForce GTX 1070", { 16, 2, 16, 16, 128, 16, 16, 64, 1, 1, 1, 1, 2, 4 } }, - { "GeForce GTX 1080", { 16, 2, 32, 16, 64, 32, 8, 64, 1, 1, 0, 0, 1, 2 } }, - { "GeForce GTX 480", { 16, 2, 16, 16, 32, 32, 16, 128, 0, 1, 1, 1, 2, 2 } }, - { "GeForce GTX 670", { 16, 2, 32, 32, 64, 32, 8, 32, 1, 1, 1, 1, 1, 1 } }, - { "GeForce GTX 680", { 16, 2, 32, 16, 64, 32, 32, 128, 1, 0, 0, 0, 2, 2 } }, - { "GeForce GTX 750", { 16, 8, 16, 16, 64, 16, 16, 64, 1, 1, 1, 0, 2, 2 } }, - { "GeForce GTX 750 Ti", { 16, 2, 16, 8, 32, 32, 16, 64, 1, 1, 1, 0, 1, 2 } }, - { "GeForce GTX 980", { 32, 8, 32, 32, 64, 16, 16, 64, 1, 1, 1, 0, 2, 1 } }, - { "GeForce GTX TITAN", { 16, 8, 16, 16, 64, 32, 16, 64, 1, 1, 1, 0, 1, 1 } }, - { "GeForce GTX TITAN Black", { 16, 2, 8, 16, 64, 8, 8, 32, 0, 1, 1, 0, 1, 2 } }, - { "GeForce GTX TITAN X", { 16, 2, 8, 8, 64, 8, 8, 32, 1, 0, 1, 1, 1, 4 } }, - { "TITAN X (Pascal)", { 32, 2, 32, 32, 64, 8, 8, 32, 1, 1, 0, 0, 2, 4 } }, - { "Tesla K20m", { 32, 2, 8, 16, 64, 8, 16, 64, 1, 0, 0, 0, 1, 4 } }, - { "Tesla K40m", { 16, 2, 32, 32, 32, 32, 8, 64, 0, 1, 0, 0, 1, 1 } }, - { "default", { 32, 2, 8, 8, 16, 32, 32, 64, 1, 1, 0, 0, 1, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 2, 16, 16, 32, 8, 8, 32, 1, 1, 0, 0, 2, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemmDouble = { - "Xgemm", Precision::kDouble, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 2, 16, 16, 64, 8, 8, 32, 0, 0, 0, 0, 4, 4 } }, - { "Ellesmere", { 32, 2, 16, 16, 32, 16, 16, 64, 1, 1, 0, 0, 2, 2 } }, - { "Fiji", { 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 2, 2 } }, - { "Hawaii", { 16, 8, 32, 8, 128, 8, 8, 32, 0, 1, 0, 0, 1, 4 } }, - { "Oland", { 16, 2, 8, 16, 64, 16, 8, 16, 0, 0, 1, 1, 1, 1 } }, - { "Pitcairn", { 32, 2, 32, 16, 64, 8, 16, 32, 0, 0, 0, 0, 1, 2 } }, - { "Tahiti", { 32, 2, 16, 8, 16, 8, 8, 32, 0, 0, 0, 1, 1, 4 } }, - { "Tonga", { 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 2, 2 } }, - { "default", { 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 2, 2 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 32, 2, 8, 8, 64, 8, 8, 16, 0, 1, 1, 0, 8, 2 } }, - { "default", { 32, 2, 8, 8, 64, 8, 8, 16, 0, 1, 1, 0, 8, 2 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 16, 2, 32, 8, 128, 16, 16, 128, 1, 1, 1, 1, 2, 8 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 2, 32, 16, 128, 16, 16, 64, 0, 1, 1, 0, 1, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 2, 32, 16, 128, 16, 16, 128, 0, 0, 1, 0, 1, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 32, 2, 16, 8, 128, 8, 8, 64, 1, 0, 0, 1, 2, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 2, 16, 8, 128, 8, 8, 128, 1, 0, 0, 0, 2, 8 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 32, 2, 8, 16, 128, 16, 8, 128, 0, 0, 1, 1, 1, 8 } }, - { "default", { 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 1, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 8, 8, 16, 16, 16, 16, 128, 0, 0, 1, 0, 1, 4 } }, - { "default", { 32, 8, 8, 16, 16, 16, 16, 128, 0, 0, 1, 0, 1, 4 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 2, 8, 8, 16, 8, 8, 32, 1, 0, 0, 1, 2, 2 } }, - { "GeForce GTX 1070", { 16, 2, 8, 16, 32, 8, 8, 64, 0, 0, 1, 1, 2, 8 } }, - { "GeForce GTX 1080", { 32, 2, 16, 16, 32, 16, 16, 64, 0, 0, 0, 0, 2, 4 } }, - { "GeForce GTX 480", { 16, 2, 8, 16, 32, 32, 8, 64, 1, 1, 1, 0, 1, 2 } }, - { "GeForce GTX 670", { 32, 8, 16, 32, 128, 16, 8, 32, 0, 1, 1, 0, 1, 1 } }, - { "GeForce GTX 680", { 32, 8, 8, 8, 32, 16, 32, 128, 1, 0, 0, 1, 2, 4 } }, - { "GeForce GTX 750", { 32, 8, 16, 32, 64, 16, 8, 128, 0, 0, 0, 1, 2, 1 } }, - { "GeForce GTX 750 Ti", { 32, 2, 8, 8, 32, 16, 16, 32, 0, 0, 0, 0, 4, 2 } }, - { "GeForce GTX 980", { 32, 8, 16, 8, 64, 32, 32, 128, 0, 0, 1, 0, 2, 4 } }, - { "GeForce GTX TITAN", { 16, 8, 16, 8, 32, 16, 32, 128, 1, 1, 1, 1, 2, 2 } }, - { "GeForce GTX TITAN Black", { 16, 2, 16, 8, 16, 16, 8, 16, 1, 1, 1, 0, 1, 1 } }, - { "GeForce GTX TITAN X", { 16, 8, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 1, 1 } }, - { "TITAN X (Pascal)", { 32, 2, 32, 32, 32, 16, 16, 32, 0, 0, 0, 0, 1, 2 } }, - { "Tesla K20m", { 16, 2, 32, 8, 32, 16, 16, 64, 1, 0, 0, 0, 1, 1 } }, - { "Tesla K40m", { 32, 2, 16, 8, 64, 16, 32, 128, 1, 0, 1, 1, 2, 4 } }, - { "default", { 32, 2, 16, 16, 32, 16, 16, 64, 0, 0, 0, 0, 2, 4 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 2, 8, 8, 32, 8, 8, 64, 0, 0, 0, 0, 4, 4 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemmComplexDouble = { - "Xgemm", Precision::kComplexDouble, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 8, 8, 16, 32, 16, 16, 32, 0, 0, 1, 1, 2, 2 } }, - { "Ellesmere", { 32, 2, 16, 16, 16, 16, 16, 16, 1, 1, 0, 0, 1, 1 } }, - { "Fiji", { 32, 2, 16, 16, 16, 16, 16, 16, 1, 1, 0, 0, 1, 1 } }, - { "Hawaii", { 16, 2, 16, 16, 16, 16, 16, 32, 1, 0, 0, 0, 1, 2 } }, - { "Oland", { 16, 2, 16, 8, 16, 16, 32, 128, 0, 0, 0, 0, 1, 4 } }, - { "Pitcairn", { 32, 2, 16, 8, 32, 8, 32, 32, 0, 1, 1, 0, 1, 1 } }, - { "Tahiti", { 16, 2, 16, 8, 16, 8, 8, 16, 0, 0, 1, 0, 1, 1 } }, - { "Tonga", { 16, 2, 32, 16, 32, 16, 16, 16, 1, 1, 1, 1, 1, 1 } }, - { "default", { 32, 2, 16, 16, 16, 16, 16, 16, 1, 1, 0, 0, 1, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 16, 2, 8, 8, 64, 32, 8, 64, 0, 0, 1, 0, 8, 1 } }, - { "default", { 16, 2, 8, 8, 64, 32, 8, 64, 0, 0, 1, 0, 8, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 16, 2, 32, 8, 64, 16, 8, 128, 0, 1, 0, 1, 2, 1 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 32, 2, 16, 32, 128, 16, 16, 64, 0, 1, 0, 0, 2, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 2, 16, 32, 128, 16, 8, 32, 0, 1, 0, 0, 4, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 32, 2, 8, 8, 128, 8, 16, 128, 0, 0, 0, 1, 1, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 2, 8, 8, 128, 32, 8, 128, 0, 0, 0, 0, 1, 4 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 32, 8, 8, 32, 32, 8, 8, 32, 0, 1, 0, 0, 1, 2 } }, - { "default", { 32, 2, 8, 8, 16, 8, 8, 32, 1, 1, 0, 0, 1, 2 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 32, 2, 16, 16, 16, 16, 8, 32, 0, 0, 1, 0, 1, 1 } }, - { "default", { 32, 2, 16, 16, 16, 16, 8, 32, 0, 0, 1, 0, 1, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 32, 8, 16, 16, 16, 8, 16, 64, 1, 0, 1, 1, 1, 1 } }, - { "GeForce GTX 1070", { 32, 8, 32, 16, 32, 8, 8, 32, 0, 0, 0, 1, 1, 4 } }, - { "GeForce GTX 1080", { 32, 2, 16, 16, 16, 8, 8, 16, 0, 0, 0, 0, 1, 2 } }, - { "GeForce GTX 480", { 16, 2, 32, 32, 32, 32, 8, 32, 0, 0, 1, 0, 1, 1 } }, - { "GeForce GTX 670", { 32, 8, 16, 8, 16, 16, 32, 64, 1, 0, 0, 1, 1, 2 } }, - { "GeForce GTX 680", { 16, 8, 16, 8, 64, 16, 32, 32, 0, 1, 1, 0, 1, 1 } }, - { "GeForce GTX 750", { 32, 2, 8, 32, 32, 8, 8, 64, 0, 0, 1, 0, 1, 4 } }, - { "GeForce GTX 750 Ti", { 32, 2, 8, 8, 16, 8, 8, 32, 0, 0, 0, 0, 1, 1 } }, - { "GeForce GTX 980", { 16, 2, 16, 8, 32, 8, 16, 128, 0, 0, 1, 1, 2, 2 } }, - { "GeForce GTX TITAN Black", { 16, 2, 16, 16, 32, 16, 8, 32, 0, 1, 1, 1, 1, 1 } }, - { "GeForce GTX TITAN X", { 32, 8, 16, 16, 128, 16, 16, 32, 0, 0, 1, 0, 1, 1 } }, - { "TITAN X (Pascal)", { 32, 2, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 1, 1 } }, - { "Tesla K20m", { 32, 2, 32, 8, 32, 16, 16, 64, 0, 0, 1, 0, 1, 1 } }, - { "Tesla K40m", { 16, 8, 8, 8, 32, 32, 16, 32, 0, 0, 1, 0, 1, 1 } }, - { "default", { 32, 2, 16, 16, 32, 16, 16, 32, 0, 0, 0, 0, 1, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 2, 32, 32, 32, 8, 8, 32, 1, 1, 0, 0, 1, 1 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/xgemm/xgemm.hpp b/src/database/kernels/xgemm/xgemm.hpp new file mode 100644 index 00000000..d5d382f0 --- /dev/null +++ b/src/database/kernels/xgemm/xgemm.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm' kernels. +// +// ================================================================================================= + +#include "database/kernels/xgemm/xgemm_16.hpp" +#include "database/kernels/xgemm/xgemm_32.hpp" +#include "database/kernels/xgemm/xgemm_3232.hpp" +#include "database/kernels/xgemm/xgemm_64.hpp" +#include "database/kernels/xgemm/xgemm_6464.hpp" diff --git a/src/database/kernels/xgemm/xgemm_16.hpp b/src/database/kernels/xgemm/xgemm_16.hpp new file mode 100644 index 00000000..32562415 --- /dev/null +++ b/src/database/kernels/xgemm/xgemm_16.hpp @@ -0,0 +1,45 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmHalf = { + "Xgemm", Precision::kHalf, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm/xgemm_32.hpp b/src/database/kernels/xgemm/xgemm_32.hpp new file mode 100644 index 00000000..26428c2f --- /dev/null +++ b/src/database/kernels/xgemm/xgemm_32.hpp @@ -0,0 +1,162 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmSingle = { + "Xgemm", Precision::kSingle, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 2, 8, 8, 16, 16, 16, 64, 1, 1, 0, 0, 1, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 16, 16, 16, 64, 1, 1, 0, 0, 1, 2 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 32, 2, 16, 16, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 2, 16, 16, 64, 8, 16, 128, 0, 0, 0, 0, 2, 8 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 64, 16, 16, 64, 1, 1, 0, 0, 2, 2 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 16, 2, 16, 32, 128, 32, 8, 64, 1, 1, 1, 1, 4, 2 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 32, 128, 32, 8, 64, 1, 1, 1, 1, 4, 2 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 16, 2, 32, 16, 64, 32, 16, 128, 1, 1, 1, 0, 2, 4 } }, + { kDeviceNameDefault , Params{ 16, 2, 32, 16, 64, 32, 16, 128, 1, 1, 1, 0, 2, 4 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 16, 2, 16, 8, 32, 16, 16, 128, 0, 0, 1, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 8, 32, 16, 16, 128, 0, 0, 1, 0, 1, 1 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 32, 2, 16, 32, 128, 16, 8, 64, 0, 0, 0, 0, 4, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 32, 128, 16, 8, 64, 0, 0, 0, 0, 4, 1 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 16, 2, 16, 32, 64, 16, 8, 128, 1, 1, 0, 0, 2, 8 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 32, 64, 16, 8, 128, 1, 1, 0, 0, 2, 8 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 32, 2, 8, 8, 64, 8, 8, 64, 0, 0, 0, 0, 4, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 64, 8, 8, 64, 0, 0, 0, 0, 4, 4 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 32, 2, 8, 16, 128, 8, 8, 128, 0, 0, 1, 1, 8, 8 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 16, 128, 8, 8, 128, 0, 0, 1, 1, 8, 8 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 32, 8, 8, 64, 0, 0, 0, 0, 4, 4 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 16, 2, 8, 8, 64, 8, 16, 16, 0, 0, 1, 1, 8, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 8, 8, 64, 8, 16, 16, 0, 0, 1, 1, 8, 1 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 16, 2, 8, 8, 128, 16, 8, 128, 0, 1, 1, 1, 1, 8 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 8, 32, 32, 64, 32, 16, 64, 1, 1, 1, 0, 2, 2 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 2, 16, 8, 128, 16, 8, 64, 0, 0, 1, 0, 1, 2 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 32, 2, 32, 8, 128, 8, 8, 128, 1, 1, 1, 1, 2, 8 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 16, 2, 8, 8, 128, 8, 8, 128, 1, 1, 1, 0, 1, 8 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 32, 8, 16, 16, 64, 32, 32, 64, 0, 1, 1, 0, 1, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 32, 8, 8, 64, 1, 1, 0, 0, 4, 4 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 32, 2, 8, 8, 128, 32, 16, 64, 0, 0, 1, 0, 4, 2 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 32, 8, 8, 8, 64, 32, 16, 64, 1, 1, 1, 1, 4, 2 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 16, 2, 16, 8, 32, 8, 16, 128, 1, 1, 1, 1, 2, 4 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 32, 2, 16, 16, 64, 16, 8, 64, 1, 1, 1, 0, 2, 4 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 4, 4 } }, + { Name{"Iris "}, Params{ 16, 8, 16, 8, 128, 32, 16, 64, 1, 1, 1, 1, 4, 1 } }, + { Name{"Iris Pro "}, Params{ 16, 2, 16, 8, 64, 32, 32, 128, 1, 1, 1, 0, 4, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 4, 4 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 2, 32, 32, 32, 32, 8, 128, 0, 0, 1, 0, 1, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 32, 32, 32, 32, 8, 128, 0, 0, 1, 0, 1, 4 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 2, 16, 8, 64, 32, 16, 64, 1, 1, 1, 1, 2, 2 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 8, 64, 32, 16, 64, 1, 1, 1, 1, 2, 2 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 2, 16, 8, 32, 8, 16, 64, 1, 1, 1, 1, 2, 4 } }, + { Name{"GeForce GT 650M "}, Params{ 32, 2, 8, 8, 32, 32, 32, 64, 1, 1, 0, 0, 4, 2 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 2, 8, 8, 64, 16, 16, 64, 1, 1, 1, 0, 2, 4 } }, + { Name{"GeForce GTX 680 "}, Params{ 32, 8, 8, 16, 64, 32, 16, 128, 1, 1, 0, 0, 4, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 32, 8, 8, 32, 1, 1, 0, 0, 4, 4 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 8, 32, 16, 64, 8, 8, 64, 1, 1, 1, 0, 2, 2 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 2, 16, 8, 64, 16, 16, 64, 1, 1, 1, 0, 4, 1 } }, + { Name{"Tesla K20m "}, Params{ 16, 2, 32, 16, 64, 16, 8, 64, 1, 1, 1, 0, 2, 4 } }, + { Name{"Tesla K40m "}, Params{ 16, 8, 16, 8, 64, 16, 16, 128, 1, 1, 1, 0, 2, 4 } }, + { kDeviceNameDefault , Params{ 16, 8, 32, 16, 64, 32, 16, 64, 1, 0, 1, 0, 2, 2 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 16, 2, 16, 16, 64, 32, 8, 128, 1, 1, 1, 1, 1, 2 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 2, 16, 16, 128, 32, 8, 64, 1, 1, 0, 1, 8, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 64, 32, 32, 64, 0, 0, 0, 0, 2, 1 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 16, 2, 16, 16, 64, 16, 8, 128, 1, 1, 1, 0, 4, 8 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 2, 8, 16, 128, 8, 8, 128, 1, 1, 1, 1, 4, 8 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 16, 128, 16, 8, 128, 1, 1, 1, 0, 4, 8 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 16, 2, 32, 16, 128, 32, 8, 128, 1, 1, 1, 0, 4, 1 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 2, 16, 8, 64, 8, 8, 64, 1, 1, 1, 1, 4, 8 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 4, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 4, 1 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 4, 2 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 32, 2, 8, 8, 32, 8, 8, 32, 1, 1, 0, 0, 4, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 32, 8, 8, 32, 1, 1, 0, 0, 4, 1 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 32, 8, 8, 32, 1, 1, 0, 0, 4, 2 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm/xgemm_3232.hpp b/src/database/kernels/xgemm/xgemm_3232.hpp new file mode 100644 index 00000000..9b713f36 --- /dev/null +++ b/src/database/kernels/xgemm/xgemm_3232.hpp @@ -0,0 +1,153 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmComplexSingle = { + "Xgemm", Precision::kComplexSingle, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 2, 16, 16, 32, 8, 8, 32, 1, 1, 0, 0, 1, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 8, 8, 32, 1, 1, 0, 0, 1, 4 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 1, 2 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 2, 32, 32, 64, 8, 8, 64, 0, 0, 1, 1, 2, 8 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 16, 32, 32, 32, 1, 1, 0, 0, 1, 1 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 2, 32, 8, 32, 8, 16, 32, 1, 0, 1, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 32, 8, 32, 8, 16, 32, 1, 0, 1, 0, 1, 1 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 32, 2, 16, 8, 32, 32, 32, 128, 1, 0, 0, 1, 2, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 8, 32, 32, 32, 128, 1, 0, 0, 1, 2, 4 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 16, 2, 8, 8, 32, 8, 8, 32, 0, 1, 1, 1, 4, 2 } }, + { kDeviceNameDefault , Params{ 16, 2, 8, 8, 32, 8, 8, 32, 0, 1, 1, 1, 4, 2 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 16, 2, 8, 8, 32, 8, 16, 32, 1, 0, 0, 1, 2, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 8, 8, 32, 8, 16, 32, 1, 0, 0, 1, 2, 1 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 16, 2, 32, 8, 64, 16, 32, 64, 1, 1, 1, 0, 2, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 32, 8, 64, 16, 32, 64, 1, 1, 1, 0, 2, 1 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 16, 2, 8, 8, 32, 32, 8, 32, 0, 1, 0, 0, 2, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 8, 8, 32, 32, 8, 32, 0, 1, 0, 0, 2, 1 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 32, 2, 8, 8, 32, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 32, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 1, 2 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 16, 2, 8, 16, 128, 16, 8, 128, 0, 0, 0, 1, 8, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 8, 16, 128, 16, 8, 128, 0, 0, 0, 1, 8, 1 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 16, 2, 32, 8, 128, 16, 16, 128, 1, 1, 0, 1, 1, 2 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 2, 32, 16, 32, 16, 16, 64, 0, 1, 1, 0, 1, 2 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 2, 16, 16, 64, 8, 16, 64, 0, 1, 0, 0, 4, 4 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 32, 2, 8, 8, 128, 16, 32, 128, 0, 0, 0, 0, 1, 4 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 2, 8, 8, 128, 32, 8, 128, 0, 0, 0, 0, 1, 4 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 32, 2, 8, 16, 16, 16, 16, 128, 0, 0, 1, 1, 1, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 64, 8, 8, 32, 0, 0, 0, 0, 4, 2 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 16, 8, 8, 16, 64, 32, 8, 32, 0, 0, 0, 0, 2, 1 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 16, 8, 8, 8, 32, 16, 16, 64, 1, 0, 0, 0, 4, 4 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 32, 8, 16, 16, 64, 16, 16, 64, 1, 1, 1, 1, 2, 1 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 32, 2, 16, 16, 64, 16, 16, 64, 1, 1, 0, 0, 4, 4 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 32, 2, 16, 16, 64, 16, 16, 64, 0, 0, 0, 0, 4, 2 } }, + { Name{"Iris "}, Params{ 32, 8, 32, 16, 64, 8, 16, 64, 1, 0, 1, 0, 1, 1 } }, + { Name{"Iris Pro "}, Params{ 16, 2, 8, 8, 32, 32, 8, 32, 1, 1, 1, 1, 1, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 32, 8, 8, 32, 1, 1, 0, 0, 4, 2 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 2, 32, 32, 32, 32, 16, 128, 1, 0, 0, 0, 1, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 32, 32, 32, 32, 16, 128, 1, 0, 0, 0, 1, 4 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 2, 16, 16, 32, 32, 16, 128, 0, 1, 1, 1, 2, 2 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 16, 32, 32, 16, 128, 0, 1, 1, 1, 2, 2 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 8, 32, 32, 64, 32, 16, 128, 1, 0, 1, 0, 1, 4 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 2, 32, 32, 64, 32, 8, 32, 1, 1, 1, 1, 1, 1 } }, + { Name{"GeForce GTX 680 "}, Params{ 16, 2, 32, 16, 64, 32, 32, 128, 1, 0, 0, 0, 2, 2 } }, + { kDeviceNameDefault , Params{ 16, 2, 32, 16, 64, 32, 16, 128, 1, 0, 0, 0, 1, 1 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 8, 16, 16, 64, 32, 16, 64, 1, 1, 1, 0, 1, 1 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 2, 8, 16, 64, 8, 8, 32, 0, 1, 1, 0, 1, 2 } }, + { Name{"Tesla K20m "}, Params{ 32, 2, 8, 16, 64, 8, 16, 64, 1, 0, 0, 0, 1, 4 } }, + { Name{"Tesla K40m "}, Params{ 16, 2, 32, 32, 32, 32, 8, 64, 0, 1, 0, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 128, 8, 8, 64, 0, 1, 0, 1, 8, 2 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 16, 8, 16, 16, 64, 16, 16, 64, 1, 1, 1, 0, 2, 2 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 2, 16, 8, 32, 32, 16, 64, 1, 1, 1, 0, 1, 2 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 16, 32, 16, 16, 64, 1, 1, 1, 0, 1, 2 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 32, 8, 32, 32, 64, 16, 16, 64, 1, 1, 1, 0, 2, 1 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 2, 8, 8, 64, 8, 8, 32, 1, 0, 1, 1, 1, 4 } }, + { kDeviceNameDefault , Params{ 16, 2, 32, 32, 64, 16, 16, 32, 1, 0, 1, 0, 1, 1 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 16, 2, 16, 16, 128, 16, 16, 64, 1, 1, 1, 1, 2, 4 } }, + { Name{"GeForce GTX 1080 "}, Params{ 16, 2, 32, 16, 64, 32, 8, 64, 1, 1, 0, 0, 1, 2 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 2, 32, 32, 64, 8, 8, 32, 1, 1, 0, 0, 2, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 16, 16, 64, 1, 1, 0, 0, 2, 4 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 16, 32, 32, 64, 1, 1, 0, 0, 1, 1 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 8, 8, 32, 1, 1, 0, 0, 2, 1 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm/xgemm_64.hpp b/src/database/kernels/xgemm/xgemm_64.hpp new file mode 100644 index 00000000..cfb78deb --- /dev/null +++ b/src/database/kernels/xgemm/xgemm_64.hpp @@ -0,0 +1,131 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmDouble = { + "Xgemm", Precision::kDouble, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 2, 16, 16, 32, 16, 16, 64, 1, 1, 0, 0, 2, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 16, 16, 64, 1, 1, 0, 0, 2, 2 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 2, 2 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 2, 16, 16, 64, 8, 8, 32, 0, 0, 0, 0, 4, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 16, 32, 32, 32, 1, 1, 0, 0, 1, 1 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 16, 8, 32, 8, 128, 8, 8, 32, 0, 1, 0, 0, 1, 4 } }, + { kDeviceNameDefault , Params{ 16, 8, 32, 8, 128, 8, 8, 32, 0, 1, 0, 0, 1, 4 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 16, 2, 8, 16, 64, 16, 8, 16, 0, 0, 1, 1, 1, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 8, 16, 64, 16, 8, 16, 0, 0, 1, 1, 1, 1 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 32, 2, 32, 16, 64, 8, 16, 32, 0, 0, 0, 0, 1, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 32, 16, 64, 8, 16, 32, 0, 0, 0, 0, 1, 2 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 32, 2, 16, 8, 16, 8, 8, 32, 0, 0, 0, 1, 1, 4 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 8, 16, 8, 8, 32, 0, 0, 0, 1, 1, 4 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 2, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 2, 2 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 16, 16, 32, 1, 1, 0, 0, 2, 2 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 32, 2, 8, 8, 64, 8, 8, 16, 0, 1, 1, 0, 8, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 64, 8, 8, 16, 0, 1, 1, 0, 8, 2 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 16, 2, 32, 8, 128, 16, 16, 128, 1, 1, 1, 1, 2, 8 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 2, 32, 16, 128, 16, 16, 64, 0, 1, 1, 0, 1, 2 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 2, 32, 16, 128, 16, 16, 128, 0, 0, 1, 0, 1, 2 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 32, 2, 16, 8, 128, 8, 8, 64, 1, 0, 0, 1, 2, 8 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 2, 16, 8, 128, 8, 8, 128, 1, 0, 0, 0, 2, 8 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 32, 2, 8, 16, 128, 16, 8, 128, 0, 0, 1, 1, 1, 8 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 64, 8, 8, 64, 1, 1, 0, 0, 1, 4 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 8, 8, 16, 16, 16, 16, 128, 0, 0, 1, 0, 1, 4 } }, + { kDeviceNameDefault , Params{ 32, 8, 8, 16, 16, 16, 16, 128, 0, 0, 1, 0, 1, 4 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 2, 8, 16, 32, 32, 8, 64, 1, 1, 1, 0, 1, 2 } }, + { kDeviceNameDefault , Params{ 16, 2, 8, 16, 32, 32, 8, 64, 1, 1, 1, 0, 1, 2 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 2, 8, 8, 16, 8, 8, 32, 1, 0, 0, 1, 2, 2 } }, + { Name{"GeForce GTX 670 "}, Params{ 32, 8, 16, 32, 128, 16, 8, 32, 0, 1, 1, 0, 1, 1 } }, + { Name{"GeForce GTX 680 "}, Params{ 32, 8, 8, 8, 32, 16, 32, 128, 1, 0, 0, 1, 2, 4 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 32, 128, 16, 32, 128, 0, 0, 0, 0, 1, 1 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 8, 16, 8, 32, 16, 32, 128, 1, 1, 1, 1, 2, 2 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 2, 16, 8, 16, 16, 8, 16, 1, 1, 1, 0, 1, 1 } }, + { Name{"Tesla K20m "}, Params{ 16, 2, 32, 8, 32, 16, 16, 64, 1, 0, 0, 0, 1, 1 } }, + { Name{"Tesla K40m "}, Params{ 32, 2, 16, 8, 64, 16, 32, 128, 1, 0, 1, 1, 2, 4 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 8, 16, 16, 16, 128, 1, 0, 0, 0, 1, 1 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 32, 8, 16, 32, 64, 16, 8, 128, 0, 0, 0, 1, 2, 1 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 2, 8, 8, 32, 16, 16, 32, 0, 0, 0, 0, 4, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 32, 32, 16, 16, 128, 0, 0, 0, 0, 2, 1 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 32, 8, 16, 8, 64, 32, 32, 128, 0, 0, 1, 0, 2, 4 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 16, 8, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 16, 8, 16, 16, 16, 16, 16, 128, 0, 0, 0, 0, 1, 1 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 16, 2, 8, 16, 32, 8, 8, 64, 0, 0, 1, 1, 2, 8 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 2, 16, 16, 32, 16, 16, 64, 0, 0, 0, 0, 2, 4 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 2, 32, 32, 32, 16, 16, 32, 0, 0, 0, 0, 1, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 16, 16, 64, 0, 0, 0, 0, 2, 4 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 16, 16, 64, 0, 0, 0, 0, 2, 4 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 32, 8, 8, 64, 0, 0, 0, 0, 4, 4 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm/xgemm_6464.hpp b/src/database/kernels/xgemm/xgemm_6464.hpp new file mode 100644 index 00000000..f9236718 --- /dev/null +++ b/src/database/kernels/xgemm/xgemm_6464.hpp @@ -0,0 +1,130 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmComplexDouble = { + "Xgemm", Precision::kComplexDouble, {"KWG", "KWI", "MDIMA", "MDIMC", "MWG", "NDIMB", "NDIMC", "NWG", "SA", "SB", "STRM", "STRN", "VWM", "VWN"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 2, 16, 16, 16, 16, 16, 16, 1, 1, 0, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 16, 16, 16, 16, 1, 1, 0, 0, 1, 1 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 32, 2, 16, 16, 16, 16, 16, 16, 1, 1, 0, 0, 1, 1 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 8, 8, 16, 32, 16, 16, 32, 0, 0, 1, 1, 2, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 8, 8, 32, 0, 0, 0, 0, 2, 4 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 16, 2, 16, 16, 16, 16, 16, 32, 1, 0, 0, 0, 1, 2 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 16, 16, 16, 16, 32, 1, 0, 0, 0, 1, 2 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 16, 2, 16, 8, 16, 16, 32, 128, 0, 0, 0, 0, 1, 4 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 8, 16, 16, 32, 128, 0, 0, 0, 0, 1, 4 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 32, 2, 16, 8, 32, 8, 32, 32, 0, 1, 1, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 8, 32, 8, 32, 32, 0, 1, 1, 0, 1, 1 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 16, 2, 16, 8, 16, 8, 8, 16, 0, 0, 1, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 8, 16, 8, 8, 16, 0, 0, 1, 0, 1, 1 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 16, 2, 32, 16, 32, 16, 16, 16, 1, 1, 1, 1, 1, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 32, 16, 32, 16, 16, 16, 1, 1, 1, 1, 1, 1 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 16, 16, 16, 16, 1, 1, 0, 0, 1, 1 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 16, 2, 8, 8, 64, 32, 8, 64, 0, 0, 1, 0, 8, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 8, 8, 64, 32, 8, 64, 0, 0, 1, 0, 8, 1 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 16, 2, 32, 8, 64, 16, 8, 128, 0, 1, 0, 1, 2, 1 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 32, 2, 16, 32, 128, 16, 16, 64, 0, 1, 0, 0, 2, 4 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 2, 16, 32, 128, 16, 8, 32, 0, 1, 0, 0, 4, 1 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 32, 2, 8, 8, 128, 8, 16, 128, 0, 0, 0, 1, 1, 8 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 2, 8, 8, 128, 32, 8, 128, 0, 0, 0, 0, 1, 4 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 32, 8, 8, 32, 32, 8, 8, 32, 0, 1, 0, 0, 1, 2 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 16, 8, 8, 32, 1, 1, 0, 0, 1, 2 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 32, 2, 16, 16, 16, 16, 8, 32, 0, 0, 1, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 16, 16, 8, 32, 0, 0, 1, 0, 1, 1 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 16, 2, 32, 32, 32, 32, 8, 32, 0, 0, 1, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 32, 32, 32, 32, 8, 32, 0, 0, 1, 0, 1, 1 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 32, 8, 16, 16, 16, 8, 16, 64, 1, 0, 1, 1, 1, 1 } }, + { Name{"GeForce GTX 670 "}, Params{ 32, 8, 16, 8, 16, 16, 32, 64, 1, 0, 0, 1, 1, 2 } }, + { Name{"GeForce GTX 680 "}, Params{ 16, 8, 16, 8, 64, 16, 32, 32, 0, 1, 1, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 16, 8, 16, 16, 16, 16, 16, 32, 0, 0, 0, 0, 1, 1 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 2, 16, 16, 32, 16, 8, 32, 0, 1, 1, 1, 1, 1 } }, + { Name{"Tesla K20m "}, Params{ 32, 2, 32, 8, 32, 16, 16, 64, 0, 0, 1, 0, 1, 1 } }, + { Name{"Tesla K40m "}, Params{ 16, 8, 8, 8, 32, 32, 16, 32, 0, 0, 1, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 8, 32, 16, 16, 64, 0, 0, 0, 0, 4, 1 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 32, 2, 8, 32, 32, 8, 8, 64, 0, 0, 1, 0, 1, 4 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 2, 8, 8, 16, 8, 8, 32, 0, 0, 0, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 8, 32, 16, 8, 8, 32, 0, 0, 0, 0, 1, 1 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 16, 2, 16, 8, 32, 8, 16, 128, 0, 0, 1, 1, 2, 2 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 32, 8, 16, 16, 128, 16, 16, 32, 0, 0, 1, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 16, 2, 16, 16, 128, 16, 16, 128, 0, 0, 1, 0, 1, 1 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 32, 8, 32, 16, 32, 8, 8, 32, 0, 0, 0, 1, 1, 4 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 2, 16, 16, 16, 8, 8, 16, 0, 0, 0, 0, 1, 2 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 2, 16, 16, 16, 16, 16, 16, 0, 0, 0, 0, 1, 1 } }, + { kDeviceNameDefault , Params{ 32, 2, 32, 32, 32, 32, 32, 64, 0, 0, 0, 0, 1, 2 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 16, 16, 32, 16, 16, 32, 0, 0, 0, 0, 1, 1 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 2, 32, 32, 32, 8, 8, 32, 1, 1, 0, 0, 1, 1 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm_direct.hpp b/src/database/kernels/xgemm_direct.hpp deleted file mode 100644 index acace63f..00000000 --- a/src/database/kernels/xgemm_direct.hpp +++ /dev/null @@ -1,218 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Xgemm_Direct' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry XgemmDirectHalf = { - "XgemmDirect", Precision::kHalf, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 8, 32, 8, 8, 32, 1, 1, 1, 1, 32 } }, - { "default", { 8, 32, 8, 8, 32, 1, 1, 1, 1, 32 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics Skylake ULT GT2", { 2, 8, 8, 8, 8, 1, 1, 1, 1, 8 } }, - { "default", { 2, 8, 8, 8, 8, 1, 1, 1, 1, 8 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemmDirectSingle = { - "XgemmDirect", Precision::kSingle, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 2, 8, 8, 8, 8, 1, 1, 2, 2, 32 } }, - { "ATI Radeon HD 6750M", { 8, 8, 16, 8, 8, 1, 0, 2, 2, 32 } }, - { "Ellesmere", { 2, 8, 8, 32, 32, 1, 1, 2, 1, 32 } }, - { "Fiji", { 2, 16, 16, 8, 8, 1, 1, 1, 1, 16 } }, - { "Tonga", { 16, 16, 16, 32, 8, 0, 1, 1, 1, 32 } }, - { "Turks", { 2, 8, 8, 8, 8, 1, 1, 1, 1, 16 } }, - { "default", { 2, 16, 16, 8, 8, 1, 1, 1, 1, 16 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 2, 8, 8, 8, 8, 0, 0, 1, 8, 64 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 16, 16, 8, 8, 8, 0, 0, 2, 4, 32 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 2, 8, 8, 8, 8, 0, 0, 2, 2, 64 } }, - { "default", { 2, 8, 8, 8, 8, 1, 1, 4, 2, 32 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics Skylake ULT GT2", { 2, 8, 8, 8, 8, 1, 1, 1, 1, 8 } }, - { "Iris Pro", { 2, 16, 16, 8, 8, 1, 1, 2, 4, 32 } }, - { "default", { 2, 8, 8, 8, 8, 1, 1, 1, 1, 8 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GeForce GT 650M", { 16, 16, 16, 8, 16, 1, 0, 2, 2, 32 } }, - { "GeForce GTX 1080", { 16, 16, 8, 16, 8, 1, 1, 1, 1, 32 } }, - { "GeForce GTX 750 Ti", { 2, 8, 8, 8, 8, 1, 1, 4, 2, 32 } }, - { "GeForce GTX TITAN Black", { 2, 8, 8, 16, 16, 1, 1, 4, 2, 32 } }, - { "TITAN X (Pascal)", { 8, 32, 8, 8, 16, 1, 1, 1, 1, 32 } }, - { "default", { 2, 8, 8, 16, 16, 1, 1, 4, 2, 32 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 2, 8, 8, 8, 8, 1, 1, 2, 1, 16 } }, - { "default", { 2, 8, 8, 8, 8, 1, 1, 2, 1, 16 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 2, 8, 8, 8, 8, 1, 1, 1, 2, 16 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemmDirectComplexSingle = { - "XgemmDirect", Precision::kComplexSingle, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - { "ATI Radeon HD 6750M", { 2, 8, 8, 8, 8, 1, 1, 1, 1, 8 } }, - { "Fiji", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - { "Tonga", { 2, 16, 16, 16, 16, 1, 1, 2, 2, 32 } }, - { "Turks", { 2, 8, 8, 8, 8, 1, 1, 2, 2, 16 } }, - { "default", { 2, 16, 16, 16, 16, 1, 1, 2, 2, 32 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 2, 8, 8, 8, 8, 0, 0, 4, 4, 32 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 2, 16, 16, 8, 8, 1, 1, 1, 4, 32 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 2, 8, 8, 16, 8, 1, 1, 2, 1, 32 } }, - { "default", { 2, 8, 8, 8, 8, 1, 1, 4, 4, 32 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics Skylake ULT GT2", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - { "Iris Pro", { 2, 16, 16, 8, 8, 1, 1, 2, 2, 32 } }, - { "default", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GeForce GTX 1080", { 8, 8, 16, 16, 8, 1, 1, 2, 2, 32 } }, - { "GeForce GTX 750 Ti", { 16, 8, 8, 16, 8, 1, 1, 2, 1, 16 } }, - { "GeForce GTX TITAN Black", { 2, 8, 8, 16, 16, 1, 1, 1, 1, 16 } }, - { "TITAN X (Pascal)", { 2, 16, 16, 8, 8, 1, 1, 1, 1, 16 } }, - { "default", { 2, 8, 8, 8, 8, 1, 1, 1, 2, 16 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 2, 32, 32, 8, 8, 1, 1, 1, 1, 32 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemmDirectDouble = { - "XgemmDirect", Precision::kDouble, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 2, 16, 16, 8, 8, 1, 1, 1, 1, 16 } }, - { "Ellesmere", { 8, 16, 16, 8, 16, 1, 1, 2, 1, 32 } }, - { "Fiji", { 16, 8, 8, 8, 16, 1, 1, 1, 1, 16 } }, - { "Tonga", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 32 } }, - { "default", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 2, 8, 8, 8, 8, 1, 1, 4, 4, 32 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 8, 8, 8, 8, 8, 0, 0, 1, 4, 32 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 2, 8, 8, 8, 8, 1, 1, 4, 4, 32 } }, - { "default", { 2, 8, 8, 8, 8, 1, 1, 4, 2, 32 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GeForce GTX 1080", { 2, 16, 16, 8, 8, 1, 1, 1, 2, 16 } }, - { "GeForce GTX 750 Ti", { 2, 8, 8, 8, 8, 1, 1, 2, 4, 32 } }, - { "GeForce GTX TITAN Black", { 8, 16, 16, 16, 8, 1, 0, 1, 1, 16 } }, - { "TITAN X (Pascal)", { 2, 8, 8, 8, 8, 1, 1, 1, 1, 16 } }, - { "default", { 2, 8, 8, 8, 8, 1, 1, 1, 2, 16 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 2, 8, 8, 8, 8, 1, 1, 2, 2, 16 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemmDirectComplexDouble = { - "XgemmDirect", Precision::kComplexDouble, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - { "Ellesmere", { 16, 32, 32, 16, 8, 0, 0, 1, 1, 32 } }, - { "Fiji", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - { "Tonga", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - { "default", { 2, 16, 16, 16, 16, 1, 1, 1, 1, 16 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 2, 8, 8, 32, 8, 0, 0, 1, 1, 32 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 8, 16, 16, 8, 8, 0, 0, 2, 1, 32 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 8, 16, 8, 8, 8, 0, 0, 2, 2, 32 } }, - { "default", { 2, 8, 8, 8, 8, 1, 1, 2, 2, 16 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GeForce GTX 1080", { 2, 16, 16, 8, 8, 1, 1, 1, 1, 16 } }, - { "GeForce GTX 750 Ti", { 2, 32, 32, 8, 8, 1, 1, 1, 1, 32 } }, - { "GeForce GTX TITAN Black", { 2, 8, 8, 8, 8, 1, 1, 1, 1, 8 } }, - { "TITAN X (Pascal)", { 2, 16, 16, 8, 8, 1, 1, 1, 2, 16 } }, - { "default", { 2, 16, 16, 8, 8, 1, 1, 1, 1, 16 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 2, 8, 8, 8, 8, 1, 1, 1, 2, 16 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/xgemm_direct/xgemm_direct.hpp b/src/database/kernels/xgemm_direct/xgemm_direct.hpp new file mode 100644 index 00000000..9a26e7ce --- /dev/null +++ b/src/database/kernels/xgemm_direct/xgemm_direct.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm_Direct' kernels. +// +// ================================================================================================= + +#include "database/kernels/xgemm_direct/xgemm_direct_16.hpp" +#include "database/kernels/xgemm_direct/xgemm_direct_32.hpp" +#include "database/kernels/xgemm_direct/xgemm_direct_3232.hpp" +#include "database/kernels/xgemm_direct/xgemm_direct_64.hpp" +#include "database/kernels/xgemm_direct/xgemm_direct_6464.hpp" diff --git a/src/database/kernels/xgemm_direct/xgemm_direct_16.hpp b/src/database/kernels/xgemm_direct/xgemm_direct_16.hpp new file mode 100644 index 00000000..49051b7f --- /dev/null +++ b/src/database/kernels/xgemm_direct/xgemm_direct_16.hpp @@ -0,0 +1,45 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm_Direct16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmDirectHalf = { + "XgemmDirect", Precision::kHalf, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 8, 32, 8, 8, 32, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 8, 8, 32, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 32, 8, 8, 32, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 8, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 8, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm_direct/xgemm_direct_32.hpp b/src/database/kernels/xgemm_direct/xgemm_direct_32.hpp new file mode 100644 index 00000000..8fe7b97a --- /dev/null +++ b/src/database/kernels/xgemm_direct/xgemm_direct_32.hpp @@ -0,0 +1,105 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm_Direct32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmDirectSingle = { + "XgemmDirect", Precision::kSingle, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 2, 8, 8, 32, 32, 1, 1, 2, 1, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 32, 32, 1, 1, 2, 1, 32, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 2, 16, 16, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 2, 8, 8, 8, 8, 1, 1, 2, 2, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 16, 16, 16, 32, 8, 0, 1, 1, 1, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 16, 32, 8, 0, 1, 1, 1, 32, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 8, 8, 16, 8, 8, 1, 0, 2, 2, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 8, 16, 8, 8, 1, 0, 2, 2, 32, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 16, 16, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 2, 8, 8, 8, 8, 0, 0, 1, 8, 64, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 16, 16, 8, 8, 8, 0, 0, 2, 4, 32, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 2, 8, 8, 8, 8, 0, 0, 2, 2, 64, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 4, 2, 32, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 8, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 2, 16, 16, 8, 8, 1, 1, 2, 4, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 8, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM3.0", { + { Name{"GeForce GT 650M "}, Params{ 16, 16, 16, 8, 16, 1, 0, 2, 2, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 16, 8, 16, 1, 0, 2, 2, 32, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 2, 8, 8, 16, 16, 1, 1, 4, 2, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 16, 16, 1, 1, 4, 2, 32, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 Ti "}, Params{ 2, 8, 8, 8, 8, 1, 1, 4, 2, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 4, 2, 32, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1080 "}, Params{ 16, 16, 8, 16, 8, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 32, 8, 8, 16, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 4, 2, 32, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 8, 8, 16, 16, 1, 1, 4, 2, 32, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 2, 8, 8, 8, 8, 1, 1, 2, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 2, 1, 16, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 2, 16, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm_direct/xgemm_direct_3232.hpp b/src/database/kernels/xgemm_direct/xgemm_direct_3232.hpp new file mode 100644 index 00000000..592f95c2 --- /dev/null +++ b/src/database/kernels/xgemm_direct/xgemm_direct_3232.hpp @@ -0,0 +1,89 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm_Direct3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmDirectComplexSingle = { + "XgemmDirect", Precision::kComplexSingle, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 2, 16, 16, 16, 16, 1, 1, 2, 2, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 2, 2, 32, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 2, 8, 8, 8, 8, 1, 1, 2, 2, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 2, 2, 16, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 8, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 8, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 2, 2, 32, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 2, 8, 8, 8, 8, 0, 0, 4, 4, 32, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 2, 16, 16, 8, 8, 1, 1, 1, 4, 32, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 2, 8, 8, 16, 8, 1, 1, 2, 1, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 4, 4, 32, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 2, 16, 16, 8, 8, 1, 1, 2, 2, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 2, 8, 8, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 Ti "}, Params{ 16, 8, 8, 16, 8, 1, 1, 2, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 8, 16, 8, 1, 1, 2, 1, 16, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1080 "}, Params{ 8, 8, 16, 16, 8, 1, 1, 2, 2, 32, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 2, 16, 16, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 8, 8, 1, 1, 2, 4, 32, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 2, 16, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 2, 32, 32, 8, 8, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm_direct/xgemm_direct_64.hpp b/src/database/kernels/xgemm_direct/xgemm_direct_64.hpp new file mode 100644 index 00000000..ea2acde6 --- /dev/null +++ b/src/database/kernels/xgemm_direct/xgemm_direct_64.hpp @@ -0,0 +1,76 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm_Direct64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmDirectDouble = { + "XgemmDirect", Precision::kDouble, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 8, 16, 16, 8, 16, 1, 1, 2, 1, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 16, 8, 16, 1, 1, 2, 1, 32, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 16, 8, 8, 8, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 2, 16, 16, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 2, 8, 8, 8, 8, 1, 1, 4, 4, 32, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 8, 8, 8, 8, 8, 0, 0, 1, 4, 32, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 2, 8, 8, 8, 8, 1, 1, 4, 4, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 4, 2, 32, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 8, 16, 16, 16, 8, 1, 0, 1, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 16, 16, 8, 1, 0, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 Ti "}, Params{ 2, 8, 8, 8, 8, 1, 1, 2, 4, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 2, 4, 32, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1080 "}, Params{ 2, 16, 16, 8, 8, 1, 1, 1, 2, 16, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 2, 16, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 2, 2, 16, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm_direct/xgemm_direct_6464.hpp b/src/database/kernels/xgemm_direct/xgemm_direct_6464.hpp new file mode 100644 index 00000000..b8bc380b --- /dev/null +++ b/src/database/kernels/xgemm_direct/xgemm_direct_6464.hpp @@ -0,0 +1,76 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemm_Direct6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemmDirectComplexDouble = { + "XgemmDirect", Precision::kComplexDouble, {"KWID", "MDIMAD", "MDIMCD", "NDIMBD", "NDIMCD", "PADA", "PADB", "VWMD", "VWND", "WGD"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 16, 32, 32, 16, 8, 0, 0, 1, 1, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 32, 32, 16, 8, 0, 0, 1, 1, 32, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 16, 16, 16, 16, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 2, 8, 8, 32, 8, 0, 0, 1, 1, 32, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 8, 16, 16, 8, 8, 0, 0, 2, 1, 32, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 8, 16, 8, 8, 8, 0, 0, 2, 2, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 2, 2, 16, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM3.5", { + { Name{"GeForce GTX TITAN Black "}, Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 8, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 1, 8, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 Ti "}, Params{ 2, 32, 32, 8, 8, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 32, 32, 8, 8, 1, 1, 1, 1, 32, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1080 "}, Params{ 2, 16, 16, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 2, 16, 16, 8, 8, 1, 1, 1, 2, 16, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 16, 16, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 2, 16, 16, 8, 8, 1, 1, 1, 1, 16, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 2, 8, 8, 8, 8, 1, 1, 1, 2, 16, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv.hpp b/src/database/kernels/xgemv.hpp deleted file mode 100644 index c537294a..00000000 --- a/src/database/kernels/xgemv.hpp +++ /dev/null @@ -1,306 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Xgemv' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry XgemvHalf = { - "Xgemv", Precision::kHalf, {"WGS1", "WPT1"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 256, 1 } }, - { "default", { 256, 1 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 64, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 256, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 64, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvSingle = { - "Xgemv", Precision::kSingle, {"WGS1", "WPT1"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 128, 1 } }, - { "ATI Radeon HD 6750M", { 32, 1 } }, - { "Ellesmere", { 256, 1 } }, - { "Fiji", { 128, 1 } }, - { "Hawaii", { 128, 1 } }, - { "Oland", { 128, 1 } }, - { "Pitcairn", { 256, 1 } }, - { "Tahiti", { 256, 1 } }, - { "Tonga", { 128, 2 } }, - { "Turks", { 32, 1 } }, - { "default", { 128, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 128, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 64, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 32, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 64, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 64, 4 } }, - { "default", { 64, 4 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 256, 1 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 64, 1 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 64, 1 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 256, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 32, 1 } }, - { "Iris", { 64, 2 } }, - { "Iris Pro", { 128, 1 } }, - { "default", { 128, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 64, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 256, 1 } }, - { "GeForce GT 650M", { 256, 1 } }, - { "GeForce GTX 1070", { 128, 1 } }, - { "GeForce GTX 1080", { 32, 1 } }, - { "GeForce GTX 480", { 64, 1 } }, - { "GeForce GTX 670", { 64, 1 } }, - { "GeForce GTX 680", { 256, 1 } }, - { "GeForce GTX 750", { 256, 1 } }, - { "GeForce GTX 750 Ti", { 32, 1 } }, - { "GeForce GTX 980", { 128, 1 } }, - { "GeForce GTX TITAN", { 256, 1 } }, - { "GeForce GTX TITAN Black", { 256, 1 } }, - { "GeForce GTX TITAN X", { 256, 1 } }, - { "TITAN X (Pascal)", { 32, 1 } }, - { "Tesla K20m", { 128, 1 } }, - { "Tesla K40m", { 256, 1 } }, - { "default", { 256, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 64, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 128, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvComplexSingle = { - "Xgemv", Precision::kComplexSingle, {"WGS1", "WPT1"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 64, 1 } }, - { "ATI Radeon HD 6750M", { 64, 1 } }, - { "Ellesmere", { 32, 1 } }, - { "Fiji", { 32, 1 } }, - { "Hawaii", { 64, 1 } }, - { "Oland", { 64, 1 } }, - { "Pitcairn", { 64, 1 } }, - { "Tahiti", { 64, 1 } }, - { "Tonga", { 32, 1 } }, - { "Turks", { 64, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 32, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 128, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 128, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 64, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 64, 4 } }, - { "default", { 64, 2 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 64, 1 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 64, 1 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 128, 1 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 256, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 64, 1 } }, - { "Iris", { 256, 1 } }, - { "Iris Pro", { 64, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 64, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 256, 1 } }, - { "GeForce GTX 1070", { 64, 1 } }, - { "GeForce GTX 1080", { 32, 1 } }, - { "GeForce GTX 480", { 64, 1 } }, - { "GeForce GTX 670", { 64, 1 } }, - { "GeForce GTX 680", { 64, 1 } }, - { "GeForce GTX 750", { 128, 1 } }, - { "GeForce GTX 750 Ti", { 32, 1 } }, - { "GeForce GTX TITAN", { 256, 1 } }, - { "GeForce GTX TITAN Black", { 32, 1 } }, - { "TITAN X (Pascal)", { 32, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 64, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvDouble = { - "Xgemv", Precision::kDouble, {"WGS1", "WPT1"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 64, 1 } }, - { "Ellesmere", { 32, 1 } }, - { "Fiji", { 32, 1 } }, - { "Hawaii", { 128, 1 } }, - { "Oland", { 256, 1 } }, - { "Pitcairn", { 256, 1 } }, - { "Tahiti", { 256, 1 } }, - { "Tonga", { 32, 1 } }, - { "default", { 256, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 64, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 64, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 128, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 64, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 64, 4 } }, - { "default", { 64, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 64, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 128, 1 } }, - { "GeForce GTX 1070", { 64, 1 } }, - { "GeForce GTX 1080", { 32, 1 } }, - { "GeForce GTX 480", { 256, 1 } }, - { "GeForce GTX 670", { 128, 1 } }, - { "GeForce GTX 680", { 128, 1 } }, - { "GeForce GTX 750", { 64, 1 } }, - { "GeForce GTX 750 Ti", { 32, 1 } }, - { "GeForce GTX 980", { 64, 1 } }, - { "GeForce GTX TITAN", { 256, 1 } }, - { "GeForce GTX TITAN Black", { 32, 1 } }, - { "GeForce GTX TITAN X", { 64, 1 } }, - { "TITAN X (Pascal)", { 32, 1 } }, - { "Tesla K20m", { 256, 1 } }, - { "Tesla K40m", { 256, 1 } }, - { "default", { 128, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 128, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvComplexDouble = { - "Xgemv", Precision::kComplexDouble, {"WGS1", "WPT1"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 64, 1 } }, - { "Ellesmere", { 32, 1 } }, - { "Fiji", { 64, 1 } }, - { "Hawaii", { 64, 1 } }, - { "Oland", { 256, 1 } }, - { "Pitcairn", { 256, 1 } }, - { "Tahiti", { 256, 1 } }, - { "Tonga", { 64, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 64, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 64, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 128, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 64, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 32, 4 } }, - { "default", { 64, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 64, 1 } }, - { "default", { 64, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 128, 1 } }, - { "GeForce GTX 480", { 64, 1 } }, - { "GeForce GTX 670", { 128, 1 } }, - { "default", { 128, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 64, 1 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/xgemv/xgemv.hpp b/src/database/kernels/xgemv/xgemv.hpp new file mode 100644 index 00000000..081c995f --- /dev/null +++ b/src/database/kernels/xgemv/xgemv.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv' kernels. +// +// ================================================================================================= + +#include "database/kernels/xgemv/xgemv_16.hpp" +#include "database/kernels/xgemv/xgemv_32.hpp" +#include "database/kernels/xgemv/xgemv_3232.hpp" +#include "database/kernels/xgemv/xgemv_64.hpp" +#include "database/kernels/xgemv/xgemv_6464.hpp" diff --git a/src/database/kernels/xgemv/xgemv_16.hpp b/src/database/kernels/xgemv/xgemv_16.hpp new file mode 100644 index 00000000..0db7d960 --- /dev/null +++ b/src/database/kernels/xgemv/xgemv_16.hpp @@ -0,0 +1,46 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvHalf = { + "Xgemv", Precision::kHalf, {"WGS1", "WPT1"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv/xgemv_32.hpp b/src/database/kernels/xgemv/xgemv_32.hpp new file mode 100644 index 00000000..8effec20 --- /dev/null +++ b/src/database/kernels/xgemv/xgemv_32.hpp @@ -0,0 +1,153 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvSingle = { + "Xgemv", Precision::kSingle, {"WGS1", "WPT1"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 32, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GT 650M "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv/xgemv_3232.hpp b/src/database/kernels/xgemv/xgemv_3232.hpp new file mode 100644 index 00000000..747cc1eb --- /dev/null +++ b/src/database/kernels/xgemv/xgemv_3232.hpp @@ -0,0 +1,137 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvComplexSingle = { + "Xgemv", Precision::kComplexSingle, {"WGS1", "WPT1"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 32, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv/xgemv_64.hpp b/src/database/kernels/xgemv/xgemv_64.hpp new file mode 100644 index 00000000..e7b98b64 --- /dev/null +++ b/src/database/kernels/xgemv/xgemv_64.hpp @@ -0,0 +1,122 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvDouble = { + "Xgemv", Precision::kDouble, {"WGS1", "WPT1"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv/xgemv_6464.hpp b/src/database/kernels/xgemv/xgemv_6464.hpp new file mode 100644 index 00000000..dda5c34b --- /dev/null +++ b/src/database/kernels/xgemv/xgemv_6464.hpp @@ -0,0 +1,98 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvComplexDouble = { + "Xgemv", Precision::kComplexDouble, {"WGS1", "WPT1"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 32, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast.hpp b/src/database/kernels/xgemv_fast.hpp deleted file mode 100644 index c3b9103a..00000000 --- a/src/database/kernels/xgemv_fast.hpp +++ /dev/null @@ -1,300 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastHalf = { - "XgemvFast", Precision::kHalf, {"VW2", "WGS2", "WPT2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 1, 32, 1 } }, - { "default", { 1, 32, 1 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 1, 16, 1 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 4, 64, 4 } }, - { "default", { 1, 16, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 16, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastSingle = { - "XgemvFast", Precision::kSingle, {"VW2", "WGS2", "WPT2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 1, 128, 1 } }, - { "ATI Radeon HD 6750M", { 2, 64, 2 } }, - { "Ellesmere", { 1, 64, 1 } }, - { "Fiji", { 1, 64, 2 } }, - { "Hawaii", { 1, 64, 1 } }, - { "Oland", { 1, 64, 1 } }, - { "Pitcairn", { 1, 64, 1 } }, - { "Tahiti", { 1, 64, 1 } }, - { "Tonga", { 1, 16, 4 } }, - { "Turks", { 1, 256, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 1, 32, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 4, 128, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 4, 32, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 1, 64, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 2, 16, 4 } }, - { "default", { 4, 128, 4 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 1, 256, 1 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 2, 32, 2 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 4, 128, 4 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 1, 64, 2 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 2, 32, 2 } }, - { "Iris", { 1, 128, 2 } }, - { "Iris Pro", { 4, 64, 4 } }, - { "default", { 2, 256, 2 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 1, 64, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 2, 256, 2 } }, - { "GeForce GT 650M", { 2, 32, 2 } }, - { "GeForce GTX 1070", { 1, 256, 1 } }, - { "GeForce GTX 1080", { 1, 128, 1 } }, - { "GeForce GTX 480", { 1, 128, 1 } }, - { "GeForce GTX 670", { 2, 256, 2 } }, - { "GeForce GTX 680", { 1, 128, 1 } }, - { "GeForce GTX 750", { 1, 256, 1 } }, - { "GeForce GTX 750 Ti", { 2, 32, 2 } }, - { "GeForce GTX 980", { 1, 256, 1 } }, - { "GeForce GTX TITAN", { 1, 256, 1 } }, - { "GeForce GTX TITAN Black", { 1, 256, 1 } }, - { "GeForce GTX TITAN X", { 1, 64, 1 } }, - { "TITAN X (Pascal)", { 1, 64, 1 } }, - { "Tesla K20m", { 1, 256, 1 } }, - { "Tesla K40m", { 1, 256, 1 } }, - { "default", { 1, 256, 1 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 1, 64, 4 } }, - { "default", { 1, 64, 4 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 64, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastComplexSingle = { - "XgemvFast", Precision::kComplexSingle, {"VW2", "WGS2", "WPT2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 2, 256, 2 } }, - { "ATI Radeon HD 6750M", { 1, 128, 1 } }, - { "Ellesmere", { 1, 64, 1 } }, - { "Fiji", { 1, 16, 1 } }, - { "Hawaii", { 1, 64, 1 } }, - { "Oland", { 1, 64, 1 } }, - { "Pitcairn", { 1, 64, 1 } }, - { "Tahiti", { 1, 128, 1 } }, - { "Tonga", { 2, 32, 2 } }, - { "Turks", { 1, 16, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 2, 64, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 1, 128, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 2, 128, 2 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 4, 64, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 4, 16, 4 } }, - { "default", { 1, 64, 2 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 2, 128, 2 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 1, 32, 2 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 2, 128, 2 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 1, 32, 4 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 1, 32, 1 } }, - { "Iris", { 1, 64, 1 } }, - { "Iris Pro", { 4, 128, 4 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 1, 64, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 256, 1 } }, - { "GeForce GTX 1070", { 1, 64, 1 } }, - { "GeForce GTX 480", { 1, 64, 1 } }, - { "GeForce GTX 670", { 1, 64, 1 } }, - { "GeForce GTX 680", { 1, 64, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 64, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastDouble = { - "XgemvFast", Precision::kDouble, {"VW2", "WGS2", "WPT2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 1, 256, 1 } }, - { "Ellesmere", { 1, 128, 1 } }, - { "Fiji", { 1, 32, 1 } }, - { "Hawaii", { 1, 64, 1 } }, - { "Oland", { 1, 64, 1 } }, - { "Pitcairn", { 1, 64, 1 } }, - { "Tahiti", { 1, 64, 1 } }, - { "Tonga", { 2, 32, 2 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 1, 64, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 4, 128, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 1, 16, 1 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 1, 64, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 1, 16, 4 } }, - { "default", { 1, 64, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 1, 64, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 256, 1 } }, - { "GeForce GTX 1070", { 1, 256, 1 } }, - { "GeForce GTX 1080", { 1, 32, 2 } }, - { "GeForce GTX 480", { 1, 64, 1 } }, - { "GeForce GTX 670", { 1, 128, 1 } }, - { "GeForce GTX 680", { 1, 128, 1 } }, - { "GeForce GTX 750", { 2, 256, 2 } }, - { "GeForce GTX 750 Ti", { 1, 32, 2 } }, - { "GeForce GTX 980", { 1, 64, 1 } }, - { "GeForce GTX TITAN", { 1, 256, 1 } }, - { "GeForce GTX TITAN Black", { 1, 256, 1 } }, - { "GeForce GTX TITAN X", { 1, 128, 1 } }, - { "TITAN X (Pascal)", { 1, 32, 1 } }, - { "Tesla K20m", { 1, 128, 1 } }, - { "Tesla K40m", { 1, 256, 1 } }, - { "default", { 1, 256, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 64, 1 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastComplexDouble = { - "XgemvFast", Precision::kComplexDouble, {"VW2", "WGS2", "WPT2"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 1, 256, 1 } }, - { "Ellesmere", { 1, 16, 1 } }, - { "Fiji", { 1, 16, 1 } }, - { "Hawaii", { 1, 64, 1 } }, - { "Oland", { 1, 256, 1 } }, - { "Pitcairn", { 1, 64, 1 } }, - { "Tahiti", { 1, 64, 1 } }, - { "Tonga", { 1, 32, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 32, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 2, 64, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 1, 64, 4 } }, - { "Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz", { 4, 64, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 1, 16, 2 } }, - { "default", { 4, 64, 4 } }, - } - }, - { // Intel accelerators - kDeviceTypeAccelerator, "Intel", { - { "Intel(R) Many Integrated Core Acceleration Card", { 1, 64, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 1, 128, 1 } }, - { "GeForce GTX 480", { 1, 64, 1 } }, - { "GeForce GTX 670", { 1, 64, 1 } }, - { "default", { 1, 64, 1 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 1, 64, 1 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/xgemv_fast/xgemv_fast.hpp b/src/database/kernels/xgemv_fast/xgemv_fast.hpp new file mode 100644 index 00000000..5cc2ca6e --- /dev/null +++ b/src/database/kernels/xgemv_fast/xgemv_fast.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast' kernels. +// +// ================================================================================================= + +#include "database/kernels/xgemv_fast/xgemv_fast_16.hpp" +#include "database/kernels/xgemv_fast/xgemv_fast_32.hpp" +#include "database/kernels/xgemv_fast/xgemv_fast_3232.hpp" +#include "database/kernels/xgemv_fast/xgemv_fast_64.hpp" +#include "database/kernels/xgemv_fast/xgemv_fast_6464.hpp" diff --git a/src/database/kernels/xgemv_fast/xgemv_fast_16.hpp b/src/database/kernels/xgemv_fast/xgemv_fast_16.hpp new file mode 100644 index 00000000..cad97e20 --- /dev/null +++ b/src/database/kernels/xgemv_fast/xgemv_fast_16.hpp @@ -0,0 +1,46 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastHalf = { + "XgemvFast", Precision::kHalf, {"VW2", "WGS2", "WPT2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 4, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast/xgemv_fast_32.hpp b/src/database/kernels/xgemv_fast/xgemv_fast_32.hpp new file mode 100644 index 00000000..1c0bc49d --- /dev/null +++ b/src/database/kernels/xgemv_fast/xgemv_fast_32.hpp @@ -0,0 +1,153 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastSingle = { + "XgemvFast", Precision::kSingle, {"VW2", "WGS2", "WPT2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 1, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 1, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 2, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 1, 32, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 4, 32, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 2, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 2, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 1, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 2, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 1, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 4, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 2, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GT 650M "}, Params{ 2, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 2, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 2, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast/xgemv_fast_3232.hpp b/src/database/kernels/xgemv_fast/xgemv_fast_3232.hpp new file mode 100644 index 00000000..754d5a17 --- /dev/null +++ b/src/database/kernels/xgemv_fast/xgemv_fast_3232.hpp @@ -0,0 +1,125 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastComplexSingle = { + "XgemvFast", Precision::kComplexSingle, {"VW2", "WGS2", "WPT2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 2, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 2, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 2, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 1, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 2, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 4, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 4, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 2, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 2, 128, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 1, 32, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast/xgemv_fast_64.hpp b/src/database/kernels/xgemv_fast/xgemv_fast_64.hpp new file mode 100644 index 00000000..fb08a3c4 --- /dev/null +++ b/src/database/kernels/xgemv_fast/xgemv_fast_64.hpp @@ -0,0 +1,122 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastDouble = { + "XgemvFast", Precision::kDouble, {"VW2", "WGS2", "WPT2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 2, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 4, 128, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 1, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K20m "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Tesla K40m "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 2, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 256, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.2", { + { Name{"GeForce GTX 980 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN X "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 1, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast/xgemv_fast_6464.hpp b/src/database/kernels/xgemv_fast/xgemv_fast_6464.hpp new file mode 100644 index 00000000..03725979 --- /dev/null +++ b/src/database/kernels/xgemv_fast/xgemv_fast_6464.hpp @@ -0,0 +1,98 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastComplexDouble = { + "XgemvFast", Precision::kComplexDouble, {"VW2", "WGS2", "WPT2"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 1, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 256, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 32, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 32, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 2, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 1, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-3770 CPU @ 3.40GHz "}, Params{ 4, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 1, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel accelerators + kDeviceTypeAccelerator, "Intel", { + { "default", { + { Name{"Intel(R) Many Integrated Core Acceleration Card "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 1, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 1, 64, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast_rot.hpp b/src/database/kernels/xgemv_fast_rot.hpp deleted file mode 100644 index 7e5905e4..00000000 --- a/src/database/kernels/xgemv_fast_rot.hpp +++ /dev/null @@ -1,213 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast_Rot' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastRotHalf = { - "XgemvFastRot", Precision::kHalf, {"VW3", "WGS3", "WPT3"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 8, 32, 32 } }, - { "default", { 8, 32, 32 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics Skylake ULT GT2", { 8, 128, 32 } }, - { "default", { 8, 128, 32 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 8, 128, 32 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastRotSingle = { - "XgemvFastRot", Precision::kSingle, {"VW3", "WGS3", "WPT3"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 8, 64, 32 } }, - { "ATI Radeon HD 6750M", { 8, 128, 16 } }, - { "Ellesmere", { 8, 32, 32 } }, - { "Fiji", { 4, 32, 16 } }, - { "Tonga", { 8, 128, 32 } }, - { "Turks", { 8, 128, 16 } }, - { "default", { 8, 32, 32 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 32, 32 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 8, 128, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 4, 32, 32 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 8, 16, 8 } }, - { "default", { 8, 32, 32 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 8, 64, 32 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 4, 64, 16 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 2, 32, 16 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 4, 64, 16 } }, - { "Iris Pro", { 4, 16, 16 } }, - { "default", { 4, 64, 16 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GeForce GT 650M", { 8, 32, 16 } }, - { "GeForce GTX 1080", { 8, 32, 32 } }, - { "GeForce GTX 750 Ti", { 8, 32, 32 } }, - { "GeForce GTX TITAN", { 1, 16, 16 } }, - { "GeForce GTX TITAN Black", { 4, 128, 16 } }, - { "TITAN X (Pascal)", { 8, 64, 32 } }, - { "default", { 8, 32, 32 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 4, 64, 16 } }, - { "default", { 4, 64, 16 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 8, 32, 32 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastRotComplexSingle = { - "XgemvFastRot", Precision::kComplexSingle, {"VW3", "WGS3", "WPT3"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 8, 16, 16 } }, - { "ATI Radeon HD 6750M", { 8, 32, 8 } }, - { "Ellesmere", { 2, 32, 16 } }, - { "Fiji", { 4, 32, 32 } }, - { "Tonga", { 4, 32, 32 } }, - { "Turks", { 4, 32, 8 } }, - { "default", { 8, 16, 16 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 32, 32 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 8, 32, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 4, 32, 32 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 4, 16, 16 } }, - { "default", { 4, 32, 32 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 2, 16, 16 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 4, 128, 8 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 4, 32, 8 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 4, 64, 16 } }, - { "Iris Pro", { 4, 16, 16 } }, - { "default", { 2, 32, 8 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 4, 16, 16 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastRotDouble = { - "XgemvFastRot", Precision::kDouble, {"VW3", "WGS3", "WPT3"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 4, 16, 16 } }, - { "Ellesmere", { 4, 16, 16 } }, - { "Fiji", { 4, 32, 32 } }, - { "Tonga", { 4, 16, 16 } }, - { "default", { 4, 16, 16 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 4, 32, 32 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 8, 16, 8 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 4, 32, 32 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 8, 16, 8 } }, - { "default", { 8, 32, 32 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GeForce GTX 1080", { 8, 32, 32 } }, - { "GeForce GTX 750 Ti", { 4, 32, 16 } }, - { "GeForce GTX TITAN", { 1, 16, 16 } }, - { "GeForce GTX TITAN Black", { 1, 16, 16 } }, - { "TITAN X (Pascal)", { 8, 32, 32 } }, - { "default", { 4, 32, 16 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 4, 16, 16 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgemvFastRotComplexDouble = { - "XgemvFastRot", Precision::kComplexDouble, {"VW3", "WGS3", "WPT3"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 4, 32, 16 } }, - { "Ellesmere", { 4, 16, 16 } }, - { "Fiji", { 4, 32, 8 } }, - { "Tonga", { 4, 16, 8 } }, - { "default", { 8, 32, 16 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 2, 16, 16 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 4, 64, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 2, 16, 16 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 8, 16, 16 } }, - { "default", { 8, 16, 16 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 4, 16, 16 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.hpp b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.hpp new file mode 100644 index 00000000..7379eba9 --- /dev/null +++ b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast_Rot' kernels. +// +// ================================================================================================= + +#include "database/kernels/xgemv_fast_rot/xgemv_fast_rot_16.hpp" +#include "database/kernels/xgemv_fast_rot/xgemv_fast_rot_32.hpp" +#include "database/kernels/xgemv_fast_rot/xgemv_fast_rot_3232.hpp" +#include "database/kernels/xgemv_fast_rot/xgemv_fast_rot_64.hpp" +#include "database/kernels/xgemv_fast_rot/xgemv_fast_rot_6464.hpp" diff --git a/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_16.hpp b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_16.hpp new file mode 100644 index 00000000..969df688 --- /dev/null +++ b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_16.hpp @@ -0,0 +1,45 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast_Rot16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastRotHalf = { + "XgemvFastRot", Precision::kHalf, {"VW3", "WGS3", "WPT3"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 8, 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 8, 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_32.hpp b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_32.hpp new file mode 100644 index 00000000..ce80a9f7 --- /dev/null +++ b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_32.hpp @@ -0,0 +1,110 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast_Rot32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastRotSingle = { + "XgemvFastRot", Precision::kSingle, {"VW3", "WGS3", "WPT3"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 4, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 8, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 8, 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 128, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 8, 128, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 128, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 8, 128, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 128, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 8, 128, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 8, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 8, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 4, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 2, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 4, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM3.0", { + { Name{"GeForce GT 650M "}, Params{ 8, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 1, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 4, 128, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 Ti "}, Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1080 "}, Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 64, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 4, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_3232.hpp b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_3232.hpp new file mode 100644 index 00000000..f047b91a --- /dev/null +++ b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_3232.hpp @@ -0,0 +1,77 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast_Rot3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastRotComplexSingle = { + "XgemvFastRot", Precision::kComplexSingle, {"VW3", "WGS3", "WPT3"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 2, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 8, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 4, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 8, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 8, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 2, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 4, 128, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 4, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 4, 64, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 2, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_64.hpp b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_64.hpp new file mode 100644 index 00000000..5f09ef95 --- /dev/null +++ b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_64.hpp @@ -0,0 +1,78 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast_Rot64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastRotDouble = { + "XgemvFastRot", Precision::kDouble, {"VW3", "WGS3", "WPT3"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 8, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 4, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 8, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 1, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 1, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 1, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 Ti "}, Params{ 4, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1080 "}, Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 4, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_6464.hpp b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_6464.hpp new file mode 100644 index 00000000..10d3ee43 --- /dev/null +++ b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot_6464.hpp @@ -0,0 +1,57 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xgemv_Fast_Rot6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgemvFastRotComplexDouble = { + "XgemvFastRot", Precision::kComplexDouble, {"VW3", "WGS3", "WPT3"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 4, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 4, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 32, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 4, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 16, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 8, 32, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 2, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 4, 64, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 2, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 8, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 4, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xger.hpp b/src/database/kernels/xger.hpp deleted file mode 100644 index e17396f6..00000000 --- a/src/database/kernels/xger.hpp +++ /dev/null @@ -1,316 +0,0 @@ - -// ================================================================================================= -// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This -// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- -// width of 100 characters per line. -// -// Author(s): -// Database generator <database.py> -// -// This file populates the database with best-found tuning parameters for the 'Xger' kernels. -// -// ================================================================================================= - -namespace clblast { -namespace database { -// ================================================================================================= - -const Database::DatabaseEntry XgerHalf = { - "Xger", Precision::kHalf, {"WGS1", "WGS2", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "Ellesmere", { 64, 1, 2 } }, - { "default", { 64, 1, 2 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 256, 1, 2 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 64, 1, 4 } }, - { "default", { 4, 8, 2 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 64, 4, 2 } }, - { "default", { 64, 4, 2 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 64, 1, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgerSingle = { - "Xger", Precision::kSingle, {"WGS1", "WGS2", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 256, 1, 1 } }, - { "ATI Radeon HD 6750M", { 16, 16, 4 } }, - { "Ellesmere", { 64, 4, 2 } }, - { "Fiji", { 256, 1, 1 } }, - { "Hawaii", { 64, 2, 1 } }, - { "Oland", { 32, 4, 2 } }, - { "Pitcairn", { 64, 1, 1 } }, - { "Tahiti", { 256, 1, 1 } }, - { "Tonga", { 256, 1, 2 } }, - { "Turks", { 64, 4, 2 } }, - { "default", { 16, 16, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 64, 4, 4 } }, - { "default", { 64, 4, 4 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 32, 4, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 128, 2, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 256, 16, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 256, 4, 4 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 128, 1, 4 } }, - { "default", { 128, 8, 4 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 32, 1, 2 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 256, 2, 2 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 128, 1, 2 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 64, 1, 4 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 32, 4, 4 } }, - { "Iris Pro", { 64, 1, 4 } }, - { "default", { 32, 4, 2 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 128, 1, 2 } }, - { "GeForce GT 650M", { 32, 16, 4 } }, - { "GeForce GTX 1070", { 512, 1, 1 } }, - { "GeForce GTX 1080", { 16, 4, 1 } }, - { "GeForce GTX 480", { 256, 1, 4 } }, - { "GeForce GTX 670", { 32, 8, 2 } }, - { "GeForce GTX 680", { 128, 1, 4 } }, - { "GeForce GTX 750", { 64, 16, 4 } }, - { "GeForce GTX 750 Ti", { 64, 1, 2 } }, - { "GeForce GTX TITAN", { 32, 4, 2 } }, - { "GeForce GTX TITAN Black", { 32, 4, 2 } }, - { "TITAN X (Pascal)", { 512, 2, 1 } }, - { "default", { 128, 1, 2 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 128, 1, 2 } }, - { "default", { 128, 1, 2 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 32, 4, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgerComplexSingle = { - "Xger", Precision::kComplexSingle, {"WGS1", "WGS2", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 64, 4, 1 } }, - { "ATI Radeon HD 6750M", { 16, 16, 1 } }, - { "Ellesmere", { 16, 8, 2 } }, - { "Fiji", { 128, 2, 1 } }, - { "Hawaii", { 64, 1, 2 } }, - { "Oland", { 4, 8, 1 } }, - { "Pitcairn", { 128, 2, 1 } }, - { "Tahiti", { 64, 2, 1 } }, - { "Tonga", { 64, 1, 1 } }, - { "Turks", { 128, 2, 1 } }, - { "default", { 128, 2, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 128, 1, 1 } }, - { "default", { 128, 1, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 128, 2, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 256, 1, 4 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 256, 8, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 256, 2, 4 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 512, 4, 2 } }, - { "default", { 256, 2, 4 } }, - } - }, - { // Intel GPUs - kDeviceTypeGPU, "Intel", { - { "Intel(R) HD Graphics 530", { 32, 1, 2 } }, - { "Intel(R) HD Graphics 5500 BroadWell U-Processor GT2", { 128, 2, 1 } }, - { "Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile", { 512, 1, 1 } }, - { "Intel(R) HD Graphics IvyBridge M GT2", { 256, 1, 2 } }, - { "Intel(R) HD Graphics Skylake ULT GT2", { 16, 1, 1 } }, - { "Iris Pro", { 16, 2, 4 } }, - { "default", { 128, 2, 2 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 64, 4, 2 } }, - { "GeForce GTX 1070", { 16, 64, 2 } }, - { "GeForce GTX 1080", { 32, 2, 1 } }, - { "GeForce GTX 480", { 128, 2, 2 } }, - { "GeForce GTX 670", { 16, 32, 2 } }, - { "GeForce GTX 680", { 32, 4, 2 } }, - { "GeForce GTX 750", { 32, 16, 4 } }, - { "GeForce GTX 750 Ti", { 32, 8, 2 } }, - { "GeForce GTX TITAN", { 16, 16, 2 } }, - { "GeForce GTX TITAN Black", { 16, 16, 2 } }, - { "TITAN X (Pascal)", { 32, 2, 1 } }, - { "default", { 128, 2, 2 } }, - } - }, - { // QUALCOMM GPUs - kDeviceTypeGPU, "QUALCOMM", { - { "QUALCOMM Adreno(TM)", { 64, 1, 4 } }, - { "default", { 64, 1, 4 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 64, 2, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgerDouble = { - "Xger", Precision::kDouble, {"WGS1", "WGS2", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 32, 4, 1 } }, - { "Ellesmere", { 64, 1, 4 } }, - { "Fiji", { 256, 1, 2 } }, - { "Hawaii", { 32, 4, 2 } }, - { "Oland", { 128, 1, 2 } }, - { "Pitcairn", { 64, 1, 1 } }, - { "Tahiti", { 64, 2, 1 } }, - { "Tonga", { 8, 16, 2 } }, - { "default", { 128, 2, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 64, 4, 1 } }, - { "default", { 64, 4, 1 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 256, 1, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 512, 16, 1 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 256, 1, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 256, 4, 4 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 512, 8, 2 } }, - { "default", { 256, 1, 4 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 128, 8, 2 } }, - { "GeForce GTX 1070", { 32, 8, 1 } }, - { "GeForce GTX 1080", { 32, 2, 1 } }, - { "GeForce GTX 480", { 32, 4, 2 } }, - { "GeForce GTX 670", { 32, 32, 2 } }, - { "GeForce GTX 680", { 128, 4, 2 } }, - { "GeForce GTX 750", { 256, 2, 2 } }, - { "GeForce GTX 750 Ti", { 32, 16, 1 } }, - { "GeForce GTX TITAN", { 16, 8, 2 } }, - { "GeForce GTX TITAN Black", { 32, 4, 2 } }, - { "TITAN X (Pascal)", { 32, 2, 1 } }, - { "default", { 128, 1, 2 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 128, 1, 2 } }, - } - }, - } -}; - -// ================================================================================================= - -const Database::DatabaseEntry XgerComplexDouble = { - "Xger", Precision::kComplexDouble, {"WGS1", "WGS2", "WPT"}, { - { // AMD GPUs - kDeviceTypeGPU, "AMD", { - { "AMD Radeon R9 M370X Compute Engine", { 64, 1, 1 } }, - { "Ellesmere", { 8, 16, 1 } }, - { "Fiji", { 64, 4, 2 } }, - { "Hawaii", { 128, 1, 1 } }, - { "Oland", { 16, 16, 2 } }, - { "Pitcairn", { 64, 4, 1 } }, - { "Tahiti", { 32, 4, 1 } }, - { "Tonga", { 16, 4, 1 } }, - { "default", { 32, 4, 1 } }, - } - }, - { // ARM GPUs - kDeviceTypeGPU, "ARM", { - { "Mali-T628", { 64, 2, 4 } }, - { "default", { 64, 2, 4 } }, - } - }, - { // Intel CPUs - kDeviceTypeCPU, "Intel", { - { "Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz", { 128, 4, 4 } }, - { "Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz", { 512, 4, 2 } }, - { "Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz", { 256, 8, 4 } }, - { "Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz", { 512, 2, 2 } }, - { "Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz", { 256, 1, 2 } }, - { "default", { 256, 2, 2 } }, - } - }, - { // NVIDIA GPUs - kDeviceTypeGPU, "NVIDIA", { - { "GRID K520", { 16, 8, 2 } }, - { "GeForce GTX 1070", { 8, 128, 1 } }, - { "GeForce GTX 1080", { 8, 4, 1 } }, - { "GeForce GTX 480", { 64, 2, 2 } }, - { "GeForce GTX 670", { 8, 16, 2 } }, - { "GeForce GTX 680", { 8, 16, 1 } }, - { "GeForce GTX 750", { 8, 32, 4 } }, - { "GeForce GTX 750 Ti", { 32, 8, 2 } }, - { "GeForce GTX TITAN", { 32, 4, 2 } }, - { "GeForce GTX TITAN Black", { 16, 16, 2 } }, - { "TITAN X (Pascal)", { 4, 8, 1 } }, - { "default", { 16, 8, 2 } }, - } - }, - { // Default - kDeviceTypeAll, "default", { - { "default", { 64, 2, 2 } }, - } - }, - } -}; - -// ================================================================================================= -} // namespace database -} // namespace clblast diff --git a/src/database/kernels/xger/xger.hpp b/src/database/kernels/xger/xger.hpp new file mode 100644 index 00000000..284d1fc6 --- /dev/null +++ b/src/database/kernels/xger/xger.hpp @@ -0,0 +1,14 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xger' kernels. +// +// ================================================================================================= + +#include "database/kernels/xger/xger_16.hpp" +#include "database/kernels/xger/xger_32.hpp" +#include "database/kernels/xger/xger_3232.hpp" +#include "database/kernels/xger/xger_64.hpp" +#include "database/kernels/xger/xger_6464.hpp" diff --git a/src/database/kernels/xger/xger_16.hpp b/src/database/kernels/xger/xger_16.hpp new file mode 100644 index 00000000..8d261835 --- /dev/null +++ b/src/database/kernels/xger/xger_16.hpp @@ -0,0 +1,54 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xger16' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgerHalf = { + "Xger", Precision::kHalf, {"WGS1", "WGS2", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 64, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 64, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 256, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 64, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 64, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 64, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xger/xger_32.hpp b/src/database/kernels/xger/xger_32.hpp new file mode 100644 index 00000000..e4e2024c --- /dev/null +++ b/src/database/kernels/xger/xger_32.hpp @@ -0,0 +1,145 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xger32' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgerSingle = { + "Xger", Precision::kSingle, {"WGS1", "WGS2", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 64, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 256, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 256, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 64, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 64, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 256, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 256, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 64, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 16, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 32, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 128, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 256, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 256, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 128, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 256, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 64, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 32, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 64, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 256, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GT 650M "}, Params{ 32, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 32, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 128, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 64, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 64, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 512, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 512, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 512, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xger/xger_3232.hpp b/src/database/kernels/xger/xger_3232.hpp new file mode 100644 index 00000000..4b67b9da --- /dev/null +++ b/src/database/kernels/xger/xger_3232.hpp @@ -0,0 +1,144 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xger3232' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgerComplexSingle = { + "Xger", Precision::kComplexSingle, {"WGS1", "WGS2", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 16, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 64, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 64, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 4, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 4, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 64, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 64, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Turks", { + { Name{"AMD Radeon HD 6770M "}, Params{ 128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Vancouver", { + { Name{"ATI Radeon HD 6750M "}, Params{ 16, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 128, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 128, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 256, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 256, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 256, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 512, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel GPUs + kDeviceTypeGPU, "Intel", { + { "default", { + { Name{"Intel(R) HD Graphics 530 "}, Params{ 32, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics 5500 BroadWell U-Processor GT"}, Params{ 128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Haswell Ultrabook GT2 Mobile "}, Params{ 512, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics IvyBridge M GT2 "}, Params{ 256, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) HD Graphics Skylake ULT GT2 "}, Params{ 16, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Iris Pro "}, Params{ 16, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 128, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 64, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 16, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 32, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 16, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 16, 64, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // QUALCOMM GPUs + kDeviceTypeGPU, "QUALCOMM", { + { "default", { + { Name{"QUALCOMM Adreno(TM) "}, Params{ 64, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 64, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xger/xger_64.hpp b/src/database/kernels/xger/xger_64.hpp new file mode 100644 index 00000000..cea7b076 --- /dev/null +++ b/src/database/kernels/xger/xger_64.hpp @@ -0,0 +1,115 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xger64' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgerDouble = { + "Xger", Precision::kDouble, {"WGS1", "WGS2", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 64, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 256, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 64, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 64, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 8, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 64, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 256, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 512, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 256, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 256, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 512, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 128, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 32, 32, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 128, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 16, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 256, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 32, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 2, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 128, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xger/xger_6464.hpp b/src/database/kernels/xger/xger_6464.hpp new file mode 100644 index 00000000..841c5c8e --- /dev/null +++ b/src/database/kernels/xger/xger_6464.hpp @@ -0,0 +1,115 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. It +// is auto-generated by the 'scripts/database/database.py' Python script. +// +// This file populates the database with best-found tuning parameters for the 'Xger6464' kernels. +// +// ================================================================================================= + +namespace clblast { +namespace database { + +const DatabaseEntry XgerComplexDouble = { + "Xger", Precision::kComplexDouble, {"WGS1", "WGS2", "WPT"}, { + { // AMD GPUs + kDeviceTypeGPU, "AMD", { + { "Ellesmere", { + { Name{"AMD Radeon RX 480 "}, Params{ 8, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Fiji", { + { Name{"AMD Radeon R9 Fury X "}, Params{ 64, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"AMD Radeon R9 M370X Compute Engine "}, Params{ 64, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Hawaii", { + { Name{"AMD Radeon R9 290X "}, Params{ 128, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 128, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Oland", { + { Name{"Oland "}, Params{ 16, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Pitcairn", { + { Name{"AMD Radeon R9 270X "}, Params{ 64, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tahiti", { + { Name{"AMD Radeon HD 7970 "}, Params{ 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "Tonga", { + { Name{"AMD Radeon R9 380 "}, Params{ 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 32, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // ARM GPUs + kDeviceTypeGPU, "ARM", { + { "default", { + { Name{"Mali-T628 "}, Params{ 64, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 2, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Intel CPUs + kDeviceTypeCPU, "Intel", { + { "default", { + { Name{"Intel(R) Core(TM) i7-2670QM CPU @ 2.20GHz "}, Params{ 128, 4, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i5-6200U CPU @ 2.30GHz "}, Params{ 512, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7 CPU 920 @ 2.67GHz "}, Params{ 256, 8, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-4790K CPU @ 4.00GHz "}, Params{ 512, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"Intel(R) Core(TM) i7-5930K CPU @ 3.50GHz "}, Params{ 256, 1, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 256, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // NVIDIA GPUs + kDeviceTypeGPU, "NVIDIA", { + { "SM2.0", { + { Name{"GeForce GTX 480 "}, Params{ 64, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 64, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.0", { + { Name{"GRID K520 "}, Params{ 16, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 670 "}, Params{ 8, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 680 "}, Params{ 8, 16, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 16, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM3.5", { + { Name{"GeForce GTX TITAN "}, Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX TITAN Black "}, Params{ 16, 16, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 4, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM5.0", { + { Name{"GeForce GTX 750 "}, Params{ 8, 32, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 750 Ti "}, Params{ 32, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 32, 1, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "SM6.1", { + { Name{"GeForce GTX 1070 "}, Params{ 8, 128, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"GeForce GTX 1080 "}, Params{ 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { Name{"TITAN X (Pascal) "}, Params{ 4, 8, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + { kDeviceNameDefault , Params{ 8, 4, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + { "default", { + { kDeviceNameDefault , Params{ 16, 8, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + { // Default + kDeviceTypeAll, "default", { + { "default", { + { kDeviceNameDefault , Params{ 64, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } }, + } }, + } + }, + } +}; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xtrsv.hpp b/src/database/kernels/xtrsv.hpp index 6633b8b7..2d6afbea 100644 --- a/src/database/kernels/xtrsv.hpp +++ b/src/database/kernels/xtrsv.hpp @@ -15,11 +15,11 @@ namespace clblast { namespace database { // ================================================================================================= -const Database::DatabaseEntry XtrsvHalf = { +const DatabaseEntry XtrsvHalf = { "Xtrsv", Precision::kHalf, {"TRSV_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 32 } }, + { "default", { { kDeviceNameDefault, Params{ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -27,11 +27,11 @@ const Database::DatabaseEntry XtrsvHalf = { // ================================================================================================= -const Database::DatabaseEntry XtrsvSingle = { +const DatabaseEntry XtrsvSingle = { "Xtrsv", Precision::kSingle, {"TRSV_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 32 } }, + { "default", { { kDeviceNameDefault, Params{ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -39,11 +39,11 @@ const Database::DatabaseEntry XtrsvSingle = { // ================================================================================================= -const Database::DatabaseEntry XtrsvComplexSingle = { +const DatabaseEntry XtrsvComplexSingle = { "Xtrsv", Precision::kComplexSingle, {"TRSV_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 32 } }, + { "default", { { kDeviceNameDefault, Params{ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -51,11 +51,11 @@ const Database::DatabaseEntry XtrsvComplexSingle = { // ================================================================================================= -const Database::DatabaseEntry XtrsvDouble = { +const DatabaseEntry XtrsvDouble = { "Xtrsv", Precision::kDouble, {"TRSV_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 32 } }, + { "default", { { kDeviceNameDefault, Params{ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } @@ -63,11 +63,11 @@ const Database::DatabaseEntry XtrsvDouble = { // ================================================================================================= -const Database::DatabaseEntry XtrsvComplexDouble = { +const DatabaseEntry XtrsvComplexDouble = { "Xtrsv", Precision::kComplexDouble, {"TRSV_BLOCK_SIZE"}, { { // Default kDeviceTypeAll, "default", { - { "default", { 32 } }, + { "default", { { kDeviceNameDefault, Params{ 32, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 } } } }, } }, } diff --git a/src/routine.cpp b/src/routine.cpp index 7d4ed76f..758ffa0c 100644 --- a/src/routine.cpp +++ b/src/routine.cpp @@ -51,7 +51,7 @@ const std::unordered_map<std::string, const std::vector<std::string>> Routine::r // The constructor does all heavy work, errors are returned as exceptions Routine::Routine(Queue &queue, EventPointer event, const std::string &name, const std::vector<std::string> &kernel_names, const Precision precision, - const std::vector<Database::DatabaseEntry> &userDatabase, + const std::vector<database::DatabaseEntry> &userDatabase, std::initializer_list<const char *> source): precision_(precision), routine_name_(name), @@ -67,7 +67,7 @@ Routine::Routine(Queue &queue, EventPointer event, const std::string &name, InitProgram(source); } -void Routine::InitDatabase(const std::vector<Database::DatabaseEntry> &userDatabase) { +void Routine::InitDatabase(const std::vector<database::DatabaseEntry> &userDatabase) { for (const auto &kernel_name : kernel_names_) { // Queries the cache to see whether or not the kernel parameter database is already there diff --git a/src/routine.hpp b/src/routine.hpp index 903ccdb1..5e2b4065 100644 --- a/src/routine.hpp +++ b/src/routine.hpp @@ -40,7 +40,7 @@ class Routine { // and routine list, otherwise the caching logic will break. explicit Routine(Queue &queue, EventPointer event, const std::string &name, const std::vector<std::string> &routines, const Precision precision, - const std::vector<Database::DatabaseEntry> &userDatabase, + const std::vector<database::DatabaseEntry> &userDatabase, std::initializer_list<const char *> source); // List of kernel-routine look-ups @@ -59,7 +59,7 @@ class Routine { void InitProgram(std::initializer_list<const char *> source); // Initializes db_, fetching cached database or building one - void InitDatabase(const std::vector<Database::DatabaseEntry> &userDatabase); + void InitDatabase(const std::vector<database::DatabaseEntry> &userDatabase); protected: diff --git a/src/tuning/tuning.hpp b/src/tuning/tuning.hpp index 9bb5836e..1f9b6f4f 100644 --- a/src/tuning/tuning.hpp +++ b/src/tuning/tuning.hpp @@ -66,7 +66,11 @@ void Tuner(int argc, char* argv[]) { auto isAMD = false; auto isARM = false; auto isGPU = false; - { + auto device_type = std::string{}; + auto device_vendor = std::string{}; + auto device_architecture = std::string{}; + auto device_name = std::string{}; + { // In a block such that the platform and the device are destroyed before initializing the tuner const auto platform = Platform(args.platform_id); const auto device = Device(platform, args.device_id); if (!PrecisionSupported<T>(device)) { @@ -76,6 +80,10 @@ void Tuner(int argc, char* argv[]) { isAMD = device.IsAMD(); isARM = device.IsARM(); isGPU = device.IsGPU(); + device_type = GetDeviceType(device); + device_vendor = GetDeviceVendor(device); + device_architecture = GetDeviceArchitecture(device); + device_name = GetDeviceName(device); } // Creates input buffers with random data @@ -159,7 +167,11 @@ void Tuner(int argc, char* argv[]) { auto precision_string = std::to_string(static_cast<size_t>(args.precision)); auto metadata = std::vector<std::pair<std::string,std::string>>{ {"kernel_family", C::KernelFamily()}, - {"precision", precision_string} + {"precision", precision_string}, + {"clblast_device_type", device_type}, + {"clblast_device_vendor", device_vendor}, + {"clblast_device_architecture", device_architecture}, + {"clblast_device_name", device_name} }; for (auto &o: C::GetOptions()) { if (o == kArgM) { metadata.push_back({"arg_m", std::to_string(args.m)}); } diff --git a/src/utilities/device_mapping.hpp b/src/utilities/device_mapping.hpp new file mode 100644 index 00000000..7fdc04a0 --- /dev/null +++ b/src/utilities/device_mapping.hpp @@ -0,0 +1,51 @@ + +// ================================================================================================= +// This file is part of the CLBlast project. The project is licensed under Apache Version 2.0. This +// project loosely follows the Google C++ styleguide and uses a tab-size of two spaces and a max- +// width of 100 characters per line. +// +// Author(s): +// Cedric Nugteren <www.cedricnugteren.nl> +// +// This file describes the mappings of extracted names from OpenCL (device, board, vendor, etc.) to +// more commonly used names to match devices from different vendors and platforms properly. +// +// ================================================================================================= + +#ifndef CLBLAST_UTILITIES_DEVICE_MAPPING_H_ +#define CLBLAST_UTILITIES_DEVICE_MAPPING_H_ + +#include <string> +#include <unordered_map> + +namespace clblast { +// A special namespace to hold all the global constant variables +namespace device_mapping { + +// ================================================================================================= + +// Alternative names for some vendor names (top-level) +const std::unordered_map<std::string, std::string> kVendorNames { + { "Intel(R) Corporation", "Intel" }, + { "GenuineIntel", "Intel" }, + { "Advanced Micro Devices, Inc.", "AMD" }, + { "NVIDIA Corporation", "NVIDIA" }, +}; + +// Alternative names for some architectures (mid-level) +const std::unordered_map<std::string, std::string> kArchitectureNames { + {"gfx803", "Fiji"}, + {"gfx900", "Vega"}, +}; + +// Alternative names for some devices (low-level) +const std::unordered_map<std::string, std::string> kDeviceNames { + // Empty +}; + +// ================================================================================================= +} // namespace device_mapping +} // namespace clblast + +// CLBLAST_UTILITIES_DEVICE_MAPPING_H_ +#endif diff --git a/src/utilities/utilities.cpp b/src/utilities/utilities.cpp index 0cd00438..4b8d5a09 100644 --- a/src/utilities/utilities.cpp +++ b/src/utilities/utilities.cpp @@ -11,8 +11,6 @@ // // ================================================================================================= -#include "utilities/utilities.hpp" - #include <string> #include <vector> #include <chrono> @@ -20,6 +18,10 @@ #include <iomanip> #include <cmath> +#include "utilities/utilities.hpp" + +#include "utilities/device_mapping.hpp" + namespace clblast { // ================================================================================================= @@ -390,17 +392,62 @@ template <> Precision PrecisionValue<double2>() { return Precision::kComplexDoub template <> bool PrecisionSupported<float>(const Device &) { return true; } template <> bool PrecisionSupported<float2>(const Device &) { return true; } template <> bool PrecisionSupported<double>(const Device &device) { - auto extensions = device.Capabilities(); - return (extensions.find(kKhronosDoublePrecision) == std::string::npos) ? false : true; + return device.HasExtension(kKhronosDoublePrecision); } template <> bool PrecisionSupported<double2>(const Device &device) { - auto extensions = device.Capabilities(); - return (extensions.find(kKhronosDoublePrecision) == std::string::npos) ? false : true; + return device.HasExtension(kKhronosDoublePrecision); } template <> bool PrecisionSupported<half>(const Device &device) { - auto extensions = device.Capabilities(); if (device.Name() == "Mali-T628") { return true; } // supports fp16 but not cl_khr_fp16 officially - return (extensions.find(kKhronosHalfPrecision) == std::string::npos) ? false : true; + return device.HasExtension(kKhronosHalfPrecision); +} + +// ================================================================================================= + +// High-level info +std::string GetDeviceType(const Device& device) { + return device.Type(); +} +std::string GetDeviceVendor(const Device& device) { + auto device_vendor = device.Vendor(); + + for (auto &find_and_replace : device_mapping::kVendorNames) { // replacing to common names + if (device_vendor == find_and_replace.first) { device_vendor = find_and_replace.second; } + } + return device_vendor; +} + +// Mid-level info +std::string GetDeviceArchitecture(const Device& device) { + auto device_architecture = std::string{""}; + if (device.HasExtension(kKhronosAttributesNVIDIA)) { + device_architecture = device.NVIDIAComputeCapability(); + } + else if (device.HasExtension(kKhronosAttributesAMD)) { + device_architecture = device.Name(); // Name is architecture for AMD APP and AMD ROCm + } + // Note: no else - 'device_architecture' might be the empty string + + for (auto &find_and_replace : device_mapping::kArchitectureNames) { // replacing to common names + if (device_architecture == find_and_replace.first) { device_architecture = find_and_replace.second; } + } + return device_architecture; +} + +// Lowest-level +std::string GetDeviceName(const Device& device) { + auto device_name = std::string{""}; + if (device.HasExtension(kKhronosAttributesAMD)) { + device_name = device.AMDBoardName(); + } + else { + device_name = device.Name(); + } + + for (auto &find_and_replace : device_mapping::kDeviceNames) { // replacing to common names + if (device_name == find_and_replace.first) { device_name = find_and_replace.second; } + } + return device_name; } // ================================================================================================= diff --git a/src/utilities/utilities.hpp b/src/utilities/utilities.hpp index fae69b63..e45c606c 100644 --- a/src/utilities/utilities.hpp +++ b/src/utilities/utilities.hpp @@ -40,6 +40,8 @@ using double2 = std::complex<double>; // Khronos OpenCL extensions const std::string kKhronosHalfPrecision = "cl_khr_fp16"; const std::string kKhronosDoublePrecision = "cl_khr_fp64"; +const std::string kKhronosAttributesAMD = "cl_amd_device_attribute_query"; +const std::string kKhronosAttributesNVIDIA = "cl_nv_device_attribute_query"; // Catched an unknown error constexpr auto kUnknownError = -999; @@ -121,6 +123,17 @@ constexpr auto kBufScalar = "Scalar"; // ================================================================================================= +#ifdef VERBOSE +inline void log_debug(const std::string &log_string) { + printf("[DEBUG] %s\n", log_string.c_str()); +} +#else +inline void log_debug(const std::string&) { } +#endif + + +// ================================================================================================= + // Converts a regular or complex type to it's base type (e.g. float2 to float) template <typename T> struct BaseType { using Type = T; }; template <> struct BaseType<float2> { using Type = float; }; @@ -306,6 +319,14 @@ template <typename T> bool PrecisionSupported(const Device &device); // ================================================================================================= + +// Device information in a specific CLBlast form +std::string GetDeviceType(const Device& device); +std::string GetDeviceVendor(const Device& device); +std::string GetDeviceArchitecture(const Device& device); +std::string GetDeviceName(const Device& device); + +// ================================================================================================= } // namespace clblast // CLBLAST_UTILITIES_H_ |