diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2017-04-10 07:40:27 +0200 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2017-04-10 07:40:27 +0200 |
commit | 2d45c37676d551f53095f7ffa2f178105f5930b2 (patch) | |
tree | 35188644456873d969ae67d49d5393f26aa31d03 /src/database | |
parent | 300531b869ca266c22d4580761872a4ebb6a244b (diff) |
Removed const-vector-of-const-objects from the database class to remain according to the C++11 standard
Diffstat (limited to 'src/database')
-rw-r--r-- | src/database/database.cpp | 56 | ||||
-rw-r--r-- | src/database/database.hpp | 8 |
2 files changed, 32 insertions, 32 deletions
diff --git a/src/database/database.cpp b/src/database/database.cpp index fe026577..a1cc3570 100644 --- a/src/database/database.cpp +++ b/src/database/database.cpp @@ -37,29 +37,29 @@ namespace clblast { // ================================================================================================= // Initializes the databases -const std::vector<const Database::DatabaseEntry*> Database::database = { - &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::XtrsvHalf, &database::XtrsvSingle, &database::XtrsvDouble, &database::XtrsvComplexSingle, &database::XtrsvComplexDouble, - &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::KernelSelectionHalf, &database::KernelSelectionSingle, &database::KernelSelectionDouble, &database::KernelSelectionComplexSingle, &database::KernelSelectionComplexDouble +const auto 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::XtrsvHalf, database::XtrsvSingle, database::XtrsvDouble, database::XtrsvComplexSingle, database::XtrsvComplexDouble, + 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::KernelSelectionHalf, database::KernelSelectionSingle, database::KernelSelectionDouble, database::KernelSelectionComplexSingle, database::KernelSelectionComplexDouble }; -const std::vector<const Database::DatabaseEntry*> Database::apple_cpu_fallback = { - &database::XaxpyApple, &database::XdotApple, - &database::XgemvApple, &database::XgemvFastApple, &database::XgemvFastRotApple, &database::XgerApple, &database::XtrsvApple, - &database::XgemmApple, &database::XgemmDirectApple, - &database::CopyApple, &database::PadApple, &database::TransposeApple, &database::PadtransposeApple, - &database::InvertApple +const auto 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, + database::CopyApple, database::PadApple, database::TransposeApple, database::PadtransposeApple, + database::InvertApple }; // The default values @@ -78,7 +78,7 @@ const std::unordered_map<std::string, std::string> Database::kVendorNames{ // 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<const DatabaseEntry*> &overlay): + const Precision precision, const std::vector<DatabaseEntry> &overlay): parameters_(std::make_shared<Parameters>()) { // Finds information of the current device @@ -94,7 +94,7 @@ Database::Database(const Device &device, const std::string &kernel_name, } // Sets the databases to search through - auto databases = std::list<const std::vector<const DatabaseEntry*>>{overlay, database}; + auto databases = std::list<std::vector<DatabaseEntry>>{overlay, database}; // Special case: modifies the database if the device is a CPU with Apple OpenCL #if defined(__APPLE__) || defined(__MACOSX) @@ -148,16 +148,16 @@ Database::ParametersPtr Database::Search(const std::string &this_kernel, const std::string &this_vendor, const std::string &this_device, const Precision this_precision, - const std::vector<const DatabaseEntry*> &this_database) const { + const std::vector<DatabaseEntry> &this_database) const { // Selects the right kernel for (auto &db: this_database) { - if ((db->kernel == this_kernel) && - (db->precision == this_precision || db->precision == Precision::kAny)) { + if ((db.kernel == this_kernel) && + (db.precision == this_precision || db.precision == Precision::kAny)) { // Searches for the right vendor and device type, or selects the default if unavailable. This // assumes that the default vendor / device type is last in the database. - for (auto &vendor: db->vendors) { + for (auto &vendor: db.vendors) { if ((vendor.name == this_vendor || vendor.name == kDeviceVendorAll) && (vendor.type == this_type || vendor.type == database::kDeviceTypeAll)) { diff --git a/src/database/database.hpp b/src/database/database.hpp index e49146c5..82fbc252 100644 --- a/src/database/database.hpp +++ b/src/database/database.hpp @@ -70,16 +70,16 @@ class Database { 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<const DatabaseEntry*> database; + static const std::vector<DatabaseEntry> database; // Database for a special case: Apple CPUs support limited number of threads - static const std::vector<const DatabaseEntry*> apple_cpu_fallback; + static const std::vector<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<const DatabaseEntry*> &overlay); + const Precision precision, const std::vector<DatabaseEntry> &overlay); // Accessor of values by key size_t operator[](const std::string &key) const { return parameters_->find(key)->second; } @@ -96,7 +96,7 @@ class Database { ParametersPtr 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<const DatabaseEntry*> &db) const; + const std::vector<DatabaseEntry> &db) const; // Found parameters suitable for this device/kernel std::shared_ptr<Parameters> parameters_; |