diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2017-09-16 18:02:37 +0200 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2017-09-16 18:02:37 +0200 |
commit | 4e317f5e85916a275ff3d22225f7cd42cea03d9b (patch) | |
tree | 5e87f7a3750e51cd5e8225a04fa09470c949b97d /src/database/database.cpp | |
parent | c21878eccee068a039f6c9567f8286c18751c69a (diff) |
Improved compilation time of the tuner database
Diffstat (limited to 'src/database/database.cpp')
-rw-r--r-- | src/database/database.cpp | 18 |
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> ¶meter_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 |