diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2017-02-12 12:02:39 +0100 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2017-02-12 12:02:39 +0100 |
commit | 345a5feb9a18641ceffd7ce5e0cb9387686cf32c (patch) | |
tree | cdae4f7fd42f4b23349867243434a1d648ed3e41 /src/database/database.cpp | |
parent | faa842b927ede6df1763607e3732151162875d73 (diff) |
Split the database into several smaller cached per-kernel databases (in preparation of per-kernel database overrides)
Diffstat (limited to 'src/database/database.cpp')
-rw-r--r-- | src/database/database.cpp | 23 |
1 files changed, 10 insertions, 13 deletions
diff --git a/src/database/database.cpp b/src/database/database.cpp index c1cb9d56..8019d558 100644 --- a/src/database/database.cpp +++ b/src/database/database.cpp @@ -63,7 +63,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::vector<std::string> &kernels, +Database::Database(const Device &device, const std::string &kernel_name, const Precision precision, const std::vector<const DatabaseEntry*> &overlay): parameters_(std::make_shared<Parameters>()) { @@ -79,20 +79,17 @@ Database::Database(const Device &device, const std::vector<std::string> &kernels } } - // Iterates over all kernels to include, and retrieves the parameters for each of them - for (auto &kernel: kernels) { - auto search_result = ParametersPtr{}; - - for (auto &db: { database, overlay}) { - search_result = Search(kernel, device_type, device_vendor, device_name, precision, db); - if (search_result) { - parameters_->insert(search_result->begin(), search_result->end()); - break; - } + // Searches potentially multiple databases + auto search_result = ParametersPtr{}; + for (auto &db: { overlay, database}) { + search_result = Search(kernel_name, device_type, device_vendor, device_name, precision, db); + if (search_result) { + parameters_->insert(search_result->begin(), search_result->end()); + break; } - - if (!search_result) { throw RuntimeErrorCode(StatusCode::kDatabaseError); } } + + if (!search_result) { throw RuntimeErrorCode(StatusCode::kDatabaseError); } } // ================================================================================================= |