Skip to content

Commit

Permalink
[UR] Bump UR and implement changes to bindless image handle types
Browse files Browse the repository at this point in the history
  • Loading branch information
callumfare committed Jul 10, 2024
1 parent 7221b17 commit 0fe5f60
Show file tree
Hide file tree
Showing 11 changed files with 63 additions and 47 deletions.
8 changes: 5 additions & 3 deletions sycl/include/sycl/detail/pi.h
Original file line number Diff line number Diff line change
Expand Up @@ -199,9 +199,10 @@
// 16.56 Replaced piextUSMEnqueueMemset with piextUSMEnqueueFill
// 16.57 Added mappings to UR launch properties extension
// (piextEnqueueKernelLaunchCustom)
// 16.57 Added context parameter to piextMemImageGetInfo

#define _PI_H_VERSION_MAJOR 16
#define _PI_H_VERSION_MINOR 57
#define _PI_H_VERSION_MINOR 58

#define _PI_STRING_HELPER(a) #a
#define _PI_CONCAT(a, b) _PI_STRING_HELPER(a.b)
Expand Down Expand Up @@ -3100,13 +3101,14 @@ __SYCL_EXPORT pi_result piextMemImageCopy(

/// API to query an image memory handle for specific properties.
///
/// \param context is the handle to the context
/// \param mem_handle is the handle to the image memory
/// \param param_name is the queried info name
/// \param param_value is the returned query value
/// \param param_value_size_ret is the returned query value size
__SYCL_EXPORT pi_result piextMemImageGetInfo(
const pi_image_mem_handle mem_handle, pi_image_info param_name,
void *param_value, size_t *param_value_size_ret);
const pi_context context, const pi_image_mem_handle mem_handle,
pi_image_info param_name, void *param_value, size_t *param_value_size_ret);

/// [DEPRECATED] This function is deprecated in favor of
/// `piextImportExternalMemory`
Expand Down
5 changes: 3 additions & 2 deletions sycl/plugins/cuda/pi_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -446,11 +446,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
}

__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
pi_image_mem_handle MemHandle,
pi_image_info ParamName,
void *ParamValue,
size_t *ParamValueSizeRet) {
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
ParamValueSizeRet);
}

Expand Down
5 changes: 3 additions & 2 deletions sycl/plugins/hip/pi_hip.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -449,11 +449,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
}

__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
pi_image_mem_handle MemHandle,
pi_image_info ParamName,
void *ParamValue,
size_t *ParamValueSizeRet) {
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
ParamValueSizeRet);
}

Expand Down
5 changes: 3 additions & 2 deletions sycl/plugins/level_zero/pi_level_zero.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -458,11 +458,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
}

__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
pi_image_mem_handle MemHandle,
pi_image_info ParamName,
void *ParamValue,
size_t *ParamValueSizeRet) {
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
ParamValueSizeRet);
}

Expand Down
5 changes: 3 additions & 2 deletions sycl/plugins/native_cpu/pi_native_cpu.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -453,11 +453,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
}

__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
pi_image_mem_handle MemHandle,
pi_image_info ParamName,
void *ParamValue,
size_t *ParamValueSizeRet) {
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
ParamValueSizeRet);
}

Expand Down
10 changes: 6 additions & 4 deletions sycl/plugins/opencl/pi_opencl.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -430,10 +430,12 @@ pi_result piextMemSampledImageHandleDestroy(pi_context Context,
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
}

pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
pi_image_info ParamName, void *ParamValue,
size_t *ParamValueSizeRet) {
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
pi_image_mem_handle MemHandle,
pi_image_info ParamName,
void *ParamValue,
size_t *ParamValueSizeRet) {
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
ParamValueSizeRet);
}

Expand Down
4 changes: 2 additions & 2 deletions sycl/plugins/unified_runtime/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -99,14 +99,14 @@ if(SYCL_PI_UR_USE_FETCH_CONTENT)
CACHE PATH "Path to external '${name}' adapter source dir" FORCE)
endfunction()

