diff options
author | Cedric Nugteren <web@cedricnugteren.nl> | 2017-09-10 16:34:54 +0200 |
---|---|---|
committer | Cedric Nugteren <web@cedricnugteren.nl> | 2017-09-10 16:34:54 +0200 |
commit | 76382ff6c1c882063bab761382438a24af4a87b5 (patch) | |
tree | a6c1feaf32c73eea91611b4564db61276cf2dd0d /src/utilities/utilities.cpp | |
parent | 91ea7fcde2ac274db50b35fbbdb7deb89fb65b51 (diff) |
Added the new vendor-architecture-name hierarchy to the tuners as well
Diffstat (limited to 'src/utilities/utilities.cpp')
-rw-r--r-- | src/utilities/utilities.cpp | 54 |
1 files changed, 52 insertions, 2 deletions
diff --git a/src/utilities/utilities.cpp b/src/utilities/utilities.cpp index 4ff419a5..4b8d5a09 100644 --- a/src/utilities/utilities.cpp +++ b/src/utilities/utilities.cpp @@ -11,8 +11,6 @@ // // ================================================================================================= -#include "utilities/utilities.hpp" - #include <string> #include <vector> #include <chrono> @@ -20,6 +18,10 @@ #include <iomanip> #include <cmath> +#include "utilities/utilities.hpp" + +#include "utilities/device_mapping.hpp" + namespace clblast { // ================================================================================================= @@ -401,4 +403,52 @@ template <> bool PrecisionSupported<half>(const Device &device) { } // ================================================================================================= + +// High-level info +std::string GetDeviceType(const Device& device) { + return device.Type(); +} +std::string GetDeviceVendor(const Device& device) { + auto device_vendor = device.Vendor(); + + for (auto &find_and_replace : device_mapping::kVendorNames) { // replacing to common names + if (device_vendor == find_and_replace.first) { device_vendor = find_and_replace.second; } + } + return device_vendor; +} + +// Mid-level info +std::string GetDeviceArchitecture(const Device& device) { + auto device_architecture = std::string{""}; + if (device.HasExtension(kKhronosAttributesNVIDIA)) { + device_architecture = device.NVIDIAComputeCapability(); + } + else if (device.HasExtension(kKhronosAttributesAMD)) { + device_architecture = device.Name(); // Name is architecture for AMD APP and AMD ROCm + } + // Note: no else - 'device_architecture' might be the empty string + + for (auto &find_and_replace : device_mapping::kArchitectureNames) { // replacing to common names + if (device_architecture == find_and_replace.first) { device_architecture = find_and_replace.second; } + } + return device_architecture; +} + +// Lowest-level +std::string GetDeviceName(const Device& device) { + auto device_name = std::string{""}; + if (device.HasExtension(kKhronosAttributesAMD)) { + device_name = device.AMDBoardName(); + } + else { + device_name = device.Name(); + } + + for (auto &find_and_replace : device_mapping::kDeviceNames) { // replacing to common names + if (device_name == find_and_replace.first) { device_name = find_and_replace.second; } + } + return device_name; +} + +// ================================================================================================= } // namespace clblast |