Skip to content

Commit f82218c

Browse files
committed
urBindlessImagesMapExternalLinearMemoryExp made common for v1 & v2
1 parent e320adf commit f82218c

File tree

3 files changed

+52
-27
lines changed

3 files changed

+52
-27
lines changed

unified-runtime/source/adapters/level_zero/image.cpp

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -115,20 +115,6 @@ ur_result_t urBindlessImagesImageCopyExp(
115115
return res;
116116
}
117117

118-
ur_result_t urBindlessImagesMapExternalLinearMemoryExp(
119-
ur_context_handle_t hContext, ur_device_handle_t hDevice, uint64_t offset,
120-
uint64_t size, ur_exp_external_mem_handle_t hExternalMem, void **phRetMem) {
121-
std::ignore = hContext;
122-
std::ignore = hDevice;
123-
std::ignore = size;
124-
std::ignore = offset;
125-
std::ignore = hExternalMem;
126-
std::ignore = phRetMem;
127-
logger::error("[UR][L0] {} function not implemented!",
128-
"{} function not implemented!", __FUNCTION__);
129-
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
130-
}
131-
132118
ur_result_t urBindlessImagesWaitExternalSemaphoreExp(
133119
ur_queue_handle_t hQueue, ur_exp_external_semaphore_handle_t hSemaphore,
134120
bool hasValue, uint64_t waitValue, uint32_t numEventsInWaitList,

unified-runtime/source/adapters/level_zero/image_common.cpp

Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -772,4 +772,43 @@ ur_result_t urBindlessImagesReleaseExternalSemaphoreExp(
772772
return UR_RESULT_SUCCESS;
773773
}
774774

775+
ur_result_t urBindlessImagesMapExternalLinearMemoryExp(
776+
ur_context_handle_t hContext, ur_device_handle_t hDevice, uint64_t offset,
777+
uint64_t size, ur_exp_external_mem_handle_t hExternalMem, void **phRetMem) {
778+
UR_ASSERT(hContext && hDevice && hExternalMem,
779+
UR_RESULT_ERROR_INVALID_NULL_HANDLE);
780+
UR_ASSERT(offset && size, UR_RESULT_ERROR_INVALID_BUFFER_SIZE);
781+
782+
struct ur_ze_external_memory_data *externalMemoryData =
783+
reinterpret_cast<ur_ze_external_memory_data *>(hExternalMem);
784+
UR_ASSERT(externalMemoryData && externalMemoryData->importExtensionDesc,
785+
UR_RESULT_ERROR_INVALID_NULL_POINTER);
786+
787+
ze_device_mem_alloc_desc_t allocDesc = {};
788+
allocDesc.stype = ZE_STRUCTURE_TYPE_DEVICE_MEM_ALLOC_DESC;
789+
allocDesc.flags = 0;
790+
allocDesc.pNext = externalMemoryData->importExtensionDesc;
791+
void *mappedMemory;
792+
793+
ze_result_t zeResult = zeMemAllocDevice(hContext->getZeHandle(), &allocDesc, size,
794+
1, hDevice->ZeDevice, &mappedMemory);
795+
if (zeResult != ZE_RESULT_SUCCESS) {
796+
return UR_RESULT_ERROR_OUT_OF_RESOURCES;
797+
}
798+
799+
zeResult = zeContextMakeMemoryResident(hContext->getZeHandle(),
800+
hDevice->ZeDevice, mappedMemory, size);
801+
if (zeResult != ZE_RESULT_SUCCESS) {
802+
zeMemFree(hContext->getZeHandle(), mappedMemory);
803+
return UR_RESULT_ERROR_UNKNOWN;
804+
}
805+
*phRetMem = reinterpret_cast<void *>(
806+
reinterpret_cast<uintptr_t>(mappedMemory) + offset);
807+
808+
externalMemoryData->urMemoryHandle =
809+
reinterpret_cast<ur_mem_handle_t>(*phRetMem);
810+
811+
return UR_RESULT_SUCCESS;
812+
}
813+
775814
} // namespace ur::level_zero

unified-runtime/source/adapters/level_zero/v2/image.cpp

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -30,18 +30,18 @@ urBindlessImagesImageFreeExp([[maybe_unused]] ur_context_handle_t hContext,
3030
return UR_RESULT_SUCCESS;
3131
}
3232

33-
ur_result_t urBindlessImagesMapExternalLinearMemoryExp(
34-
[[maybe_unused]] ur_context_handle_t hContext,
35-
[[maybe_unused]] ur_device_handle_t hDevice,
36-
[[maybe_unused]] uint64_t offset, [[maybe_unused]] uint64_t size,
37-
[[maybe_unused]] ur_exp_external_mem_handle_t hExternalMem,
38-
[[maybe_unused]] void **phRetMem) {
39-
// implemented in V1 in PR https://github.com/intel/llvm/pull/17458
40-
// TODO: implement in V2 after V1 is merged
41-
logger::error(
42-
logger::LegacyMessage("[UR][L0_v2] {} function not implemented!"),
43-
"{} function not implemented!", __FUNCTION__);
44-
return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
45-
}
33+
// ur_result_t urBindlessImagesMapExternalLinearMemoryExp(
34+
// [[maybe_unused]] ur_context_handle_t hContext,
35+
// [[maybe_unused]] ur_device_handle_t hDevice,
36+
// [[maybe_unused]] uint64_t offset, [[maybe_unused]] uint64_t size,
37+
// [[maybe_unused]] ur_exp_external_mem_handle_t hExternalMem,
38+
// [[maybe_unused]] void **phRetMem) {
39+
// // implemented in V1 in PR https://github.com/intel/llvm/pull/17458
40+
// // TODO: implement in V2 after V1 is merged
41+
// logger::error(
42+
// logger::LegacyMessage("[UR][L0_v2] {} function not implemented!"),
43+
// "{} function not implemented!", __FUNCTION__);
44+
// return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
45+
// }
4646

4747
} // namespace ur::level_zero

0 commit comments

Comments
 (0)