mirror of
https://github.com/intel/compute-runtime.git
synced 2025-12-31 12:11:31 +08:00
performance: enable usm pool residency tracking
Related-To: NEO-16303 Signed-off-by: Dominik Dabek <dominik.dabek@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
0f639dc723
commit
8ab1e0fb04
@@ -417,7 +417,7 @@ void DriverHandleImp::initDeviceUsmAllocPool(NEO::Device &device, bool multiDevi
|
||||
poolParams.poolSize = NEO::debugManager.flags.EnableDeviceUsmAllocationPool.get() * MemoryConstants::megaByte;
|
||||
}
|
||||
|
||||
bool trackResidency = false;
|
||||
bool trackResidency = true;
|
||||
if (NEO::debugManager.flags.EnableUsmPoolResidencyTracking.get() != -1) {
|
||||
trackResidency = NEO::debugManager.flags.EnableUsmPoolResidencyTracking.get() != 0;
|
||||
}
|
||||
|
||||
@@ -673,8 +673,6 @@ TEST_F(AllocUsmDeviceEnabledSinglePoolMemoryTest, givenMultiplePooledAllocations
|
||||
}
|
||||
|
||||
TEST_F(AllocUsmDeviceEnabledSinglePoolMemoryTest, givenPooledAllocationWhenCallingResidencyOperationsThenSkipIfAllowed) {
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::debugManager.flags.EnableUsmPoolResidencyTracking.set(1);
|
||||
auto mockDeviceMemAllocPool = reinterpret_cast<MockUsmMemAllocPool *>(l0Devices[0]->getNEODevice()->getUsmMemAllocPool());
|
||||
ASSERT_NE(nullptr, mockDeviceMemAllocPool);
|
||||
EXPECT_TRUE(mockDeviceMemAllocPool->isInitialized());
|
||||
@@ -736,8 +734,47 @@ TEST_F(AllocUsmDeviceEnabledSinglePoolMemoryTest, givenPooledAllocationWhenCalli
|
||||
EXPECT_EQ(ZE_RESULT_SUCCESS, context->freeMem(nonPooledPtr));
|
||||
}
|
||||
|
||||
TEST_F(AllocUsmDeviceEnabledSinglePoolMemoryTest, givenDebugFlagWhenInitializingPoolThenEnableResidencyTrackingCorrectly) {
|
||||
auto neoDevice = l0Devices[0]->getNEODevice();
|
||||
// default
|
||||
EXPECT_TRUE(neoDevice->getUsmMemAllocPool()->isTrackingResidency());
|
||||
neoDevice->cleanupUsmAllocationPool();
|
||||
neoDevice->resetUsmAllocationPool(nullptr);
|
||||
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::debugManager.flags.EnableUsmPoolResidencyTracking.set(0);
|
||||
driverHandle->initDeviceUsmAllocPool(*neoDevice, numRootDevices > 1);
|
||||
EXPECT_FALSE(neoDevice->getUsmMemAllocPool()->isTrackingResidency());
|
||||
neoDevice->cleanupUsmAllocationPool();
|
||||
neoDevice->resetUsmAllocationPool(nullptr);
|
||||
|
||||
NEO::debugManager.flags.EnableUsmPoolResidencyTracking.set(1);
|
||||
driverHandle->initDeviceUsmAllocPool(*neoDevice, numRootDevices > 1);
|
||||
EXPECT_TRUE(neoDevice->getUsmMemAllocPool()->isTrackingResidency());
|
||||
}
|
||||
|
||||
using AllocUsmDeviceEnabledMemoryNewVersionTest = AllocUsmPoolMemoryTest<-1, 1, -1>;
|
||||
|
||||
TEST_F(AllocUsmDeviceEnabledMemoryNewVersionTest, givenDebugFlagWhenInitializingPoolManagerThenEnableResidencyTrackingCorrectly) {
|
||||
auto neoDevice = l0Devices[0]->getNEODevice();
|
||||
|
||||
// default
|
||||
EXPECT_TRUE(reinterpret_cast<MockUsmMemAllocPoolsManager *>(neoDevice->getUsmMemAllocPoolsManager())->trackResidency);
|
||||
neoDevice->cleanupUsmAllocationPool();
|
||||
neoDevice->resetUsmAllocationPoolManager(nullptr);
|
||||
|
||||
DebugManagerStateRestore restorer;
|
||||
NEO::debugManager.flags.EnableUsmPoolResidencyTracking.set(0);
|
||||
driverHandle->initDeviceUsmAllocPool(*neoDevice, numRootDevices > 1);
|
||||
EXPECT_FALSE(reinterpret_cast<MockUsmMemAllocPoolsManager *>(neoDevice->getUsmMemAllocPoolsManager())->trackResidency);
|
||||
neoDevice->cleanupUsmAllocationPool();
|
||||
neoDevice->resetUsmAllocationPoolManager(nullptr);
|
||||
|
||||
NEO::debugManager.flags.EnableUsmPoolResidencyTracking.set(1);
|
||||
driverHandle->initDeviceUsmAllocPool(*neoDevice, numRootDevices > 1);
|
||||
EXPECT_TRUE(reinterpret_cast<MockUsmMemAllocPoolsManager *>(neoDevice->getUsmMemAllocPoolsManager())->trackResidency);
|
||||
}
|
||||
|
||||
TEST_F(AllocUsmDeviceEnabledMemoryNewVersionTest, givenContextWhenAllocatingAndFreeingDeviceUsmThenPoolingIsUsed) {
|
||||
executionEnvironment->rootDeviceEnvironments[0]->osInterface.reset(new NEO::OSInterface());
|
||||
executionEnvironment->rootDeviceEnvironments[0]->osInterface->setDriverModel(std::make_unique<NEO::MockDriverModelDRM>());
|
||||
|
||||
Reference in New Issue
Block a user