Skip to content

Commit 44861fe

Browse files
callumfarekbenzie
andauthored
[UR] Bump UR and implement changes to bindless image handle types (#14516)
oneapi-src/unified-runtime#1829 --------- Co-authored-by: Kenneth Benzie (Benie) <[email protected]>
1 parent e40283b commit 44861fe

File tree

11 files changed

+73
-55
lines changed

11 files changed

+73
-55
lines changed

sycl/include/sycl/detail/pi.h

+9-5
Original file line numberDiff line numberDiff line change
@@ -199,9 +199,10 @@
199199
// 16.56 Replaced piextUSMEnqueueMemset with piextUSMEnqueueFill
200200
// 16.57 Added mappings to UR launch properties extension
201201
// (piextEnqueueKernelLaunchCustom)
202+
// 17.58 Added context parameter to piextMemImageGetInfo
202203

203-
#define _PI_H_VERSION_MAJOR 16
204-
#define _PI_H_VERSION_MINOR 57
204+
#define _PI_H_VERSION_MAJOR 17
205+
#define _PI_H_VERSION_MINOR 58
205206

206207
#define _PI_STRING_HELPER(a) #a
207208
#define _PI_CONCAT(a, b) _PI_STRING_HELPER(a.b)
@@ -3102,13 +3103,16 @@ __SYCL_EXPORT pi_result piextMemImageCopy(
31023103

31033104
/// API to query an image memory handle for specific properties.
31043105
///
3106+
/// \param context is the handle to the context
31053107
/// \param mem_handle is the handle to the image memory
31063108
/// \param param_name is the queried info name
31073109
/// \param param_value is the returned query value
31083110
/// \param param_value_size_ret is the returned query value size
3109-
__SYCL_EXPORT pi_result piextMemImageGetInfo(
3110-
const pi_image_mem_handle mem_handle, pi_image_info param_name,
3111-
void *param_value, size_t *param_value_size_ret);
3111+
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context context,
3112+
pi_image_mem_handle mem_handle,
3113+
pi_image_info param_name,
3114+
void *param_value,
3115+
size_t *param_value_size_ret);
31123116

31133117
/// [DEPRECATED] This function is deprecated in favor of
31143118
/// `piextImportExternalMemory`

sycl/plugins/cuda/pi_cuda.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -446,11 +446,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
446446
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
447447
}
448448

449-
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
449+
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
450+
pi_image_mem_handle MemHandle,
450451
pi_image_info ParamName,
451452
void *ParamValue,
452453
size_t *ParamValueSizeRet) {
453-
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
454+
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
454455
ParamValueSizeRet);
455456
}
456457

sycl/plugins/hip/pi_hip.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -449,11 +449,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
449449
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
450450
}
451451

452-
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
452+
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
453+
pi_image_mem_handle MemHandle,
453454
pi_image_info ParamName,
454455
void *ParamValue,
455456
size_t *ParamValueSizeRet) {
456-
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
457+
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
457458
ParamValueSizeRet);
458459
}
459460

sycl/plugins/level_zero/pi_level_zero.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -458,11 +458,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
458458
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
459459
}
460460

461-
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
461+
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
462+
pi_image_mem_handle MemHandle,
462463
pi_image_info ParamName,
463464
void *ParamValue,
464465
size_t *ParamValueSizeRet) {
465-
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
466+
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
466467
ParamValueSizeRet);
467468
}
468469

sycl/plugins/native_cpu/pi_native_cpu.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -453,11 +453,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
453453
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
454454
}
455455

456-
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
456+
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
457+
pi_image_mem_handle MemHandle,
457458
pi_image_info ParamName,
458459
void *ParamValue,
459460
size_t *ParamValueSizeRet) {
460-
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
461+
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
461462
ParamValueSizeRet);
462463
}
463464

sycl/plugins/opencl/pi_opencl.cpp

+6-4
Original file line numberDiff line numberDiff line change
@@ -430,10 +430,12 @@ pi_result piextMemSampledImageHandleDestroy(pi_context Context,
430430
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
431431
}
432432

433-
pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
434-
pi_image_info ParamName, void *ParamValue,
435-
size_t *ParamValueSizeRet) {
436-
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
433+
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
434+
pi_image_mem_handle MemHandle,
435+
pi_image_info ParamName,
436+
void *ParamValue,
437+
size_t *ParamValueSizeRet) {
438+
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
437439
ParamValueSizeRet);
438440
}
439441

sycl/plugins/unified_runtime/CMakeLists.txt

