Skip to content

[SYCL][Bindless][2/4] Add experimental implementation of SYCL bindless images extension #10112

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
fc60063
[SYCL][Bindless][2/4] Add experimental implementation of SYCL bindles…
Jun 28, 2023
109414b
Address Feedback
isaacault Jun 29, 2023
f4b06f2
Add piext functions to pi_esimd_emulator
isaacault Jun 29, 2023
031107f
Update Level Zero symbol dump file
isaacault Jun 29, 2023
d3a35c0
Address Feedback
isaacault Jun 30, 2023
6e79458
Address Feedback
isaacault Jul 4, 2023
2c87e8c
Merge branch 'sycl' into codeplay/bindless_images_pi_ur
isaacault Jul 4, 2023
2a2b002
* Remove ABI version increase
isaacault Jul 4, 2023
711ebd9
Merge branch 'sycl' into codeplay/bindless_images_pi_ur
isaacault Jul 4, 2023
244497b
Address feedback
isaacault Jul 5, 2023
8daf922
Address Feedback
isaacault Jul 6, 2023
8833b71
Format
isaacault Jul 6, 2023
657b0e5
Update UR API
isaacault Jul 7, 2023
e031c11
Address Feedback
isaacault Jul 10, 2023
d350199
Merge branch 'sycl' into codeplay/bindless_images_pi_ur
isaacault Jul 10, 2023
5e41d20
Address Feedback
isaacault Jul 10, 2023
1bb9c0e
Format
isaacault Jul 10, 2023
cc02804
Address Feedback
isaacault Jul 10, 2023
9e84262
[Bindless] Update interop parameters to follow new UR types
przemektmalon Jul 14, 2023
3fd0131
Merge branch 'sycl' into codeplay/bindless_images_pi_ur
przemektmalon Jul 14, 2023
5e49a4e
Fix mistake in hip sampler
przemektmalon Jul 14, 2023
28240c9
Remove generated files
przemektmalon Jul 14, 2023
f671af6
Merge branch 'sycl' into codeplay/bindless_images_pi_ur
przemektmalon Jul 17, 2023
97be70a
Fix assertion in cuda device.cpp
przemektmalon Jul 17, 2023
0a5a2e8
Merge branch 'sycl' into codeplay/bindless_images_pi_ur
przemektmalon Jul 17, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions sycl/include/sycl/detail/pi.def
Original file line number Diff line number Diff line change
Expand Up @@ -174,4 +174,28 @@ _PI_API(piextCommandBufferMemBufferRead)
_PI_API(piextCommandBufferMemBufferReadRect)
_PI_API(piextEnqueueCommandBuffer)

_PI_API(piextUSMPitchedAlloc)

// Bindless Images
_PI_API(piextMemUnsampledImageHandleDestroy)
_PI_API(piextMemSampledImageHandleDestroy)
_PI_API(piextBindlessImageSamplerCreate)
_PI_API(piextMemImageAllocate)
_PI_API(piextMemImageFree)
_PI_API(piextMemUnsampledImageCreate)
_PI_API(piextMemSampledImageCreate)
_PI_API(piextMemImageCopy)
_PI_API(piextMemImageGetInfo)
_PI_API(piextMemMipmapGetLevel)
_PI_API(piextMemMipmapFree)

// Interop
_PI_API(piextMemImportOpaqueFD)
_PI_API(piextMemReleaseInterop)
_PI_API(piextMemMapExternalArray)
_PI_API(piextImportExternalSemaphoreOpaqueFD)
_PI_API(piextDestroyExternalSemaphore)
_PI_API(piextWaitExternalSemaphore)
_PI_API(piextSignalExternalSemaphore)

#undef _PI_API
310 changes: 309 additions & 1 deletion sycl/include/sycl/detail/pi.h

Large diffs are not rendered by default.

7 changes: 7 additions & 0 deletions sycl/include/sycl/detail/pi.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,13 @@ using PiExtSyncPoint = ::pi_ext_sync_point;
using PiExtCommandBuffer = ::pi_ext_command_buffer;
using PiExtCommandBufferDesc = ::pi_ext_command_buffer_desc;
using PiPeerAttr = ::pi_peer_attr;
using PiImageHandle = ::pi_image_handle;
using PiImageMemHandle = ::pi_image_mem_handle;
using PiImageCopyFlags = ::pi_image_copy_flags;
using PiInteropMemHandle = ::pi_interop_mem_handle;
using PiInteropSemaphoreHandle = ::pi_interop_semaphore_handle;
using PiImageOffset = ::pi_image_offset_struct;
using PiImageRegion = ::pi_image_region_struct;

