mirror of
https://github.com/intel/compute-runtime.git
synced 2026-01-03 06:49:52 +08:00
Add regkey to enable support for concurrent access in usm capabilities
The new regkey is EnableUsmConcurrentAccessSupport that takes a bitmask with usm capabilities to enable concurrent access for (bit0: host, bit1: device, bit2: shared single-device, bit3: shared cross-device, bit4: shared system) Related-To: NEO-6733 Signed-off-by: Milczarek, Slawomir <slawomir.milczarek@intel.com>
This commit is contained in:
committed by
Compute-Runtime-Automation
parent
880464da77
commit
e768d0ed5e
@@ -165,6 +165,7 @@ CsrDispatchMode = 0
|
||||
OverrideDefaultFP64Settings = -1
|
||||
RenderCompressedImagesEnabled = -1
|
||||
RenderCompressedBuffersEnabled = -1
|
||||
EnableUsmConcurrentAccessSupport = 0
|
||||
EnableSharedSystemUsmSupport = -1
|
||||
EnablePassInlineData = -1
|
||||
ForceFineGrainedSVMSupport = -1
|
||||
|
||||
@@ -52,6 +52,57 @@ HWTEST_F(HwInfoConfigTest, givenHwInfoConfigWhenGettingSharedSystemMemCapabiliti
|
||||
}
|
||||
}
|
||||
|
||||
HWTEST_F(HwInfoConfigTest, givenHwInfoConfigWhenGettingMemoryCapabilitiesThenCorrectValueIsReturned) {
|
||||
DebugManagerStateRestore restore;
|
||||
|
||||
auto hwInfoConfig = HwInfoConfig::get(pInHwInfo.platform.eProductFamily);
|
||||
|
||||
for (auto capabilityBitmask : {0, 0b0001, 0b0010, 0b0100, 0b1000, 0b1111, 0b10000}) {
|
||||
DebugManager.flags.EnableUsmConcurrentAccessSupport.set(capabilityBitmask);
|
||||
std::bitset<32> capabilityBitset(capabilityBitmask);
|
||||
|
||||
auto hostMemCapabilities = hwInfoConfig->getHostMemCapabilities(&pInHwInfo);
|
||||
if (hostMemCapabilities > 0) {
|
||||
if (capabilityBitset.test(static_cast<uint32_t>(UsmAccessCapabilities::Host))) {
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS & hostMemCapabilities);
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS & hostMemCapabilities);
|
||||
}
|
||||
}
|
||||
|
||||
auto deviceMemCapabilities = hwInfoConfig->getDeviceMemCapabilities();
|
||||
if (deviceMemCapabilities > 0) {
|
||||
if (capabilityBitset.test(static_cast<uint32_t>(UsmAccessCapabilities::Device))) {
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS & deviceMemCapabilities);
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS & deviceMemCapabilities);
|
||||
}
|
||||
}
|
||||
|
||||
auto singleDeviceSharedMemCapabilities = hwInfoConfig->getSingleDeviceSharedMemCapabilities();
|
||||
if (singleDeviceSharedMemCapabilities > 0) {
|
||||
if (capabilityBitset.test(static_cast<uint32_t>(UsmAccessCapabilities::SharedSingleDevice))) {
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS & singleDeviceSharedMemCapabilities);
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS & singleDeviceSharedMemCapabilities);
|
||||
}
|
||||
}
|
||||
|
||||
auto crossDeviceSharedMemCapabilities = hwInfoConfig->getCrossDeviceSharedMemCapabilities();
|
||||
if (crossDeviceSharedMemCapabilities > 0) {
|
||||
if (capabilityBitset.test(static_cast<uint32_t>(UsmAccessCapabilities::SharedCrossDevice))) {
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS & crossDeviceSharedMemCapabilities);
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS & crossDeviceSharedMemCapabilities);
|
||||
}
|
||||
}
|
||||
|
||||
auto sharedSystemMemCapabilities = hwInfoConfig->getSharedSystemMemCapabilities(&pInHwInfo);
|
||||
if (sharedSystemMemCapabilities > 0) {
|
||||
if (capabilityBitset.test(static_cast<uint32_t>(UsmAccessCapabilities::SharedSystemCrossDevice))) {
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ACCESS & sharedSystemMemCapabilities);
|
||||
EXPECT_TRUE(UNIFIED_SHARED_MEMORY_CONCURRENT_ATOMIC_ACCESS & sharedSystemMemCapabilities);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
TEST_F(HwInfoConfigTest, WhenParsingHwInfoConfigThenCorrectValuesAreReturned) {
|
||||
uint64_t hwInfoConfig = 0x0;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user