From 1e738db6dd84d552550a15473abdda83e88f4c80 Mon Sep 17 00:00:00 2001 From: Cedric Nugteren Date: Wed, 27 Dec 2017 12:04:22 +0100 Subject: [PATCH] Split the database into multiple small compilation units --- CHANGELOG | 1 + CMakeLists.txt | 1 + scripts/database/database/clblast.py | 28 +++++++++++++++++-- src/database/database_structure.hpp | 7 +++++ src/database/kernels/copy/copy.cpp | 15 ++++++++++ src/database/kernels/copy/copy.hpp | 18 ++++++++---- .../kernels/gemm_routine/gemm_routine.cpp | 15 ++++++++++ .../kernels/gemm_routine/gemm_routine.hpp | 18 ++++++++---- src/database/kernels/invert/invert.cpp | 15 ++++++++++ src/database/kernels/invert/invert.hpp | 18 ++++++++---- src/database/kernels/pad/pad.cpp | 15 ++++++++++ src/database/kernels/pad/pad.hpp | 18 ++++++++---- .../kernels/padtranspose/padtranspose.cpp | 15 ++++++++++ .../kernels/padtranspose/padtranspose.hpp | 18 ++++++++---- src/database/kernels/transpose/transpose.cpp | 15 ++++++++++ src/database/kernels/transpose/transpose.hpp | 18 ++++++++---- .../kernels/trsv_routine/trsv_routine.cpp | 15 ++++++++++ .../kernels/trsv_routine/trsv_routine.hpp | 18 ++++++++---- src/database/kernels/xaxpy/xaxpy.cpp | 15 ++++++++++ src/database/kernels/xaxpy/xaxpy.hpp | 18 ++++++++---- src/database/kernels/xdot/xdot.cpp | 15 ++++++++++ src/database/kernels/xdot/xdot.hpp | 18 ++++++++---- src/database/kernels/xgemm/xgemm.cpp | 15 ++++++++++ src/database/kernels/xgemm/xgemm.hpp | 18 ++++++++---- .../kernels/xgemm_direct/xgemm_direct.cpp | 15 ++++++++++ .../kernels/xgemm_direct/xgemm_direct.hpp | 18 ++++++++---- src/database/kernels/xgemv/xgemv.cpp | 15 ++++++++++ src/database/kernels/xgemv/xgemv.hpp | 18 ++++++++---- .../kernels/xgemv_fast/xgemv_fast.cpp | 15 ++++++++++ .../kernels/xgemv_fast/xgemv_fast.hpp | 18 ++++++++---- .../kernels/xgemv_fast_rot/xgemv_fast_rot.cpp | 15 ++++++++++ .../kernels/xgemv_fast_rot/xgemv_fast_rot.hpp | 18 ++++++++---- src/database/kernels/xger/xger.cpp | 15 ++++++++++ src/database/kernels/xger/xger.hpp | 18 ++++++++---- 34 files changed, 454 insertions(+), 78 deletions(-) create mode 100644 src/database/kernels/copy/copy.cpp create mode 100644 src/database/kernels/gemm_routine/gemm_routine.cpp create mode 100644 src/database/kernels/invert/invert.cpp create mode 100644 src/database/kernels/pad/pad.cpp create mode 100644 src/database/kernels/padtranspose/padtranspose.cpp create mode 100644 src/database/kernels/transpose/transpose.cpp create mode 100644 src/database/kernels/trsv_routine/trsv_routine.cpp create mode 100644 src/database/kernels/xaxpy/xaxpy.cpp create mode 100644 src/database/kernels/xdot/xdot.cpp create mode 100644 src/database/kernels/xgemm/xgemm.cpp create mode 100644 src/database/kernels/xgemm_direct/xgemm_direct.cpp create mode 100644 src/database/kernels/xgemv/xgemv.cpp create mode 100644 src/database/kernels/xgemv_fast/xgemv_fast.cpp create mode 100644 src/database/kernels/xgemv_fast_rot/xgemv_fast_rot.cpp create mode 100644 src/database/kernels/xger/xger.cpp diff --git a/CHANGELOG b/CHANGELOG index 83d5178b..e2f0d872 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -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_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 #include +// 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