// ================================================================================================= // 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 // // This file implements the header for the tuner functions. This is only used for the optional // and stand-alone tuner binaries and not part of the core of CLBlast. The convention used here is // that X and Y are vectors, while A, B, and C are matrices. // // ================================================================================================= #ifndef CLBLAST_TUNING_H_ #define CLBLAST_TUNING_H_ #include #include #include namespace clblast { // ================================================================================================= // Functions with two or three OpenCL memory buffers template using Tuner2 = std::function&, const std::vector&, std::vector&, cltune::Tuner&)>; template using Tuner3 = std::function&, const std::vector&, const std::vector&, std::vector&, cltune::Tuner&)>; // As above, but now with an additional ID for the variation template using Tuner3V = std::function&, const size_t, const std::vector&, const std::vector&, std::vector&, cltune::Tuner&)>; // Tuner for vector-vector input template void TunerXY(int argc, char* argv[], const Tuner2 &tune_function); // Tuner for matrix-vector-vector input template void TunerAXY(int argc, char* argv[], const size_t num_variations, const Tuner3V &tune_function); // Tuner for matrix-matrix input template void TunerAB(int argc, char* argv[], const Tuner2 &tune_function); // Tuner for matrix-matrix-matrix input template void TunerABC(int argc, char* argv[], const Tuner3 &tune_function); // ================================================================================================= } // namespace clblast // CLBLAST_TUNING_H_ #endif