Skip to content

Commit 92c2c07

Browse files
Correct device handle for device/shared alloc
Signed-off-by: John Falkowski <[email protected]>
1 parent 9f5828b commit 92c2c07

File tree

2 files changed

+19
-12
lines changed

2 files changed

+19
-12
lines changed

level_zero/core/source/context/context_imp.cpp

+6-7
Original file line numberDiff line numberDiff line change
@@ -136,8 +136,6 @@ ze_result_t ContextImp::allocDeviceMem(ze_device_handle_t hDevice,
136136
return ZE_RESULT_SUCCESS;
137137
}
138138

139-
neoDevice = this->driverHandle->devices[0]->getNEODevice();
140-
141139
if (lookupTable.relaxedSizeAllowed == false &&
142140
(size > neoDevice->getDeviceInfo().maxMemAllocSize)) {
143141
*ptr = nullptr;
@@ -155,8 +153,6 @@ ze_result_t ContextImp::allocDeviceMem(ze_device_handle_t hDevice,
155153
return ZE_RESULT_ERROR_UNSUPPORTED_SIZE;
156154
}
157155

158-
neoDevice = Device::fromHandle(hDevice)->getNEODevice();
159-
160156
deviceBitfields[rootDeviceIndex] = neoDevice->getDeviceBitfield();
161157

162158
NEO::SVMAllocsManager::UnifiedMemoryProperties unifiedMemoryProperties(InternalMemoryType::DEVICE_UNIFIED_MEMORY, this->driverHandle->rootDeviceIndices, deviceBitfields);
@@ -183,6 +179,12 @@ ze_result_t ContextImp::allocSharedMem(ze_device_handle_t hDevice,
183179
size_t size,
184180
size_t alignment,
185181
void **ptr) {
182+
183+
auto neoDevice = this->devices.begin()->second->getNEODevice();
184+
if (hDevice != nullptr) {
185+
neoDevice = Device::fromHandle(hDevice)->getNEODevice();
186+
}
187+
186188
bool relaxedSizeAllowed = NEO::DebugManager.flags.AllowUnrestrictedSize.get();
187189
if (deviceDesc->pNext) {
188190
const ze_base_desc_t *extendedDesc = reinterpret_cast<const ze_base_desc_t *>(deviceDesc->pNext);
@@ -196,14 +198,12 @@ ze_result_t ContextImp::allocSharedMem(ze_device_handle_t hDevice,
196198
}
197199
}
198200

199-
auto neoDevice = this->devices.begin()->second->getNEODevice();
200201
if (relaxedSizeAllowed == false &&
201202
(size > neoDevice->getDeviceInfo().maxMemAllocSize)) {
202203
*ptr = nullptr;
203204
return ZE_RESULT_ERROR_UNSUPPORTED_SIZE;
204205
}
205206

206-
neoDevice = this->driverHandle->devices[0]->getNEODevice();
207207
uint64_t globalMemSize = neoDevice->getDeviceInfo().globalMemSize;
208208

209209
uint32_t numSubDevices = neoDevice->getNumGenericSubDevices();
@@ -216,7 +216,6 @@ ze_result_t ContextImp::allocSharedMem(ze_device_handle_t hDevice,
216216
return ZE_RESULT_ERROR_UNSUPPORTED_SIZE;
217217
}
218218

219-
neoDevice = this->devices.begin()->second->getNEODevice();
220219
auto deviceBitfields = this->deviceBitfields;
221220
NEO::Device *unifiedMemoryPropertiesDevice = nullptr;
222221
if (hDevice) {

level_zero/core/test/unit_tests/sources/memory/test_memory.cpp

+13-5
Original file line numberDiff line numberDiff line change
@@ -2886,13 +2886,21 @@ TEST_F(SharedAllocMultiDeviceTests, whenAllocatinSharedMemoryWithNonNullDeviceIn
28862886
ze_host_mem_alloc_desc_t hostDesc = {};
28872887
void *ptr = nullptr;
28882888
size_t size = 1024;
2889+
ze_result_t res = ZE_RESULT_ERROR_UNKNOWN;
2890+
ze_memory_allocation_properties_t memoryProperties = {};
2891+
ze_device_handle_t deviceHandle;
28892892
EXPECT_EQ(currSvmAllocsManager->createHostUnifiedMemoryAllocationTimes, 0u);
2890-
ze_result_t res = context->allocSharedMem(driverHandle->devices[0]->toHandle(), &deviceDesc, &hostDesc, size, 0u, &ptr);
2891-
EXPECT_EQ(res, ZE_RESULT_SUCCESS);
2893+
for (uint32_t i = 0; i < numRootDevices; i++) {
2894+
res = context->allocSharedMem(driverHandle->devices[i]->toHandle(), &deviceDesc, &hostDesc, size, 0u, &ptr);
2895+
EXPECT_EQ(res, ZE_RESULT_SUCCESS);
2896+
res = context->getMemAllocProperties(ptr, &memoryProperties, &deviceHandle);
2897+
EXPECT_EQ(ZE_RESULT_SUCCESS, res);
2898+
EXPECT_EQ(memoryProperties.type, ZE_MEMORY_TYPE_SHARED);
2899+
EXPECT_EQ(deviceHandle, driverHandle->devices[i]->toHandle());
2900+
res = context->freeMem(ptr);
2901+
EXPECT_EQ(res, ZE_RESULT_SUCCESS);
2902+
}
28922903
EXPECT_EQ(currSvmAllocsManager->createHostUnifiedMemoryAllocationTimes, 0u);
2893-
2894-
res = context->freeMem(ptr);
2895-
EXPECT_EQ(res, ZE_RESULT_SUCCESS);
28962904
}
28972905

28982906
struct MemAllocMultiSubDeviceTests : public ::testing::Test {

0 commit comments

Comments
 (0)