__SYCL_EXPORT void contextSetExtendedDeleter(const sycl::context &constext,
pi_context_extended_deleter func,
Expand Down
2 changes: 2 additions & 0 deletions sycl/plugins/cuda/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ add_sycl_plugin(cuda
"../unified_runtime/ur/adapters/cuda/enqueue.cpp"
"../unified_runtime/ur/adapters/cuda/event.cpp"
"../unified_runtime/ur/adapters/cuda/event.hpp"
"../unified_runtime/ur/adapters/cuda/image.cpp"
"../unified_runtime/ur/adapters/cuda/image.hpp"
"../unified_runtime/ur/adapters/cuda/kernel.cpp"
"../unified_runtime/ur/adapters/cuda/kernel.hpp"
"../unified_runtime/ur/adapters/cuda/memory.cpp"
Expand Down
29 changes: 29 additions & 0 deletions sycl/plugins/cuda/pi_cuda.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -158,6 +158,7 @@ pi_result piPluginInit(pi_plugin *PluginInit) {
_PI_CL(piextUSMHostAlloc, pi2ur::piextUSMHostAlloc)
_PI_CL(piextUSMDeviceAlloc, pi2ur::piextUSMDeviceAlloc)
_PI_CL(piextUSMSharedAlloc, pi2ur::piextUSMSharedAlloc)
_PI_CL(piextUSMPitchedAlloc, pi2ur::piextUSMPitchedAlloc)
_PI_CL(piextUSMFree, pi2ur::piextUSMFree)
_PI_CL(piextUSMEnqueueMemset, pi2ur::piextUSMEnqueueMemset)
_PI_CL(piextUSMEnqueueMemcpy, pi2ur::piextUSMEnqueueMemcpy)
Expand Down Expand Up @@ -196,10 +197,38 @@ pi_result piPluginInit(pi_plugin *PluginInit) {
_PI_CL(piextCommandBufferMemBufferCopyRect,
pi2ur::piextCommandBufferMemBufferCopyRect)
_PI_CL(piextEnqueueCommandBuffer, pi2ur::piextEnqueueCommandBuffer)

// Peer to Peer
_PI_CL(piextEnablePeerAccess, pi2ur::piextEnablePeerAccess)
_PI_CL(piextDisablePeerAccess, pi2ur::piextDisablePeerAccess)
_PI_CL(piextPeerAccessGetInfo, pi2ur::piextPeerAccessGetInfo)

// Bindless Images
_PI_CL(piextMemUnsampledImageHandleDestroy,
pi2ur::piextMemUnsampledImageHandleDestroy)
_PI_CL(piextMemSampledImageHandleDestroy,
pi2ur::piextMemSampledImageHandleDestroy)
_PI_CL(piextMemImageAllocate, pi2ur::piextMemImageAllocate)
_PI_CL(piextMemImageFree, pi2ur::piextMemImageFree)
_PI_CL(piextMemUnsampledImageCreate, pi2ur::piextMemUnsampledImageCreate)
_PI_CL(piextMemSampledImageCreate, pi2ur::piextMemSampledImageCreate)
_PI_CL(piextBindlessImageSamplerCreate,
pi2ur::piextBindlessImageSamplerCreate)
_PI_CL(piextMemImageCopy, pi2ur::piextMemImageCopy)
_PI_CL(piextMemImageGetInfo, pi2ur::piextMemImageGetInfo)

_PI_CL(piextMemMipmapGetLevel, pi2ur::piextMemMipmapGetLevel)
_PI_CL(piextMemMipmapFree, pi2ur::piextMemMipmapFree)

_PI_CL(piextMemImportOpaqueFD, pi2ur::piextMemImportOpaqueFD)
_PI_CL(piextMemReleaseInterop, pi2ur::piextMemReleaseInterop)
_PI_CL(piextMemMapExternalArray, pi2ur::piextMemMapExternalArray)
_PI_CL(piextImportExternalSemaphoreOpaqueFD,
pi2ur::piextImportExternalSemaphoreOpaqueFD)
_PI_CL(piextDestroyExternalSemaphore, pi2ur::piextDestroyExternalSemaphore)
_PI_CL(piextWaitExternalSemaphore, pi2ur::piextWaitExternalSemaphore)
_PI_CL(piextSignalExternalSemaphore, pi2ur::piextSignalExternalSemaphore)

#undef _PI_CL

return PI_SUCCESS;
Expand Down
102 changes: 102 additions & 0 deletions sycl/plugins/esimd_emulator/pi_esimd_emulator.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -1826,6 +1826,12 @@ pi_result piEnqueueMemImageWrite(pi_queue, pi_mem, pi_bool, pi_image_offset,
DIE_NO_IMPLEMENTATION;
}

pi_result piextBindlessImageSamplerCreate(pi_context,
const pi_sampler_properties *, float,
float, float, pi_sampler *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piEnqueueMemImageCopy(pi_queue, pi_mem, pi_mem, pi_image_offset,
pi_image_offset, pi_image_region, pi_uint32,
const pi_event *, pi_event *) {
Expand Down Expand Up @@ -1968,6 +1974,12 @@ pi_result piextUSMSharedAlloc(void **ResultPtr, pi_context Context,
return PI_SUCCESS;
}

pi_result piextUSMPitchedAlloc(void **, size_t *, pi_context, pi_device,
pi_usm_mem_properties *, size_t, size_t,
unsigned int) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextUSMFree(pi_context Context, void *Ptr) {
if (Context == nullptr) {
return PI_ERROR_INVALID_CONTEXT;
Expand Down Expand Up @@ -2267,6 +2279,96 @@ pi_result piextPeerAccessGetInfo(pi_device command_device,
return ReturnValue(pi_int32{0});
}

pi_result piextMemUnsampledImageHandleDestroy(pi_context, pi_device,
pi_image_handle) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemSampledImageHandleDestroy(pi_context, pi_device,
pi_image_handle) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemImageAllocate(pi_context, pi_device, pi_image_format *,
pi_image_desc *, pi_image_mem_handle *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemMipmapGetLevel(pi_context, pi_device, pi_image_mem_handle,
unsigned int, pi_image_mem_handle *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemImageFree(pi_context, pi_device, pi_image_mem_handle) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemMipmapFree(pi_context, pi_device, pi_image_mem_handle) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemUnsampledImageCreate(pi_context, pi_device,
pi_image_mem_handle, pi_image_format *,
pi_image_desc *, pi_mem *,
pi_image_handle *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemSampledImageCreate(pi_context, pi_device, pi_image_mem_handle,
pi_image_format *, pi_image_desc *,
pi_sampler, pi_mem *, pi_image_handle *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemImageCopy(pi_queue, void *, void *, const pi_image_format *,
const pi_image_desc *, const pi_image_copy_flags,
pi_image_offset, pi_image_offset, pi_image_region,
pi_image_region, pi_uint32, const pi_event *,
pi_event *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemImageGetInfo(const pi_image_mem_handle, pi_image_info, void *,
size_t *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemImportOpaqueFD(pi_context, pi_device, size_t, int,
pi_interop_mem_handle *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemMapExternalArray(pi_context, pi_device, pi_image_format *,
pi_image_desc *, pi_interop_mem_handle,
pi_image_mem_handle *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextMemReleaseInterop(pi_context, pi_device, pi_interop_mem_handle) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextImportExternalSemaphoreOpaqueFD(pi_context, pi_device, int,
pi_interop_semaphore_handle *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextDestroyExternalSemaphore(pi_context, pi_device,
pi_interop_semaphore_handle) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextWaitExternalSemaphore(pi_queue, pi_interop_semaphore_handle,
pi_uint32, const pi_event *, pi_event *) {
DIE_NO_IMPLEMENTATION;
}

pi_result piextSignalExternalSemaphore(pi_queue, pi_interop_semaphore_handle,
pi_uint32, const pi_event *,
pi_event *) {
DIE_NO_IMPLEMENTATION;
}

#ifdef _WIN32
#define __SYCL_PLUGIN_DLL_NAME "pi_esimd_emulator.dll"
#include "../common_win_pi_trace/common_win_pi_trace.hpp"
Expand Down
6 changes: 4 additions & 2 deletions sycl/plugins/level_zero/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,9 @@ add_sycl_plugin(level_zero
"../unified_runtime/ur/adapters/level_zero/context.hpp"
"../unified_runtime/ur/adapters/level_zero/device.hpp"
"../unified_runtime/ur/adapters/level_zero/event.hpp"
"../unified_runtime/ur/adapters/level_zero/memory.hpp"
"../unified_runtime/ur/adapters/level_zero/image.hpp"
"../unified_runtime/ur/adapters/level_zero/kernel.hpp"
"../unified_runtime/ur/adapters/level_zero/memory.hpp"
"../unified_runtime/ur/adapters/level_zero/platform.hpp"
"../unified_runtime/ur/adapters/level_zero/program.hpp"
"../unified_runtime/ur/adapters/level_zero/queue.hpp"
Expand All @@ -120,8 +121,9 @@ add_sycl_plugin(level_zero
"../unified_runtime/ur/adapters/level_zero/context.cpp"
"../unified_runtime/ur/adapters/level_zero/device.cpp"
"../unified_runtime/ur/adapters/level_zero/event.cpp"
"../unified_runtime/ur/adapters/level_zero/memory.cpp"
"../unified_runtime/ur/adapters/level_zero/image.cpp"
"../unified_runtime/ur/adapters/level_zero/kernel.cpp"
"../unified_runtime/ur/adapters/level_zero/memory.cpp"
"../unified_runtime/ur/adapters/level_zero/platform.cpp"
"../unified_runtime/ur/adapters/level_zero/program.cpp"
"../unified_runtime/ur/adapters/level_zero/queue.cpp"
Expand Down
Loading