+6-6
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,13 @@ if(SYCL_PI_UR_USE_FETCH_CONTENT)
100100
endfunction()
101101

102102
set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git")
103-
# commit 529e8b9c34acd231eb5b829f6af8123e5f09c974
104-
# Merge: 6b33a1bb 5dc794cb
103+
# commit 642e3437b8a0a3e702ac3d68513d7076e7618c94
104+
# Merge: 342bdfff 199287b7
105105
# Author: Kenneth Benzie (Benie) <[email protected]>
106-
# Date: Wed Jul 10 15:05:31 2024 +0100
107-
# Merge pull request #1816 from nrspruit/l0_intel_driver_version
108-
# [L0] Use Intel Level Zero Driver String extension
109-
set(UNIFIED_RUNTIME_TAG 529e8b9c34acd231eb5b829f6af8123e5f09c974)
106+
# Date: Thu Jul 11 10:37:50 2024 +0100
107+
# Merge pull request #1829 from callumfare/callum/bindless_workaround
108+
# Treat bindless images handle types as native handles
109+
set(UNIFIED_RUNTIME_TAG 642e3437b8a0a3e702ac3d68513d7076e7618c94)
110110

111111
fetch_adapter_source(level_zero
112112
${UNIFIED_RUNTIME_REPO}

sycl/plugins/unified_runtime/pi2ur.hpp

+25-24
Original file line numberDiff line numberDiff line change
@@ -5084,8 +5084,8 @@ inline pi_result piextMemImageAllocate(pi_context Context, pi_device Device,
50845084
ur_image_desc_t UrDesc{};
50855085
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);
50865086

5087-
ur_exp_image_mem_handle_t *UrRetMem =
5088-
reinterpret_cast<ur_exp_image_mem_handle_t *>(RetMem);
5087+
ur_exp_image_mem_native_handle_t *UrRetMem =
5088+
reinterpret_cast<ur_exp_image_mem_native_handle_t *>(RetMem);
50895089

50905090
HANDLE_ERRORS(urBindlessImagesImageAllocateExp(UrContext, UrDevice, &UrFormat,
50915091
&UrDesc, UrRetMem));
@@ -5104,14 +5104,14 @@ inline pi_result piextMemUnsampledImageCreate(pi_context Context,
51045104

51055105
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
51065106
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
5107-
auto UrImgMem = reinterpret_cast<ur_exp_image_mem_handle_t>(ImgMem);
5107+
auto UrImgMem = reinterpret_cast<ur_exp_image_mem_native_handle_t>(ImgMem);
51085108

51095109
ur_image_format_t UrFormat{};
51105110
ur_image_desc_t UrDesc{};
51115111
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);
51125112

5113-
ur_exp_image_handle_t *UrRetHandle =
5114-
reinterpret_cast<ur_exp_image_handle_t *>(RetHandle);
5113+
ur_exp_image_native_handle_t *UrRetHandle =
5114+
reinterpret_cast<ur_exp_image_native_handle_t *>(RetHandle);
51155115

51165116
HANDLE_ERRORS(urBindlessImagesUnsampledImageCreateExp(
51175117
UrContext, UrDevice, UrImgMem, &UrFormat, &UrDesc, UrRetHandle));
@@ -5129,15 +5129,15 @@ inline pi_result piextMemSampledImageCreate(
51295129

51305130
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
51315131
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
5132-
auto UrImgMem = reinterpret_cast<ur_exp_image_mem_handle_t>(ImgMem);
5132+
auto UrImgMem = reinterpret_cast<ur_exp_image_mem_native_handle_t>(ImgMem);
51335133

51345134
ur_image_format_t UrFormat{};
51355135
ur_image_desc_t UrDesc{};
51365136
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);
51375137

51385138
auto UrSampler = reinterpret_cast<ur_sampler_handle_t>(Sampler);
5139-
ur_exp_image_handle_t *UrRetHandle =
5140-
reinterpret_cast<ur_exp_image_handle_t *>(RetHandle);
5139+
ur_exp_image_native_handle_t *UrRetHandle =
5140+
reinterpret_cast<ur_exp_image_native_handle_t *>(RetHandle);
51415141

51425142
HANDLE_ERRORS(urBindlessImagesSampledImageCreateExp(
51435143
UrContext, UrDevice, UrImgMem, &UrFormat, &UrDesc, UrSampler,
@@ -5262,9 +5262,9 @@ inline pi_result piextMemMipmapGetLevel(pi_context Context, pi_device Device,
52625262

52635263
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
52645264
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
5265-
auto UrMipMem = reinterpret_cast<ur_exp_image_mem_handle_t>(MipMem);
5266-
ur_exp_image_mem_handle_t *UrRetMem =
5267-
reinterpret_cast<ur_exp_image_mem_handle_t *>(RetMem);
5265+
auto UrMipMem = reinterpret_cast<ur_exp_image_mem_native_handle_t>(MipMem);
5266+
ur_exp_image_mem_native_handle_t *UrRetMem =
5267+
reinterpret_cast<ur_exp_image_mem_native_handle_t *>(RetMem);
52685268

52695269
HANDLE_ERRORS(urBindlessImagesMipmapGetLevelExp(UrContext, UrDevice, UrMipMem,
52705270
Level, UrRetMem));
@@ -5280,7 +5280,7 @@ inline pi_result piextMemImageFree(pi_context Context, pi_device Device,
52805280
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
52815281
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
52825282
auto UrMemoryHandle =
5283-
reinterpret_cast<ur_exp_image_mem_handle_t>(MemoryHandle);
5283+
reinterpret_cast<ur_exp_image_mem_native_handle_t>(MemoryHandle);
52845284

52855285
HANDLE_ERRORS(
52865286
urBindlessImagesImageFreeExp(UrContext, UrDevice, UrMemoryHandle));
@@ -5296,7 +5296,7 @@ inline pi_result piextMemMipmapFree(pi_context Context, pi_device Device,
52965296
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
52975297
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
52985298
auto UrMemoryHandle =
5299-
reinterpret_cast<ur_exp_image_mem_handle_t>(MemoryHandle);
5299+
reinterpret_cast<ur_exp_image_mem_native_handle_t>(MemoryHandle);
53005300

53015301
HANDLE_ERRORS(
53025302
urBindlessImagesMipmapFreeExp(UrContext, UrDevice, UrMemoryHandle));
@@ -5371,10 +5371,9 @@ inline pi_result piextMemUnsampledImageHandleDestroy(pi_context Context,
53715371

53725372
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
53735373
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
5374-
auto UrHandle = reinterpret_cast<ur_exp_image_handle_t>(Handle);
53755374

53765375
HANDLE_ERRORS(urBindlessImagesUnsampledImageHandleDestroyExp(
5377-
UrContext, UrDevice, UrHandle));
5376+
UrContext, UrDevice, Handle));
53785377

53795378
return PI_SUCCESS;
53805379
}
@@ -5387,10 +5386,9 @@ inline pi_result piextMemSampledImageHandleDestroy(pi_context Context,
53875386

53885387
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
53895388
auto UrDevice = reinterpret_cast<ur_device_handle_t>(Device);
5390-
auto UrHandle = reinterpret_cast<ur_exp_image_handle_t>(Handle);
53915389

5392-
HANDLE_ERRORS(urBindlessImagesSampledImageHandleDestroyExp(
5393-
UrContext, UrDevice, UrHandle));
5390+
HANDLE_ERRORS(urBindlessImagesSampledImageHandleDestroyExp(UrContext,
5391+
UrDevice, Handle));
53945392

53955393
return PI_SUCCESS;
53965394
}
@@ -5416,16 +5414,19 @@ static void pi2urImageInfoFlags(const pi_image_info PiFlags,
54165414
}
54175415
}
54185416

5419-
inline pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
5417+
inline pi_result piextMemImageGetInfo(pi_context Context,
5418+
pi_image_mem_handle MemHandle,
54205419
pi_image_info ParamName, void *ParamValue,
54215420
size_t *ParamValueSizeRet) {
5422-
auto UrMemHandle = reinterpret_cast<ur_exp_image_mem_handle_t>(MemHandle);
5421+
auto UrMemHandle =
5422+
reinterpret_cast<ur_exp_image_mem_native_handle_t>(MemHandle);
5423+
auto UrContext = reinterpret_cast<ur_context_handle_t>(Context);
54235424

54245425
ur_image_info_t UrParamName{};
54255426
pi2urImageInfoFlags(ParamName, &UrParamName);
54265427

5427-
HANDLE_ERRORS(urBindlessImagesImageGetInfoExp(UrMemHandle, UrParamName,
5428-
ParamValue, ParamValueSizeRet));
5428+
HANDLE_ERRORS(urBindlessImagesImageGetInfoExp(
5429+
UrContext, UrMemHandle, UrParamName, ParamValue, ParamValueSizeRet));
54295430

54305431
if (ParamName == pi_image_info::PI_IMAGE_INFO_FORMAT && ParamValue) {
54315432
pi_image_format PiFormat;
@@ -5553,8 +5554,8 @@ inline pi_result piextMemMapExternalArray(pi_context Context, pi_device Device,
55535554
pi2urImageDesc(ImageFormat, ImageDesc, &UrFormat, &UrDesc);
55545555

55555556
auto UrMemHandle = reinterpret_cast<ur_exp_interop_mem_handle_t>(MemHandle);
5556-
ur_exp_image_mem_handle_t *UrRetMem =
5557-
reinterpret_cast<ur_exp_image_mem_handle_t *>(RetMem);
5557+
ur_exp_image_mem_native_handle_t *UrRetMem =
5558+
reinterpret_cast<ur_exp_image_mem_native_handle_t *>(RetMem);
55585559

55595560
HANDLE_ERRORS(urBindlessImagesMapExternalArrayExp(
55605561
UrContext, UrDevice, &UrFormat, &UrDesc, UrMemHandle, UrRetMem));

sycl/plugins/unified_runtime/pi_unified_runtime.cpp

+3-2
Original file line numberDiff line numberDiff line change
@@ -1381,11 +1381,12 @@ __SYCL_EXPORT pi_result piextMemSampledImageHandleDestroy(
13811381
return pi2ur::piextMemSampledImageHandleDestroy(Context, Device, Handle);
13821382
}
13831383

1384-
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_image_mem_handle MemHandle,
1384+
__SYCL_EXPORT pi_result piextMemImageGetInfo(pi_context Context,
1385+
pi_image_mem_handle MemHandle,
13851386
pi_image_info ParamName,
13861387
void *ParamValue,
13871388
size_t *ParamValueSizeRet) {
1388-
return pi2ur::piextMemImageGetInfo(MemHandle, ParamName, ParamValue,
1389+
return pi2ur::piextMemImageGetInfo(Context, MemHandle, ParamName, ParamValue,
13891390
ParamValueSizeRet);
13901391
}
13911392

sycl/source/detail/bindless_images.cpp

+10-5
Original file line numberDiff line numberDiff line change
@@ -802,15 +802,18 @@ __SYCL_EXPORT sycl::range<3> get_image_range(const image_mem_handle memHandle,
802802

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

807808
Plugin->call<sycl::errc::invalid,
808809
sycl::detail::PiApiKind::piextMemImageGetInfo>(
809-
memHandle.raw_handle, PI_IMAGE_INFO_HEIGHT, &Height, nullptr);
810+
CtxImpl->getHandleRef(), memHandle.raw_handle, PI_IMAGE_INFO_HEIGHT,
811+
&Height, nullptr);
810812

811813
Plugin->call<sycl::errc::invalid,
812814
sycl::detail::PiApiKind::piextMemImageGetInfo>(
813-
memHandle.raw_handle, PI_IMAGE_INFO_DEPTH, &Depth, nullptr);
815+
CtxImpl->getHandleRef(), memHandle.raw_handle, PI_IMAGE_INFO_DEPTH,
816+
&Depth, nullptr);
814817

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

835838
Plugin->call<sycl::errc::invalid,
836839
sycl::detail::PiApiKind::piextMemImageGetInfo>(
837-
memHandle.raw_handle, PI_IMAGE_INFO_FORMAT, &PIFormat, nullptr);
840+
CtxImpl->getHandleRef(), memHandle.raw_handle, PI_IMAGE_INFO_FORMAT,
841+
&PIFormat, nullptr);
838842

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

921925
Plugin->call<sycl::errc::runtime,
922926
sycl::detail::PiApiKind::piextMemImageGetInfo>(
923-
memHandle.raw_handle, PI_IMAGE_INFO_FORMAT, &PIFormat, nullptr);
927+
CtxImpl->getHandleRef(), memHandle.raw_handle, PI_IMAGE_INFO_FORMAT,
928+
&PIFormat, nullptr);
924929

925930
image_channel_order Order =
926931
sycl::detail::convertChannelOrder(PIFormat.image_channel_order);

sycl/unittests/helpers/PiMockPlugin.hpp

+2-1
Original file line numberDiff line numberDiff line change
@@ -618,7 +618,8 @@ inline pi_result mock_piextMemImageCopy(
618618
return PI_SUCCESS;
619619
}
620620

621-
inline pi_result mock_piextMemImageGetInfo(const pi_image_mem_handle mem_handle,
621+
inline pi_result mock_piextMemImageGetInfo(pi_context context,
622+
pi_image_mem_handle mem_handle,
622623
pi_image_info param_name,
623624
void *param_value,
624625
size_t *param_value_size_ret) {

0 commit comments

Comments
 (0)