set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git")
set(UNIFIED_RUNTIME_REPO "https://github.com/callumfare/unified-runtime.git")
# commit 9d3bce6ad92e6f0a4af0139f9744584b5a402827
# Merge: e0775441 1c9c2d0b
# Author: Kenneth Benzie (Benie) <k.benzie@codeplay.com>
# Date: Tue Jul 9 15:57:44 2024 +0100
# Merge pull request #1822 from JackAKirk/cuda-cubemap-driver-fix
# [cuda][bindless_images][2025.0 req] Fix for cuda < 11.6 support.
set(UNIFIED_RUNTIME_TAG 9d3bce6ad92e6f0a4af0139f9744584b5a402827)
set(UNIFIED_RUNTIME_TAG fe7c7191de1d4a1c010adbb78f91e48264c0b4b4)

fetch_adapter_source(level_zero
${UNIFIED_RUNTIME_REPO}
Expand Down
45 changes: 23 additions & 22 deletions sycl/plugins/unified_runtime/pi2ur.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -5080,8 +5080,8 @@ inline pi_result piextMemImageAllocate(pi_context Context, pi_device Device,
ur_image_desc_t UrDesc{};
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);

ur_exp_image_mem_handle_t *UrRetMem =
reinterpret_cast<ur_exp_image_mem_handle_t *>(RetMem);
ur_exp_image_mem_native_handle_t *UrRetMem =
reinterpret_cast<ur_exp_image_mem_native_handle_t *>(RetMem);

HANDLE_ERRORS(urBindlessImagesImageAllocateExp(UrContext, UrDevice, &UrFormat,
&UrDesc, UrRetMem));
Expand All @@ -5100,14 +5100,14 @@ inline pi_result piextMemUnsampledImageCreate(pi_context Context,

auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
auto UrImgMem = reinterpret_cast<ur_exp_image_mem_handle_t>(ImgMem);
auto UrImgMem = reinterpret_cast<ur_exp_image_mem_native_handle_t>(ImgMem);

ur_image_format_t UrFormat{};
ur_image_desc_t UrDesc{};
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);

ur_exp_image_handle_t *UrRetHandle =
reinterpret_cast<ur_exp_image_handle_t *>(RetHandle);
ur_exp_image_native_handle_t *UrRetHandle =
reinterpret_cast<ur_exp_image_native_handle_t *>(RetHandle);

HANDLE_ERRORS(urBindlessImagesUnsampledImageCreateExp(
UrContext, UrDevice, UrImgMem, &UrFormat, &UrDesc, UrRetHandle));
Expand All @@ -5125,15 +5125,15 @@ inline pi_result piextMemSampledImageCreate(

auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
auto UrImgMem = reinterpret_cast<ur_exp_image_mem_handle_t>(ImgMem);
auto UrImgMem = reinterpret_cast<ur_exp_image_mem_native_handle_t>(ImgMem);

ur_image_format_t UrFormat{};
ur_image_desc_t UrDesc{};
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);

auto UrSampler = reinterpret_cast<ur_sampler_handle_t>(Sampler);
ur_exp_image_handle_t *UrRetHandle =
reinterpret_cast<ur_exp_image_handle_t *>(RetHandle);
ur_exp_image_native_handle_t *UrRetHandle =
reinterpret_cast<ur_exp_image_native_handle_t *>(RetHandle);

HANDLE_ERRORS(urBindlessImagesSampledImageCreateExp(
UrContext, UrDevice, UrImgMem, &UrFormat, &UrDesc, UrSampler,
Expand Down Expand Up @@ -5258,9 +5258,9 @@ inline pi_result piextMemMipmapGetLevel(pi_context Context, pi_device Device,

auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
auto UrMipMem = reinterpret_cast<ur_exp_image_mem_handle_t>(MipMem);
ur_exp_image_mem_handle_t *UrRetMem =
reinterpret_cast<ur_exp_image_mem_handle_t *>(RetMem);
auto UrMipMem = reinterpret_cast<ur_exp_image_mem_native_handle_t>(MipMem);
ur_exp_image_mem_native_handle_t *UrRetMem =
reinterpret_cast<ur_exp_image_mem_native_handle_t *>(RetMem);

HANDLE_ERRORS(urBindlessImagesMipmapGetLevelExp(UrContext, UrDevice, UrMipMem,
Level, UrRetMem));
Expand All @@ -5276,7 +5276,7 @@ inline pi_result piextMemImageFree(pi_context Context, pi_device Device,
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
auto UrMemoryHandle =
reinterpret_cast<ur_exp_image_mem_handle_t>(MemoryHandle);
reinterpret_cast<ur_exp_image_mem_native_handle_t>(MemoryHandle);

HANDLE_ERRORS(
urBindlessImagesImageFreeExp(UrContext, UrDevice, UrMemoryHandle));
Expand All @@ -5292,7 +5292,7 @@ inline pi_result piextMemMipmapFree(pi_context Context, pi_device Device,
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
auto UrMemoryHandle =
reinterpret_cast<ur_exp_image_mem_handle_t>(MemoryHandle);
reinterpret_cast<ur_exp_image_mem_native_handle_t>(MemoryHandle);

HANDLE_ERRORS(
urBindlessImagesMipmapFreeExp(UrContext, UrDevice, UrMemoryHandle));
Expand Down Expand Up @@ -5367,10 +5367,9 @@ inline pi_result piextMemUnsampledImageHandleDestroy(pi_context Context,

auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
auto UrHandle = reinterpret_cast<ur_exp_image_handle_t>(Handle);

HANDLE_ERRORS(urBindlessImagesUnsampledImageHandleDestroyExp(
UrContext, UrDevice, UrHandle));
UrContext, UrDevice, Handle));

return PI_SUCCESS;
}
Expand All @@ -5383,7 +5382,7 @@ inline pi_result piextMemSampledImageHandleDestroy(pi_context Context,

auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
auto UrHandle = reinterpret_cast<ur_exp_image_handle_t>(Handle);
auto UrHandle = reinterpret_cast<ur_exp_image_native_handle_t>(Handle);

HANDLE_ERRORS(urBindlessImagesSampledImageHandleDestroyExp(
UrContext, UrDevice, UrHandle));
Expand Down Expand Up @@ -5412,16 +5411,18 @@ static void pi2urImageInfoFlags(const pi_image_info PiFlags,
}
}

inline pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
inline pi_result piextMemImageGetInfo(pi_context Context,
pi_image_mem_handle MemHandle,
pi_image_info ParamName, void *ParamValue,
size_t *ParamValueSizeRet) {
auto UrMemHandle = reinterpret_cast<ur_exp_image_mem_handle_t>(MemHandle);
auto UrMemHandle = reinterpret_cast<ur_exp_image_mem_native_handle_t>(MemHandle);
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);

ur_image_info_t UrParamName{};
pi2urImageInfoFlags(ParamName, &UrParamName);

HANDLE_ERRORS(urBindlessImagesImageGetInfoExp(UrMemHandle, UrParamName,
ParamValue, ParamValueSizeRet));
HANDLE_ERRORS(urBindlessImagesImageGetInfoExp(
UrContext, UrMemHandle, UrParamName, ParamValue, ParamValueSizeRet));

if (ParamName == pi_image_info::PI_IMAGE_INFO_FORMAT && ParamValue) {
pi_image_format PiFormat;
Expand Down Expand Up @@ -5549,8 +5550,8 @@ inline pi_result piextMemMapExternalArray(pi_context Context, pi_device Device,
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);

auto UrMemHandle = reinterpret_cast<ur_exp_interop_mem_handle_t>(MemHandle);
ur_exp_image_mem_handle_t *UrRetMem =
reinterpret_cast<ur_exp_image_mem_handle_t *>(RetMem);
ur_exp_image_mem_native_handle_t *UrRetMem =
reinterpret_cast<ur_exp_image_mem_native_handle_t *>(RetMem);

HANDLE_ERRORS(urBindlessImagesMapExternalArrayExp(
UrContext, UrDevice, &UrFormat, &UrDesc, UrMemHandle, UrRetMem));
Expand Down
5 changes: 3 additions & 2 deletions sycl/plugins/unified_runtime/pi_unified_runtime.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1381,11 +1381,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
}

__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
pi_image_mem_handle MemHandle,
pi_image_info ParamName,
void *ParamValue,
size_t *ParamValueSizeRet) {
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
ParamValueSizeRet);
}

Expand Down
15 changes: 10 additions & 5 deletions sycl/source/detail/bindless_images.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -802,15 +802,18 @@ __SYCL_EXPORT sycl::range<3> get_image_range(const image_mem_handle memHandle,

Plugin->call<sycl::errc::invalid,
sycl::detail::PiApiKind::piextMemImageGetInfo>(
memHandle.raw_handle, PI_IMAGE_INFO_WIDTH, &Width, nullptr);
CtxImpl->getHandleRef(), memHandle.raw_handle, PI_IMAGE_INFO_WIDTH,
&Width, nullptr);

Plugin->call<sycl::errc::invalid,
sycl::detail::PiApiKind::piextMemImageGetInfo>(
memHandle.raw_handle, PI_IMAGE_INFO_HEIGHT, &Height, nullptr);
CtxImpl->getHandleRef(), memHandle.raw_handle, PI_IMAGE_INFO_HEIGHT,
&Height, nullptr);

Plugin->call<sycl::errc::invalid,
sycl::detail::PiApiKind::piextMemImageGetInfo>(
memHandle.raw_handle, PI_IMAGE_INFO_DEPTH, &Depth, nullptr);
CtxImpl->getHandleRef(), memHandle.raw_handle, PI_IMAGE_INFO_DEPTH,
&Depth, nullptr);

