mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-30 01:35:20 +08:00
[Sysman] Replace normal pointers with smart pointers (13/n)
Replacing normal pointers by smart pointers in scheduler module of LO sysman(zesinit). Related-To: LOCI-2810 Signed-off-by: Singh, Prasoon <prasoon.singh@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
d0fb5a6e51
commit
0165f6158c
@@ -415,10 +415,10 @@ LinuxSchedulerImp::LinuxSchedulerImp(
|
||||
this->listOfEngines = listOfEngines;
|
||||
}
|
||||
|
||||
OsScheduler *OsScheduler::create(
|
||||
std::unique_ptr<OsScheduler> OsScheduler::create(
|
||||
OsSysman *pOsSysman, zes_engine_type_flag_t type, std::vector<std::string> &listOfEngines, ze_bool_t isSubdevice, uint32_t subdeviceId) {
|
||||
LinuxSchedulerImp *pLinuxSchedulerImp = new LinuxSchedulerImp(pOsSysman, type, listOfEngines, isSubdevice, subdeviceId);
|
||||
return static_cast<OsScheduler *>(pLinuxSchedulerImp);
|
||||
std::unique_ptr<LinuxSchedulerImp> pLinuxSchedulerImp = std::make_unique<LinuxSchedulerImp>(pOsSysman, type, listOfEngines, isSubdevice, subdeviceId);
|
||||
return pLinuxSchedulerImp;
|
||||
}
|
||||
|
||||
} // namespace Sysman
|
||||
|
||||
@@ -508,10 +508,10 @@ LinuxSchedulerImp::LinuxSchedulerImp(
|
||||
this->listOfEngines = listOfEngines;
|
||||
}
|
||||
|
||||
OsScheduler *OsScheduler::create(
|
||||
std::unique_ptr<OsScheduler> OsScheduler::create(
|
||||
OsSysman *pOsSysman, zes_engine_type_flag_t type, std::vector<std::string> &listOfEngines, ze_bool_t isSubdevice, uint32_t subdeviceId) {
|
||||
LinuxSchedulerImp *pLinuxSchedulerImp = new LinuxSchedulerImp(pOsSysman, type, listOfEngines, isSubdevice, subdeviceId);
|
||||
return static_cast<OsScheduler *>(pLinuxSchedulerImp);
|
||||
std::unique_ptr<LinuxSchedulerImp> pLinuxSchedulerImp = std::make_unique<LinuxSchedulerImp>(pOsSysman, type, listOfEngines, isSubdevice, subdeviceId);
|
||||
return pLinuxSchedulerImp;
|
||||
}
|
||||
|
||||
} // namespace Sysman
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
#include <level_zero/zes_api.h>
|
||||
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
@@ -26,8 +27,8 @@ class OsScheduler {
|
||||
virtual ze_result_t setExclusiveMode(ze_bool_t *pNeedReload) = 0;
|
||||
virtual ze_result_t setComputeUnitDebugMode(ze_bool_t *pNeedReload) = 0;
|
||||
virtual ze_result_t getProperties(zes_sched_properties_t &properties) = 0;
|
||||
static OsScheduler *create(OsSysman *pOsSysman, zes_engine_type_flag_t engineType, std::vector<std::string> &listOfEngines,
|
||||
ze_bool_t isSubdevice, uint32_t subdeviceId);
|
||||
static std::unique_ptr<OsScheduler> create(OsSysman *pOsSysman, zes_engine_type_flag_t engineType, std::vector<std::string> &listOfEngines,
|
||||
ze_bool_t isSubdevice, uint32_t subdeviceId);
|
||||
static ze_result_t getNumEngineTypeAndInstances(std::map<zes_engine_type_flag_t, std::vector<std::string>> &listOfEngines,
|
||||
OsSysman *pOsSysman, ze_bool_t onSubDevice, uint32_t subDeviceId);
|
||||
virtual ~OsScheduler() = default;
|
||||
|
||||
@@ -18,15 +18,12 @@ SchedulerHandleContext::SchedulerHandleContext(OsSysman *pOsSysman) {
|
||||
}
|
||||
|
||||
SchedulerHandleContext::~SchedulerHandleContext() {
|
||||
for (Scheduler *pScheduler : handleList) {
|
||||
delete pScheduler;
|
||||
}
|
||||
handleList.clear();
|
||||
}
|
||||
|
||||
void SchedulerHandleContext::createHandle(zes_engine_type_flag_t engineType, std::vector<std::string> &listOfEngines, ze_bool_t onSubDevice, uint32_t subDeviceId) {
|
||||
Scheduler *pScheduler = new SchedulerImp(pOsSysman, engineType, listOfEngines, onSubDevice, subDeviceId);
|
||||
handleList.push_back(pScheduler);
|
||||
std::unique_ptr<Scheduler> pScheduler = std::make_unique<SchedulerImp>(pOsSysman, engineType, listOfEngines, onSubDevice, subDeviceId);
|
||||
handleList.push_back(std::move(pScheduler));
|
||||
}
|
||||
|
||||
void SchedulerHandleContext::init(uint32_t subDeviceCount) {
|
||||
|
||||
@@ -44,7 +44,7 @@ struct SchedulerHandleContext : NEO::NonCopyableOrMovableClass {
|
||||
ze_result_t schedulerGet(uint32_t *pCount, zes_sched_handle_t *phScheduler);
|
||||
|
||||
OsSysman *pOsSysman = nullptr;
|
||||
std::vector<Scheduler *> handleList = {};
|
||||
std::vector<std::unique_ptr<Scheduler>> handleList = {};
|
||||
|
||||
private:
|
||||
void createHandle(zes_engine_type_flag_t engineType, std::vector<std::string> &listOfEngines, ze_bool_t onSubDevice, uint32_t subDeviceId);
|
||||
|
||||
@@ -58,12 +58,7 @@ SchedulerImp::SchedulerImp(OsSysman *pOsSysman, zes_engine_type_flag_t engineTyp
|
||||
init();
|
||||
};
|
||||
|
||||
SchedulerImp::~SchedulerImp() {
|
||||
if (nullptr != pOsScheduler) {
|
||||
delete pOsScheduler;
|
||||
pOsScheduler = nullptr;
|
||||
}
|
||||
}
|
||||
SchedulerImp::~SchedulerImp() = default;
|
||||
|
||||
} // namespace Sysman
|
||||
} // namespace L0
|
||||
|
||||
@@ -28,7 +28,7 @@ class SchedulerImp : public Scheduler, NEO::NonCopyableOrMovableClass {
|
||||
ze_result_t setComputeUnitDebugMode(ze_bool_t *pNeedReload) override;
|
||||
|
||||
SchedulerImp() = default;
|
||||
OsScheduler *pOsScheduler = nullptr;
|
||||
std::unique_ptr<OsScheduler> pOsScheduler;
|
||||
SchedulerImp(OsSysman *pOsSysman, zes_engine_type_flag_t type, std::vector<std::string> &listOfEngines, ze_bool_t onSubDevice, uint32_t subDeviceId);
|
||||
~SchedulerImp() override;
|
||||
|
||||
|
||||
@@ -49,10 +49,10 @@ ze_result_t OsScheduler::getNumEngineTypeAndInstances(std::map<zes_engine_type_f
|
||||
return ZE_RESULT_ERROR_UNSUPPORTED_FEATURE;
|
||||
}
|
||||
|
||||
OsScheduler *OsScheduler::create(
|
||||
std::unique_ptr<OsScheduler> OsScheduler::create(
|
||||
OsSysman *pOsSysman, zes_engine_type_flag_t type, std::vector<std::string> &listOfEngines, ze_bool_t isSubdevice, uint32_t subdeviceId) {
|
||||
WddmSchedulerImp *pWddmSchedulerImp = new WddmSchedulerImp();
|
||||
return static_cast<OsScheduler *>(pWddmSchedulerImp);
|
||||
std::unique_ptr<WddmSchedulerImp> pWddmSchedulerImp = std::make_unique<WddmSchedulerImp>();
|
||||
return pWddmSchedulerImp;
|
||||
}
|
||||
|
||||
} // namespace Sysman
|
||||
|
||||
@@ -55,10 +55,6 @@ class SysmanDeviceSchedulerFixture : public SysmanDeviceFixture {
|
||||
pSysfsAccess->write(engineDir + "/" + engineName + "/" + heartbeatIntervalMilliSecs, heartbeatMilliSecs);
|
||||
});
|
||||
|
||||
// delete handles created in initial SysmanDeviceHandleContext::init() call
|
||||
for (auto handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
|
||||
delete handle;
|
||||
}
|
||||
pSysmanDeviceImp->pSchedulerHandleContext->handleList.clear();
|
||||
device = pSysmanDevice;
|
||||
getSchedHandles(0);
|
||||
@@ -622,10 +618,8 @@ TEST_F(SysmanDeviceSchedulerFixture, GivenValidDeviceHandleWhenCallingzesSchedul
|
||||
|
||||
TEST_F(SysmanDeviceSchedulerFixture, GivenValidObjectsOfClassSchedulerImpAndSchedulerHandleContextThenDuringObjectReleaseCheckDestructorBranches) {
|
||||
for (auto &handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
|
||||
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(handle);
|
||||
delete pSchedulerImp->pOsScheduler;
|
||||
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(handle.get());
|
||||
pSchedulerImp->pOsScheduler = nullptr;
|
||||
delete handle;
|
||||
handle = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -64,10 +64,6 @@ class SysmanDeviceSchedulerFixture : public SysmanDeviceFixture {
|
||||
pSysfsAccess->setFileProperties(dummy, enableEuDebug, true, S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR);
|
||||
pSysfsAccess->write(enableEuDebug, 0);
|
||||
|
||||
// delete handles created in initial SysmanDeviceHandleContext::init() call
|
||||
for (auto handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
|
||||
delete handle;
|
||||
}
|
||||
pSysmanDeviceImp->pSchedulerHandleContext->handleList.clear();
|
||||
device = pSysmanDevice;
|
||||
getSchedHandles(0);
|
||||
@@ -108,7 +104,7 @@ class SysmanDeviceSchedulerFixture : public SysmanDeviceFixture {
|
||||
|
||||
void setComputeUnitDebugModeMock(zes_sched_handle_t hScheduler) {
|
||||
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(L0::Sysman::Scheduler::fromHandle(hScheduler));
|
||||
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>(pSchedulerImp->pOsScheduler);
|
||||
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>((pSchedulerImp->pOsScheduler).get());
|
||||
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, pOsScheduler->setExclusiveModeImp());
|
||||
uint64_t val = 1;
|
||||
@@ -167,7 +163,7 @@ TEST_F(SysmanDeviceSchedulerFixture, GivenValidDeviceHandleWhenCallingzesSchedul
|
||||
TEST_F(SysmanDeviceSchedulerFixture, GivenSomeInvalidSchedulerModeWhenCheckingForCurrentModeThenAPIReportUnknownMode) {
|
||||
auto handles = getSchedHandles(handleComponentCount);
|
||||
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(L0::Sysman::Scheduler::fromHandle(handles[0]));
|
||||
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>(pSchedulerImp->pOsScheduler);
|
||||
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>((pSchedulerImp->pOsScheduler).get());
|
||||
uint64_t timeslice = 0, timeout = 0, heartbeat = 3000;
|
||||
pOsScheduler->setPreemptTimeout(timeout);
|
||||
pOsScheduler->setTimesliceDuration(timeslice);
|
||||
@@ -607,7 +603,7 @@ TEST_F(SysmanDeviceSchedulerFixture, GivenHeartBeatIntervalFileNotPresentWhenSet
|
||||
|
||||
auto handles = getSchedHandles(handleComponentCount);
|
||||
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(L0::Sysman::Scheduler::fromHandle(handles[0]));
|
||||
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>(pSchedulerImp->pOsScheduler);
|
||||
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>((pSchedulerImp->pOsScheduler).get());
|
||||
EXPECT_EQ(ZE_RESULT_ERROR_UNSUPPORTED_FEATURE, pOsScheduler->setHeartbeatInterval(2000));
|
||||
}
|
||||
|
||||
@@ -821,7 +817,7 @@ TEST_F(SysmanDeviceSchedulerFixture, DISABLED_GivenEuDebugNodeWriteFailsWhenCall
|
||||
TEST_F(SysmanDeviceSchedulerFixture, GivenNodeRequiredToEnableEuDebugNotPresentWhenCheckingForDebugModeThenCallReturnsFalse) {
|
||||
auto handles = getSchedHandles(handleComponentCount);
|
||||
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(L0::Sysman::Scheduler::fromHandle(handles[0]));
|
||||
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>(pSchedulerImp->pOsScheduler);
|
||||
auto pOsScheduler = static_cast<PublicLinuxSchedulerImp *>((pSchedulerImp->pOsScheduler).get());
|
||||
std::string dummy;
|
||||
pSysfsAccess->setFileProperties(dummy, enableEuDebug, false, S_IRUSR | S_IRGRP | S_IROTH | S_IWUSR);
|
||||
EXPECT_FALSE(pOsScheduler->isComputeUnitDebugModeEnabled());
|
||||
@@ -939,10 +935,8 @@ TEST_F(SysmanDeviceSchedulerFixture, GivenValidDeviceHandleWhenCallingzesSchedul
|
||||
|
||||
TEST_F(SysmanDeviceSchedulerFixture, GivenValidObjectsOfClassSchedulerImpAndSchedulerHandleContextThenDuringObjectReleaseCheckDestructorBranches) {
|
||||
for (auto &handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
|
||||
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(handle);
|
||||
delete pSchedulerImp->pOsScheduler;
|
||||
auto pSchedulerImp = static_cast<L0::Sysman::SchedulerImp *>(handle.get());
|
||||
pSchedulerImp->pOsScheduler = nullptr;
|
||||
delete handle;
|
||||
handle = nullptr;
|
||||
}
|
||||
}
|
||||
@@ -973,11 +967,6 @@ class SysmanMultiDeviceSchedulerFixture : public SysmanMultiDeviceFixture {
|
||||
auto &osInterface = pSysmanDeviceImp->getRootDeviceEnvironment().osInterface;
|
||||
osInterface->setDriverModel(std::unique_ptr<MockSchedulerNeoDrm>(pDrm));
|
||||
|
||||
// delete handles created in initial SysmanDeviceHandleContext::init() call
|
||||
for (auto handle : pSysmanDeviceImp->pSchedulerHandleContext->handleList) {
|
||||
delete handle;
|
||||
}
|
||||
|
||||
pSysmanDeviceImp->pSchedulerHandleContext->handleList.clear();
|
||||
device = pSysmanDevice;
|
||||
auto drm = pSysmanDeviceImp->getRootDeviceEnvironment().osInterface->getDriverModel()->as<NEO::Drm>();
|
||||
@@ -999,7 +988,7 @@ class SysmanMultiDeviceSchedulerFixture : public SysmanMultiDeviceFixture {
|
||||
TEST_F(SysmanMultiDeviceSchedulerFixture, GivenValidSchedulerHandleContextWhenInitializingForIncorrectDistanceInfoVerifyInvalidEngineTypeIsNotReturned) {
|
||||
auto pSchedulerHandleContextTest = std::make_unique<L0::Sysman::SchedulerHandleContext>(pOsSysman);
|
||||
pSchedulerHandleContextTest->init(pOsSysman->getSubDeviceCount());
|
||||
for (auto handle : pSchedulerHandleContextTest->handleList) {
|
||||
for (auto &handle : pSchedulerHandleContextTest->handleList) {
|
||||
zes_sched_properties_t properties = {};
|
||||
ze_result_t result = zesSchedulerGetProperties(handle->toHandle(), &properties);
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, result);
|
||||
|
||||
Reference in New Issue
Block a user