mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
Metric Api: Moved the initialization to zeInit
Change-Id: Ia390389e514facb3d81cc28d97bf017367e9f728 Signed-off-by: Robert Krzemien <robert.krzemien@intel.com>
This commit is contained in:
committed by
sys_ocldev
parent
70babc4b69
commit
d76515a18d
@@ -13,8 +13,9 @@
|
||||
#include "shared/source/os_interface/device_factory.h"
|
||||
|
||||
#include "level_zero/core/source/device/device.h"
|
||||
#include "level_zero/core/source/driver/driver_handle.h"
|
||||
#include "level_zero/core/source/driver/driver_handle_imp.h"
|
||||
#include "level_zero/core/source/driver/driver_imp.h"
|
||||
#include "level_zero/tools/source/metrics/metric.h"
|
||||
|
||||
#include <memory>
|
||||
#include <thread>
|
||||
@@ -24,8 +25,8 @@ namespace L0 {
|
||||
_ze_driver_handle_t *GlobalDriverHandle;
|
||||
uint32_t driverCount = 1;
|
||||
|
||||
void DriverImp::initialize(bool *result) {
|
||||
*result = false;
|
||||
void DriverImp::initialize(ze_result_t *result) {
|
||||
*result = ZE_RESULT_ERROR_UNINITIALIZED;
|
||||
|
||||
NEO::EnvironmentVariableReader envReader;
|
||||
L0EnvVariables envVariables = {};
|
||||
@@ -33,6 +34,8 @@ void DriverImp::initialize(bool *result) {
|
||||
envReader.getSetting("ZE_AFFINITY_MASK", std::string(""));
|
||||
envVariables.programDebugging =
|
||||
envReader.getSetting("ZET_ENABLE_PROGRAM_DEBUGGING", false);
|
||||
envVariables.metrics =
|
||||
envReader.getSetting("ZE_ENABLE_METRICS", false);
|
||||
|
||||
auto executionEnvironment = new NEO::ExecutionEnvironment();
|
||||
UNRECOVERABLE_IF(nullptr == executionEnvironment);
|
||||
@@ -47,20 +50,29 @@ void DriverImp::initialize(bool *result) {
|
||||
if (!neoDevices.empty()) {
|
||||
GlobalDriverHandle = DriverHandle::create(std::move(neoDevices), envVariables);
|
||||
if (GlobalDriverHandle != nullptr) {
|
||||
*result = true;
|
||||
*result = ZE_RESULT_SUCCESS;
|
||||
|
||||
if (envVariables.metrics) {
|
||||
*result = MetricContext::enableMetricApi();
|
||||
if (*result != ZE_RESULT_SUCCESS) {
|
||||
delete GlobalDriver;
|
||||
GlobalDriverHandle = nullptr;
|
||||
GlobalDriver = nullptr;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
bool DriverImp::initStatus(false);
|
||||
ze_result_t DriverImp::initStatus(ZE_RESULT_ERROR_UNINITIALIZED);
|
||||
|
||||
ze_result_t DriverImp::driverInit(ze_init_flag_t flag) {
|
||||
std::call_once(initDriverOnce, [this]() {
|
||||
bool result;
|
||||
ze_result_t result;
|
||||
this->initialize(&result);
|
||||
initStatus = result;
|
||||
});
|
||||
return ((initStatus) ? ZE_RESULT_SUCCESS : ZE_RESULT_ERROR_UNINITIALIZED);
|
||||
return initStatus;
|
||||
}
|
||||
|
||||
ze_result_t driverHandleGet(uint32_t *pCount, ze_driver_handle_t *phDriverHandles) {
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
namespace L0 {
|
||||
struct Driver {
|
||||
virtual ze_result_t driverInit(_ze_init_flag_t) = 0;
|
||||
virtual void initialize(bool *result) = 0;
|
||||
virtual void initialize(ze_result_t *result) = 0;
|
||||
static Driver *get() { return driver; }
|
||||
virtual ~Driver() = default;
|
||||
|
||||
|
||||
@@ -18,16 +18,17 @@ class DriverImp : public Driver {
|
||||
public:
|
||||
ze_result_t driverInit(_ze_init_flag_t) override;
|
||||
|
||||
void initialize(bool *result) override;
|
||||
void initialize(ze_result_t *result) override;
|
||||
|
||||
protected:
|
||||
std::once_flag initDriverOnce;
|
||||
static bool initStatus;
|
||||
static ze_result_t initStatus;
|
||||
};
|
||||
|
||||
struct L0EnvVariables {
|
||||
std::string affinityMask;
|
||||
bool programDebugging;
|
||||
bool metrics;
|
||||
};
|
||||
|
||||
} // namespace L0
|
||||
|
||||
Reference in New Issue
Block a user