mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 23:03:02 +08:00
Add initial placement hints for USM in OpenCL
Related-To: NEO-5059 Signed-off-by: Maciej Dziuban <maciej.dziuban@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
e0ec9875c3
commit
94be510c18
@@ -28,12 +28,12 @@ struct MemoryFlags {
|
||||
uint32_t forceHostMemory : 1;
|
||||
uint32_t shareable : 1;
|
||||
uint32_t resource48Bit : 1;
|
||||
uint32_t usmInitialPlacementCpu : 1;
|
||||
uint32_t usmInitialPlacementGpu : 1;
|
||||
};
|
||||
|
||||
struct MemoryAllocFlags {
|
||||
uint32_t allocWriteCombined : 1;
|
||||
uint32_t usmInitialPlacementCpu : 1;
|
||||
uint32_t usmInitialPlacementGpu : 1;
|
||||
};
|
||||
|
||||
} // namespace NEO
|
||||
|
||||
@@ -15,7 +15,7 @@
|
||||
|
||||
namespace NEO {
|
||||
void PageFaultManager::insertAllocation(void *ptr, size_t size, SVMAllocsManager *unifiedMemoryManager, void *cmdQ, const MemoryProperties &memoryProperties) {
|
||||
const bool initialPlacementCpu = !memoryProperties.flags.usmInitialPlacementGpu;
|
||||
const bool initialPlacementCpu = !memoryProperties.allocFlags.usmInitialPlacementGpu;
|
||||
const auto domain = initialPlacementCpu ? AllocationDomain::Cpu : AllocationDomain::None;
|
||||
|
||||
std::unique_lock<SpinLock> lock{mtx};
|
||||
|
||||
@@ -232,7 +232,7 @@ TEST_F(PageFaultManagerTest, givenInitialPlacementCpuWhenVerifyingPagefaultThenF
|
||||
void *alloc = reinterpret_cast<void *>(0x1);
|
||||
|
||||
MemoryProperties memoryProperties{};
|
||||
memoryProperties.flags.usmInitialPlacementCpu = 1;
|
||||
memoryProperties.allocFlags.usmInitialPlacementCpu = 1;
|
||||
pageFaultManager->insertAllocation(alloc, 10, reinterpret_cast<SVMAllocsManager *>(unifiedMemoryManager), nullptr, memoryProperties);
|
||||
EXPECT_EQ(pageFaultManager->transferToCpuCalled, 0);
|
||||
EXPECT_EQ(pageFaultManager->memoryData.size(), 1u);
|
||||
@@ -252,7 +252,7 @@ TEST_F(PageFaultManagerTest, givenInitialPlacementGpuWhenVerifyingPagefaultThenF
|
||||
void *alloc = reinterpret_cast<void *>(0x1);
|
||||
|
||||
MemoryProperties memoryProperties{};
|
||||
memoryProperties.flags.usmInitialPlacementGpu = 1;
|
||||
memoryProperties.allocFlags.usmInitialPlacementGpu = 1;
|
||||
pageFaultManager->insertAllocation(alloc, 10, reinterpret_cast<SVMAllocsManager *>(unifiedMemoryManager), nullptr, memoryProperties);
|
||||
EXPECT_EQ(pageFaultManager->transferToCpuCalled, 0);
|
||||
EXPECT_EQ(pageFaultManager->memoryData.size(), 1u);
|
||||
@@ -277,7 +277,7 @@ TEST_F(PageFaultManagerTest, givenInitialPlacementCpuWhenMovingToGpuDomainThenFi
|
||||
void *alloc = reinterpret_cast<void *>(0x1);
|
||||
|
||||
MemoryProperties memoryProperties{};
|
||||
memoryProperties.flags.usmInitialPlacementCpu = 1;
|
||||
memoryProperties.allocFlags.usmInitialPlacementCpu = 1;
|
||||
pageFaultManager->insertAllocation(alloc, 10, reinterpret_cast<SVMAllocsManager *>(unifiedMemoryManager), cmdQ, memoryProperties);
|
||||
EXPECT_EQ(pageFaultManager->transferToCpuCalled, 0);
|
||||
EXPECT_EQ(pageFaultManager->memoryData.size(), 1u);
|
||||
@@ -301,7 +301,7 @@ TEST_F(PageFaultManagerTest, givenInitialPlacementGpuWhenMovingToGpuDomainThenFi
|
||||
void *alloc = reinterpret_cast<void *>(0x1);
|
||||
|
||||
MemoryProperties memoryProperties{};
|
||||
memoryProperties.flags.usmInitialPlacementGpu = 1;
|
||||
memoryProperties.allocFlags.usmInitialPlacementGpu = 1;
|
||||
pageFaultManager->insertAllocation(alloc, 10, reinterpret_cast<SVMAllocsManager *>(unifiedMemoryManager), cmdQ, memoryProperties);
|
||||
EXPECT_EQ(pageFaultManager->transferToCpuCalled, 0);
|
||||
EXPECT_EQ(pageFaultManager->memoryData.size(), 1u);
|
||||
@@ -324,7 +324,7 @@ TEST_F(PageFaultManagerTest, givenAllocationMovedToGpuDomainWhenVerifyingPagefau
|
||||
void *alloc = reinterpret_cast<void *>(0x1);
|
||||
|
||||
MemoryProperties memoryProperties{};
|
||||
memoryProperties.flags.usmInitialPlacementGpu = 1;
|
||||
memoryProperties.allocFlags.usmInitialPlacementGpu = 1;
|
||||
pageFaultManager->insertAllocation(alloc, 10, reinterpret_cast<SVMAllocsManager *>(unifiedMemoryManager), cmdQ, memoryProperties);
|
||||
EXPECT_EQ(pageFaultManager->transferToCpuCalled, 0);
|
||||
EXPECT_EQ(pageFaultManager->memoryData.size(), 1u);
|
||||
|
||||
Reference in New Issue
Block a user