summaryrefslogtreecommitdiff
path: root/src/database/database.cpp
diff options
context:
space:
mode:
authorCedric Nugteren <web@cedricnugteren.nl>2017-09-16 18:02:37 +0200
committerCedric Nugteren <web@cedricnugteren.nl>2017-09-16 18:02:37 +0200
commit4e317f5e85916a275ff3d22225f7cd42cea03d9b (patch)
tree5e87f7a3750e51cd5e8225a04fa09470c949b97d /src/database/database.cpp
parentc21878eccee068a039f6c9567f8286c18751c69a (diff)
Improved compilation time of the tuner database
Diffstat (limited to 'src/database/database.cpp')
-rw-r--r--src/database/database.cpp18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/database/database.cpp b/src/database/database.cpp
index 9d9898e2..9a2d5c06 100644
--- a/src/database/database.cpp
+++ b/src/database/database.cpp
@@ -38,10 +38,6 @@
namespace clblast {
// =================================================================================================
-namespace database {
-extern const DatabaseEntry CopyHalf;
-}
-
// Initializes the databases
const std::vector<database::DatabaseEntry> Database::database = std::vector<database::DatabaseEntry>{
database::XaxpyHalf, database::XaxpySingle, database::XaxpyDouble, database::XaxpyComplexSingle, database::XaxpyComplexDouble,
@@ -202,14 +198,15 @@ database::Parameters Database::SearchDevice(const std::string &target_device,
const std::vector<database::DatabaseDevice> &devices,
const std::vector<std::string> &parameter_names) const {
for (auto &device: devices) {
- if (device.name == target_device) {
+ const auto device_name = CharArrayToString(device.name);
+ if (device_name == target_device) {
log_debug("Found parameters for device type '" + target_device + "'");
// Sets the parameters accordingly
auto parameters = database::Parameters();
- if (parameter_names.size() != device.parameters.size()) { return database::Parameters(); } // ERROR
+ if (parameter_names.size() > device.parameters.size()) { return database::Parameters(); } // ERROR
for (auto i = size_t{0}; i < parameter_names.size(); ++i) {
- parameters[parameter_names[i]] = device.parameters[i];
+ parameters[parameter_names[i]] = static_cast<size_t>(device.parameters[i]);
}
return parameters;
}
@@ -217,5 +214,12 @@ database::Parameters Database::SearchDevice(const std::string &target_device,
return database::Parameters();
}
+// Helper to convert from database format to proper types
+std::string Database::CharArrayToString(const database::Name char_array) const {
+ auto result = std::string(char_array.data());
+ result.erase(result.find_last_not_of(" \t\n\r\f\v") + 1);
+ return result;
+}
+
// =================================================================================================
} // namespace clblast