diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2017-12-27 20:05:31 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2017-12-27 20:05:31 +0100 |
commit | 936cf2668d478853e80dcde9955ecc07cb13f274 (patch) | |
tree | 44bd0c99699ed66203348fd1401e3b5bb3497eee | |
parent | bd540829ea1954c3b367ec70aa8c5811b643422b (diff) | |
parent | 1e738db6dd84d552550a15473abdda83e88f4c80 (diff) |
Merge pull request #234 from CNugteren/database_compilation_split
Database compilation split
36 files changed, 473 insertions, 97 deletions
@@ -5,6 +5,7 @@ Development (next version) - Added OpenCL pre-processor to unroll loops and perform array-to-register promotions for compilers which don't do this themselves (ARM Mali) - greatly improves performance on these platforms - Added first tuners for the TRSV (block size) and TRSM (invert kernel) routines +- Improved compilation time by splitting the tuning database into multiple compilation units - Various minor fixes and enhancements - Added tuned parameters for various devices (see README) diff --git a/CMakeLists.txt b/CMakeLists.txt index b0a2759c..53944b25 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -285,6 +285,7 @@ foreach(ROUTINE ${LEVELX_ROUTINES}) set(HEADERS ${HEADERS} src/routines/levelx/${ROUTINE}.hpp) endforeach() foreach(DATABASE ${DATABASES}) + set(SOURCES ${SOURCES} src/database/kernels/${DATABASE}/${DATABASE}.cpp) 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) diff --git a/scripts/database/database/clblast.py b/scripts/database/database/clblast.py index 40e67b55..6625c808 100644 --- a/scripts/database/database/clblast.py +++ b/scripts/database/database/clblast.py @@ -90,13 +90,29 @@ def get_cpp_device_vendor(vendor, device_type): def get_cpp_family_includes(family, precisions): result = "\n" - # result += "#include \"clblast.h\"\n" - # result += "#include \"database/database_structure.hpp\"\n" + result += "#include \"database/kernels/%s/%s.hpp\"\n" % (family, family) for precision in precisions: result += "#include \"database/kernels/%s/%s_%s.hpp\"\n" % (family, family, precision) return result +def get_hpp_family_includes(family, precisions): + result = "\n" + result += "#include \"database/database_structure.hpp\"\n" + result += "\n" + result += "namespace clblast {\n" + result += "namespace database {\n" + result += "\n" + camelcase_name = family.title().replace("_", "") + for precision in precisions: + precision_string = precision_to_string(precision) + result += "extern const DatabaseEntry %s%s;\n" % (camelcase_name, precision_string) + result += "\n" + result += "} // namespace database\n" + result += "} // namespace clblast\n" + return result + + def print_as_name(name): return "Name{\"%-50s\"}" % name.strip()[:STRING_LENGTH] @@ -238,8 +254,14 @@ def print_cpp_database(database, output_dir): # Prints the file footer f.write(get_cpp_footer()) + # Creates the combined family sources + full_path = os.path.join(family_path, family_name + ".cpp") + with open(full_path, 'w+') as f: + f.write(get_cpp_header(family_name, "")) + f.write(get_cpp_family_includes(family_name, precisions)) + # 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)) + f.write(get_hpp_family_includes(family_name, precisions)) diff --git a/src/database/database.cpp b/src/database/database.cpp index 56c93f18..ed56c65d 100644 --- a/src/database/database.cpp +++ b/src/database/database.cpp @@ -39,24 +39,6 @@ namespace clblast { // ================================================================================================= -// Initializes the databases -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, - database::XgemvFastHalf, database::XgemvFastSingle, database::XgemvFastDouble, database::XgemvFastComplexSingle, database::XgemvFastComplexDouble, - database::XgemvFastRotHalf, database::XgemvFastRotSingle, database::XgemvFastRotDouble, database::XgemvFastRotComplexSingle, database::XgemvFastRotComplexDouble, - database::XgerHalf, database::XgerSingle, database::XgerDouble, database::XgerComplexSingle, database::XgerComplexDouble, - database::XgemmHalf, database::XgemmSingle, database::XgemmDouble, database::XgemmComplexSingle, database::XgemmComplexDouble, - database::XgemmDirectHalf, database::XgemmDirectSingle, database::XgemmDirectDouble, database::XgemmDirectComplexSingle, database::XgemmDirectComplexDouble, - database::CopyHalf, database::CopySingle, database::CopyDouble, database::CopyComplexSingle, database::CopyComplexDouble, - database::PadHalf, database::PadSingle, database::PadDouble, database::PadComplexSingle, database::PadComplexDouble, - database::TransposeHalf, database::TransposeSingle, database::TransposeDouble, database::TransposeComplexSingle, database::TransposeComplexDouble, - database::PadtransposeHalf, database::PadtransposeSingle, database::PadtransposeDouble, database::PadtransposeComplexSingle, database::PadtransposeComplexDouble, - database::InvertHalf, database::InvertSingle, database::InvertDouble, database::InvertComplexSingle, database::InvertComplexDouble, - database::GemmRoutineHalf, database::GemmRoutineSingle, database::GemmRoutineDouble, database::GemmRoutineComplexSingle, database::GemmRoutineComplexDouble, - database::TrsvRoutineHalf, database::TrsvRoutineSingle, database::TrsvRoutineDouble, database::TrsvRoutineComplexSingle, database::TrsvRoutineComplexDouble -}; 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, @@ -76,6 +58,24 @@ Database::Database(const Device &device, const std::string &kernel_name, const Precision precision, const std::vector<database::DatabaseEntry> &overlay): parameters_(std::make_shared<database::Parameters>()) { + 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, + database::XgemvFastHalf, database::XgemvFastSingle, database::XgemvFastDouble, database::XgemvFastComplexSingle, database::XgemvFastComplexDouble, + database::XgemvFastRotHalf, database::XgemvFastRotSingle, database::XgemvFastRotDouble, database::XgemvFastRotComplexSingle, database::XgemvFastRotComplexDouble, + database::XgerHalf, database::XgerSingle, database::XgerDouble, database::XgerComplexSingle, database::XgerComplexDouble, + database::XgemmHalf, database::XgemmSingle, database::XgemmDouble, database::XgemmComplexSingle, database::XgemmComplexDouble, + database::XgemmDirectHalf, database::XgemmDirectSingle, database::XgemmDirectDouble, database::XgemmDirectComplexSingle, database::XgemmDirectComplexDouble, + database::CopyHalf, database::CopySingle, database::CopyDouble, database::CopyComplexSingle, database::CopyComplexDouble, + database::PadHalf, database::PadSingle, database::PadDouble, database::PadComplexSingle, database::PadComplexDouble, + database::TransposeHalf, database::TransposeSingle, database::TransposeDouble, database::TransposeComplexSingle, database::TransposeComplexDouble, + database::PadtransposeHalf, database::PadtransposeSingle, database::PadtransposeDouble, database::PadtransposeComplexSingle, database::PadtransposeComplexDouble, + database::InvertHalf, database::InvertSingle, database::InvertDouble, database::InvertComplexSingle, database::InvertComplexDouble, + database::GemmRoutineHalf, database::GemmRoutineSingle, database::GemmRoutineDouble, database::GemmRoutineComplexSingle, database::GemmRoutineComplexDouble, + database::TrsvRoutineHalf, database::TrsvRoutineSingle, database::TrsvRoutineDouble, database::TrsvRoutineComplexSingle, database::TrsvRoutineComplexDouble + }; + // Finds device information const auto device_type = GetDeviceType(device); const auto device_vendor = GetDeviceVendor(device); diff --git a/src/database/database.hpp b/src/database/database.hpp index 04e9f095..de4306bc 100644 --- a/src/database/database.hpp +++ b/src/database/database.hpp @@ -35,7 +35,7 @@ class Database { static const std::string kDeviceVendorAll; // The database consists of separate database entries, stored together in a vector - static const std::vector<database::DatabaseEntry> database; + std::vector<database::DatabaseEntry> database; // Database for a special case: Apple CPUs support limited number of threads static const std::vector<database::DatabaseEntry> apple_cpu_fallback; diff --git a/src/database/database_structure.hpp b/src/database/database_structure.hpp index 176fc556..663b69ce 100644 --- a/src/database/database_structure.hpp +++ b/src/database/database_structure.hpp @@ -19,6 +19,13 @@ #include <vector> #include <map> +// Just needed for 'Precision' +#ifdef OPENCL_API + #include "clblast.h" +#elif CUDA_API + #include "clblast_cuda.h" +#endif + namespace clblast { // A special namespace to hold all the global constant variables (including the database entries) namespace database { diff --git a/src/database/kernels/copy/copy.cpp b/src/database/kernels/copy/copy.cpp new file mode 100644 index 00000000..21057ae3 --- /dev/null +++ b/src/database/kernels/copy/copy.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/copy/copy.hpp index 8c6e7e03..7fa06ee5 100644 --- a/src/database/kernels/copy/copy.hpp +++ b/src/database/kernels/copy/copy.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry CopyHalf; +extern const DatabaseEntry CopySingle; +extern const DatabaseEntry CopyComplexSingle; +extern const DatabaseEntry CopyDouble; +extern const DatabaseEntry CopyComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/gemm_routine/gemm_routine.cpp b/src/database/kernels/gemm_routine/gemm_routine.cpp new file mode 100644 index 00000000..7dadf83e --- /dev/null +++ b/src/database/kernels/gemm_routine/gemm_routine.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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 'Gemm_Routine' kernels. +// +// ================================================================================================= + +#include "database/kernels/gemm_routine/gemm_routine.hpp" +#include "database/kernels/gemm_routine/gemm_routine_16.hpp" +#include "database/kernels/gemm_routine/gemm_routine_32.hpp" +#include "database/kernels/gemm_routine/gemm_routine_3232.hpp" +#include "database/kernels/gemm_routine/gemm_routine_64.hpp" +#include "database/kernels/gemm_routine/gemm_routine_6464.hpp" diff --git a/src/database/kernels/gemm_routine/gemm_routine.hpp b/src/database/kernels/gemm_routine/gemm_routine.hpp index f1470252..4b304d92 100644 --- a/src/database/kernels/gemm_routine/gemm_routine.hpp +++ b/src/database/kernels/gemm_routine/gemm_routine.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#include "database/kernels/gemm_routine/gemm_routine_16.hpp" -#include "database/kernels/gemm_routine/gemm_routine_32.hpp" -#include "database/kernels/gemm_routine/gemm_routine_3232.hpp" -#include "database/kernels/gemm_routine/gemm_routine_64.hpp" -#include "database/kernels/gemm_routine/gemm_routine_6464.hpp" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry GemmRoutineHalf; +extern const DatabaseEntry GemmRoutineSingle; +extern const DatabaseEntry GemmRoutineComplexSingle; +extern const DatabaseEntry GemmRoutineDouble; +extern const DatabaseEntry GemmRoutineComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/invert/invert.cpp b/src/database/kernels/invert/invert.cpp new file mode 100644 index 00000000..6e372e4a --- /dev/null +++ b/src/database/kernels/invert/invert.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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 'Invert' kernels. +// +// ================================================================================================= + +#include "database/kernels/invert/invert.hpp" +#include "database/kernels/invert/invert_16.hpp" +#include "database/kernels/invert/invert_32.hpp" +#include "database/kernels/invert/invert_3232.hpp" +#include "database/kernels/invert/invert_64.hpp" +#include "database/kernels/invert/invert_6464.hpp" diff --git a/src/database/kernels/invert/invert.hpp b/src/database/kernels/invert/invert.hpp index 9b7c2d30..5a1e5e76 100644 --- a/src/database/kernels/invert/invert.hpp +++ b/src/database/kernels/invert/invert.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#include "database/kernels/invert/invert_16.hpp" -#include "database/kernels/invert/invert_32.hpp" -#include "database/kernels/invert/invert_3232.hpp" -#include "database/kernels/invert/invert_64.hpp" -#include "database/kernels/invert/invert_6464.hpp" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry InvertHalf; +extern const DatabaseEntry InvertSingle; +extern const DatabaseEntry InvertComplexSingle; +extern const DatabaseEntry InvertDouble; +extern const DatabaseEntry InvertComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/pad/pad.cpp b/src/database/kernels/pad/pad.cpp new file mode 100644 index 00000000..4a4fa6e1 --- /dev/null +++ b/src/database/kernels/pad/pad.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/pad/pad.hpp index bc91c09f..b87fca0b 100644 --- a/src/database/kernels/pad/pad.hpp +++ b/src/database/kernels/pad/pad.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry PadHalf; +extern const DatabaseEntry PadSingle; +extern const DatabaseEntry PadComplexSingle; +extern const DatabaseEntry PadDouble; +extern const DatabaseEntry PadComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/padtranspose/padtranspose.cpp b/src/database/kernels/padtranspose/padtranspose.cpp new file mode 100644 index 00000000..9fb88a9a --- /dev/null +++ b/src/database/kernels/padtranspose/padtranspose.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/padtranspose/padtranspose.hpp index c395653a..786b7270 100644 --- a/src/database/kernels/padtranspose/padtranspose.hpp +++ b/src/database/kernels/padtranspose/padtranspose.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry PadtransposeHalf; +extern const DatabaseEntry PadtransposeSingle; +extern const DatabaseEntry PadtransposeComplexSingle; +extern const DatabaseEntry PadtransposeDouble; +extern const DatabaseEntry PadtransposeComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/transpose/transpose.cpp b/src/database/kernels/transpose/transpose.cpp new file mode 100644 index 00000000..f6df080c --- /dev/null +++ b/src/database/kernels/transpose/transpose.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/transpose/transpose.hpp index fa262c50..e8bd35c7 100644 --- a/src/database/kernels/transpose/transpose.hpp +++ b/src/database/kernels/transpose/transpose.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry TransposeHalf; +extern const DatabaseEntry TransposeSingle; +extern const DatabaseEntry TransposeComplexSingle; +extern const DatabaseEntry TransposeDouble; +extern const DatabaseEntry TransposeComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/trsv_routine/trsv_routine.cpp b/src/database/kernels/trsv_routine/trsv_routine.cpp new file mode 100644 index 00000000..bb5b5fc6 --- /dev/null +++ b/src/database/kernels/trsv_routine/trsv_routine.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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 'Trsv_Routine' kernels. +// +// ================================================================================================= + +#include "database/kernels/trsv_routine/trsv_routine.hpp" +#include "database/kernels/trsv_routine/trsv_routine_16.hpp" +#include "database/kernels/trsv_routine/trsv_routine_32.hpp" +#include "database/kernels/trsv_routine/trsv_routine_3232.hpp" +#include "database/kernels/trsv_routine/trsv_routine_64.hpp" +#include "database/kernels/trsv_routine/trsv_routine_6464.hpp" diff --git a/src/database/kernels/trsv_routine/trsv_routine.hpp b/src/database/kernels/trsv_routine/trsv_routine.hpp index c4659ad1..95bb28c4 100644 --- a/src/database/kernels/trsv_routine/trsv_routine.hpp +++ b/src/database/kernels/trsv_routine/trsv_routine.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#include "database/kernels/trsv_routine/trsv_routine_16.hpp" -#include "database/kernels/trsv_routine/trsv_routine_32.hpp" -#include "database/kernels/trsv_routine/trsv_routine_3232.hpp" -#include "database/kernels/trsv_routine/trsv_routine_64.hpp" -#include "database/kernels/trsv_routine/trsv_routine_6464.hpp" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry TrsvRoutineHalf; +extern const DatabaseEntry TrsvRoutineSingle; +extern const DatabaseEntry TrsvRoutineComplexSingle; +extern const DatabaseEntry TrsvRoutineDouble; +extern const DatabaseEntry TrsvRoutineComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xaxpy/xaxpy.cpp b/src/database/kernels/xaxpy/xaxpy.cpp new file mode 100644 index 00000000..71247b68 --- /dev/null +++ b/src/database/kernels/xaxpy/xaxpy.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/xaxpy/xaxpy.hpp index aa920183..803dcc21 100644 --- a/src/database/kernels/xaxpy/xaxpy.hpp +++ b/src/database/kernels/xaxpy/xaxpy.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry XaxpyHalf; +extern const DatabaseEntry XaxpySingle; +extern const DatabaseEntry XaxpyComplexSingle; +extern const DatabaseEntry XaxpyDouble; +extern const DatabaseEntry XaxpyComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xdot/xdot.cpp b/src/database/kernels/xdot/xdot.cpp new file mode 100644 index 00000000..611af223 --- /dev/null +++ b/src/database/kernels/xdot/xdot.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/xdot/xdot.hpp index 5d54cdc9..ac3a3bcf 100644 --- a/src/database/kernels/xdot/xdot.hpp +++ b/src/database/kernels/xdot/xdot.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry XdotHalf; +extern const DatabaseEntry XdotSingle; +extern const DatabaseEntry XdotComplexSingle; +extern const DatabaseEntry XdotDouble; +extern const DatabaseEntry XdotComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm/xgemm.cpp b/src/database/kernels/xgemm/xgemm.cpp new file mode 100644 index 00000000..1f42e0e0 --- /dev/null +++ b/src/database/kernels/xgemm/xgemm.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/xgemm/xgemm.hpp index d5d382f0..1bf0413d 100644 --- a/src/database/kernels/xgemm/xgemm.hpp +++ b/src/database/kernels/xgemm/xgemm.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry XgemmHalf; +extern const DatabaseEntry XgemmSingle; +extern const DatabaseEntry XgemmComplexSingle; +extern const DatabaseEntry XgemmDouble; +extern const DatabaseEntry XgemmComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemm_direct/xgemm_direct.cpp b/src/database/kernels/xgemm_direct/xgemm_direct.cpp new file mode 100644 index 00000000..b9560563 --- /dev/null +++ b/src/database/kernels/xgemm_direct/xgemm_direct.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/xgemm_direct/xgemm_direct.hpp index 9a26e7ce..1247b152 100644 --- a/src/database/kernels/xgemm_direct/xgemm_direct.hpp +++ b/src/database/kernels/xgemm_direct/xgemm_direct.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry XgemmDirectHalf; +extern const DatabaseEntry XgemmDirectSingle; +extern const DatabaseEntry XgemmDirectComplexSingle; +extern const DatabaseEntry XgemmDirectDouble; +extern const DatabaseEntry XgemmDirectComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv/xgemv.cpp b/src/database/kernels/xgemv/xgemv.cpp new file mode 100644 index 00000000..5944aabd --- /dev/null +++ b/src/database/kernels/xgemv/xgemv.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/xgemv/xgemv.hpp index 081c995f..d8867d70 100644 --- a/src/database/kernels/xgemv/xgemv.hpp +++ b/src/database/kernels/xgemv/xgemv.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry XgemvHalf; +extern const DatabaseEntry XgemvSingle; +extern const DatabaseEntry XgemvComplexSingle; +extern const DatabaseEntry XgemvDouble; +extern const DatabaseEntry XgemvComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast/xgemv_fast.cpp b/src/database/kernels/xgemv_fast/xgemv_fast.cpp new file mode 100644 index 00000000..fabd6003 --- /dev/null +++ b/src/database/kernels/xgemv_fast/xgemv_fast.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/xgemv_fast/xgemv_fast.hpp index 5cc2ca6e..22a8a2d3 100644 --- a/src/database/kernels/xgemv_fast/xgemv_fast.hpp +++ b/src/database/kernels/xgemv_fast/xgemv_fast.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry XgemvFastHalf; +extern const DatabaseEntry XgemvFastSingle; +extern const DatabaseEntry XgemvFastComplexSingle; +extern const DatabaseEntry XgemvFastDouble; +extern const DatabaseEntry XgemvFastComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.cpp b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.cpp new file mode 100644 index 00000000..586b9c27 --- /dev/null +++ b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.hpp index 7379eba9..be2978b5 100644 --- a/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.hpp +++ b/src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry XgemvFastRotHalf; +extern const DatabaseEntry XgemvFastRotSingle; +extern const DatabaseEntry XgemvFastRotComplexSingle; +extern const DatabaseEntry XgemvFastRotDouble; +extern const DatabaseEntry XgemvFastRotComplexDouble; + +} // namespace database +} // namespace clblast diff --git a/src/database/kernels/xger/xger.cpp b/src/database/kernels/xger/xger.cpp new file mode 100644 index 00000000..7217701f --- /dev/null +++ b/src/database/kernels/xger/xger.cpp @@ -0,0 +1,15 @@ + +// ================================================================================================= +// 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.hpp" +#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.hpp b/src/database/kernels/xger/xger.hpp index 284d1fc6..70c9a0ad 100644 --- a/src/database/kernels/xger/xger.hpp +++ b/src/database/kernels/xger/xger.hpp @@ -7,8 +7,16 @@ // // ================================================================================================= -#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" +#include "database/database_structure.hpp" + +namespace clblast { +namespace database { + +extern const DatabaseEntry XgerHalf; +extern const DatabaseEntry XgerSingle; +extern const DatabaseEntry XgerComplexSingle; +extern const DatabaseEntry XgerDouble; +extern const DatabaseEntry XgerComplexDouble; + +} // namespace database +} // namespace clblast |