Skip to content

Commit 9c1c24e

Browse files
Detect metrics library new name
Linux library name changing from libmd.so.1 to libigdmd.so.1 Related-To: LOCI-3159 Signed-off-by: Matias Cabral <[email protected]>
1 parent c90f3b3 commit 9c1c24e

File tree

6 files changed

+35
-12
lines changed

6 files changed

+35
-12
lines changed

level_zero/tools/source/metrics/linux/os_metric_oa_enumeration_imp_linux.cpp

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,11 @@
1818

1919
namespace L0 {
2020

21-
const char *MetricEnumeration::getMetricsDiscoveryFilename() { return "libmd.so.1"; }
21+
void MetricEnumeration::getMetricsDiscoveryFilename(std::vector<const char *> &names) const {
22+
names.clear();
23+
names.push_back("libigdmd.so.1");
24+
names.push_back("libmd.so.1");
25+
}
2226

2327
bool MetricEnumeration::getAdapterId(uint32_t &adapterMajor, uint32_t &adapterMinor) {
2428

level_zero/tools/source/metrics/metric_oa_enumeration_imp.cpp

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -91,18 +91,29 @@ ze_result_t MetricEnumeration::initialize() {
9191

9292
ze_result_t MetricEnumeration::loadMetricsDiscovery() {
9393
// Load library.
94-
hMetricsDiscovery.reset(OaMetricSourceImp::osLibraryLoadFunction(getMetricsDiscoveryFilename()));
94+
std::vector<const char *> libnames;
95+
getMetricsDiscoveryFilename(libnames);
9596

96-
// Load exported functions.
97-
if (hMetricsDiscovery) {
98-
openAdapterGroup = reinterpret_cast<MetricsDiscovery::OpenAdapterGroup_fn>(
99-
hMetricsDiscovery->getProcAddress("OpenAdapterGroup"));
97+
for (auto &name : libnames) {
98+
hMetricsDiscovery.reset(OaMetricSourceImp::osLibraryLoadFunction(name));
99+
100+
// Load exported functions.
101+
if (hMetricsDiscovery) {
102+
openAdapterGroup = reinterpret_cast<MetricsDiscovery::OpenAdapterGroup_fn>(
103+
hMetricsDiscovery->getProcAddress("OpenAdapterGroup"));
104+
}
105+
106+
if (openAdapterGroup == nullptr) {
107+
NEO::printDebugString(NEO::DebugManager.flags.PrintDebugMessages.get(), stderr, "cannot load %s exported functions\n", name);
108+
} else {
109+
NEO::printDebugString(NEO::DebugManager.flags.PrintDebugMessages.get(), stderr, "loaded %s exported functions\n", name);
110+
break;
111+
}
100112
}
101113

102114
if (openAdapterGroup == nullptr) {
103-
NEO::printDebugString(NEO::DebugManager.flags.PrintDebugMessages.get(), stderr, "cannot load %s exported functions\n", MetricEnumeration::getMetricsDiscoveryFilename());
104115
cleanupMetricsDiscovery();
105-
return ZE_RESULT_ERROR_NOT_AVAILABLE;
116+
return ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE;
106117
}
107118

108119
// Return success if exported functions have been loaded.

level_zero/tools/source/metrics/metric_oa_enumeration_imp.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ struct MetricEnumeration {
2828
virtual bool isInitialized();
2929

3030
virtual ze_result_t loadMetricsDiscovery();
31-
static const char *getMetricsDiscoveryFilename();
31+
void getMetricsDiscoveryFilename(std::vector<const char *> &names) const;
3232

3333
protected:
3434
ze_result_t initialize();

level_zero/tools/source/metrics/metric_oa_source.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ bool OaMetricSourceImp::loadDependencies() {
7575
// Set metric context initialization state.
7676
setInitializationState(result
7777
? ZE_RESULT_SUCCESS
78-
: ZE_RESULT_ERROR_UNKNOWN);
78+
: ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE);
7979

8080
return result;
8181
}

level_zero/tools/source/metrics/windows/os_metric_oa_enumeration_imp_windows.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,10 @@
2222

2323
namespace L0 {
2424

25-
const char *MetricEnumeration::getMetricsDiscoveryFilename() { return METRICS_DISCOVERY_NAME; }
25+
void MetricEnumeration::getMetricsDiscoveryFilename(std::vector<const char *> &names) const {
26+
names.clear();
27+
names.push_back(METRICS_DISCOVERY_NAME);
28+
}
2629

2730
bool MetricEnumeration::getAdapterId(uint32_t &major, uint32_t &minor) {
2831

level_zero/tools/test/unit_tests/sources/metrics/test_metric_oa_enumeration_1.cpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,12 @@ TEST_F(MetricEnumerationTest, givenIncorrectMetricDiscoveryWhenLoadMetricsDiscov
5050
mockMetricEnumeration->hMetricsDiscovery = nullptr;
5151
mockMetricEnumeration->openAdapterGroup = nullptr;
5252

53-
EXPECT_EQ(mockMetricEnumeration->baseLoadMetricsDiscovery(), ZE_RESULT_ERROR_NOT_AVAILABLE);
53+
EXPECT_EQ(mockMetricEnumeration->baseLoadMetricsDiscovery(), ZE_RESULT_ERROR_DEPENDENCY_UNAVAILABLE);
54+
}
55+
56+
TEST_F(MetricEnumerationTest, givenForcingValidAdapterGroupDependenciesAreMet) {
57+
58+
EXPECT_EQ(mockMetricEnumeration->baseLoadMetricsDiscovery(), ZE_RESULT_SUCCESS);
5459
}
5560

5661
TEST_F(MetricEnumerationTest, givenIncorrectMetricDiscoveryWhenMetricGroupGetIsCalledThenNoMetricGroupsAreReturned) {

0 commit comments

Comments
 (0)