summaryrefslogtreecommitdiff
path: root/src/database
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2017-04-10 07:40:27 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2017-04-10 07:40:27 +0200
commit2d45c37676d551f53095f7ffa2f178105f5930b2 (patch)
tree35188644456873d969ae67d49d5393f26aa31d03 /src/database
parent300531b869ca266c22d4580761872a4ebb6a244b (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.cpp56
-rw-r--r--src/database/database.hpp8
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_;