return {Width, Height, Depth};
}
Expand All @@ -834,7 +837,8 @@ get_image_channel_type(const image_mem_handle memHandle,

Plugin->call<sycl::errc::invalid,
sycl::detail::PiApiKind::piextMemImageGetInfo>(
memHandle.raw_handle, PI_IMAGE_INFO_FORMAT, &PIFormat, nullptr);
CtxImpl->getHandleRef(), memHandle.raw_handle, PI_IMAGE_INFO_FORMAT,
&PIFormat, nullptr);

image_channel_type ChannelType =
sycl::detail::convertChannelType(PIFormat.image_channel_data_type);
Expand Down Expand Up @@ -920,7 +924,8 @@ get_image_num_channels(const image_mem_handle memHandle,

Plugin->call<sycl::errc::runtime,
sycl::detail::PiApiKind::piextMemImageGetInfo>(
memHandle.raw_handle, PI_IMAGE_INFO_FORMAT, &PIFormat, nullptr);
CtxImpl->getHandleRef(), memHandle.raw_handle, PI_IMAGE_INFO_FORMAT,
&PIFormat, nullptr);

image_channel_order Order =
sycl::detail::convertChannelOrder(PIFormat.image_channel_order);
Expand Down
3 changes: 2 additions & 1 deletion sycl/unittests/helpers/PiMockPlugin.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -608,7 +608,8 @@ inline pi_result mock_piextMemImageCopy(
return PI_SUCCESS;
}

inline pi_result mock_piextMemImageGetInfo(const pi_image_mem_handle mem_handle,
inline pi_result mock_piextMemImageGetInfo(const pi_context context,
const pi_image_mem_handle mem_handle,
pi_image_info param_name,
void *param_value,
size_t *param_value_size_ret) {
Expand Down

0 comments on commit 0fe5f60

Please sign in to comment.