Skip to content

Commit 95604ae

Browse files
DBDuncanSeanst98cppchedy
authored
[SYCL][Bindless][Doc] Rename interop related structs/funcs to external (#14444)
Rename related interop structs/funcs with "external" keyword over "interop" to align better with existing structs/funcs and other 3rd party APIs. Remove "handle" keyword from imported external memory/semaphore objects to distinguish between 3rd party external handles and imported external handles. --------- Co-authored-by: Sean Stirling <[email protected]> Co-authored-by: chedy.najjar <[email protected]>
1 parent 0f7b261 commit 95604ae

File tree

21 files changed

+419
-439
lines changed

21 files changed

+419
-439
lines changed

llvm/include/llvm/SYCLLowerIR/DeviceConfigFile.td

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ def AspectExt_oneapi_bindless_images : Aspect<"ext_oneapi_bindless_images">;
5353
def AspectExt_oneapi_bindless_images_shared_usm : Aspect<"ext_oneapi_bindless_images_shared_usm">;
5454
def AspectExt_oneapi_bindless_images_1d_usm : Aspect<"ext_oneapi_bindless_images_1d_usm">;
5555
def AspectExt_oneapi_bindless_images_2d_usm : Aspect<"ext_oneapi_bindless_images_2d_usm">;
56-
def AspectExt_oneapi_interop_memory_import : Aspect<"ext_oneapi_interop_memory_import">;
57-
def AspectExt_oneapi_interop_semaphore_import : Aspect<"ext_oneapi_interop_semaphore_import">;
56+
def AspectExt_oneapi_external_memory_import : Aspect<"ext_oneapi_external_memory_import">;
57+
def AspectExt_oneapi_external_semaphore_import : Aspect<"ext_oneapi_external_semaphore_import">;
5858
def AspectExt_oneapi_mipmap : Aspect<"ext_oneapi_mipmap">;
5959
def AspectExt_oneapi_mipmap_anisotropy : Aspect<"ext_oneapi_mipmap_anisotropy">;
6060
def AspectExt_oneapi_mipmap_level_reference : Aspect<"ext_oneapi_mipmap_level_reference">;
@@ -130,16 +130,17 @@ def : TargetInfo<"__TestAspectList",
130130
AspectExt_intel_device_id, AspectExt_intel_memory_clock_rate, AspectExt_intel_memory_bus_width, AspectEmulated,
131131
AspectExt_intel_legacy_image, AspectExt_oneapi_bindless_images,
132132
AspectExt_oneapi_bindless_images_shared_usm, AspectExt_oneapi_bindless_images_1d_usm, AspectExt_oneapi_bindless_images_2d_usm,
133-
AspectExt_oneapi_interop_memory_import, AspectExt_oneapi_interop_semaphore_import,
133+
AspectExt_oneapi_external_memory_import, AspectExt_oneapi_external_semaphore_import,
134134
AspectExt_oneapi_mipmap, AspectExt_oneapi_mipmap_anisotropy, AspectExt_oneapi_mipmap_level_reference,
135-
AspectExt_oneapi_bindless_sampled_image_fetch_3d, AspectExt_oneapi_cubemap,
135+
AspectExt_oneapi_cubemap,
136136
AspectExt_oneapi_cubemap_seamless_filtering,
137137
AspectExt_oneapi_image_array,
138138
AspectExt_oneapi_unique_addressing_per_dim,
139139
AspectExt_oneapi_bindless_images_sample_1d_usm,
140140
AspectExt_oneapi_bindless_images_sample_2d_usm,
141141
AspectExt_oneapi_bindless_sampled_image_fetch_1d_usm, AspectExt_oneapi_bindless_sampled_image_fetch_1d,
142142
AspectExt_oneapi_bindless_sampled_image_fetch_2d_usm, AspectExt_oneapi_bindless_sampled_image_fetch_2d,
143+
AspectExt_oneapi_bindless_sampled_image_fetch_3d,
143144
AspectExt_intel_esimd,
144145
AspectExt_oneapi_ballot_group, AspectExt_oneapi_fixed_size_group, AspectExt_oneapi_opportunistic_group,
145146
AspectExt_oneapi_tangle_group, AspectExt_intel_matrix, AspectExt_oneapi_is_composite, AspectExt_oneapi_is_component,
@@ -220,8 +221,8 @@ defvar CudaMinAspects = !listconcat(AllUSMAspects, [AspectGpu, AspectFp64, Aspec
220221
AspectExt_oneapi_opportunistic_group, AspectExt_oneapi_graph, AspectExt_oneapi_limited_graph]);
221222
// Bindless images aspects are partially supported on CUDA and disabled by default at the moment.
222223
defvar CudaBindlessImagesAspects = [AspectExt_oneapi_bindless_images, AspectExt_oneapi_bindless_images_shared_usm,
223-
AspectExt_oneapi_bindless_images_1d_usm, AspectExt_oneapi_bindless_images_2d_usm, AspectExt_oneapi_interop_memory_import,
224-
AspectExt_oneapi_interop_semaphore_import, AspectExt_oneapi_mipmap, AspectExt_oneapi_mipmap_anisotropy,
224+
AspectExt_oneapi_bindless_images_1d_usm, AspectExt_oneapi_bindless_images_2d_usm, AspectExt_oneapi_external_memory_import,
225+
AspectExt_oneapi_external_semaphore_import, AspectExt_oneapi_mipmap, AspectExt_oneapi_mipmap_anisotropy,
225226
AspectExt_oneapi_mipmap_level_reference, AspectExt_oneapi_cubemap, AspectExt_oneapi_cubemap_seamless_filtering,
226227
AspectExt_oneapi_image_array, AspectExt_oneapi_unique_addressing_per_dim, AspectExt_oneapi_bindless_images_sample_2d_usm,
227228
AspectExt_oneapi_bindless_images_sample_2d_usm];

sycl/cmake/modules/FetchUnifiedRuntime.cmake

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -116,13 +116,12 @@ if(SYCL_PI_UR_USE_FETCH_CONTENT)
116116
endfunction()
117117

118118
set(UNIFIED_RUNTIME_REPO "https://github.com/oneapi-src/unified-runtime.git")
119-
# commit a985a81dc9ba8adfcc8b54e35ad287e97766fb3e
120-
# Merge: b7b0c8b3 f772f907
121-
# Author: Piotr Balcer <[email protected]>
122-
# Date: Mon Jul 29 09:11:29 2024 +0200
123-
# Merge pull request #1905 from igchor/umf_hwloc_disable
124-
# Bump UMF version to allow disabling hwloc
125-
set(UNIFIED_RUNTIME_TAG a985a81dc9ba8adfcc8b54e35ad287e97766fb3e)
119+
# commit bc1a28ede0df7f837047b632e00437587672c134
120+
# Author: Omar Ahmed <[email protected]>
121+
# Date: Mon Jul 29 16:44:58 2024 +0100
122+
# Merge pull request #1819 from DBDuncan/sean/rename-interop-to-external
123+
# [Bindless][Exp] Rename interop related structs/funcs with "external"
124+
set(UNIFIED_RUNTIME_TAG bc1a28ede0df7f837047b632e00437587672c134)
126125

127126
set(UMF_BUILD_EXAMPLES OFF CACHE INTERNAL "EXAMPLES")
128127
# Due to the use of dependentloadflag and no installer for UMF and hwloc we need

sycl/doc/extensions/experimental/sycl_ext_oneapi_bindless_images.asciidoc

Lines changed: 72 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -1591,9 +1591,9 @@ The device aspect descriptors for these queries are:
15911591
[frame="none",options="header"]
15921592
|======================
15931593
|Device descriptor |Description
1594-
|`aspect::ext_oneapi_interop_memory_import` | Indicates if the device supports
1594+
|`aspect::ext_oneapi_external_memory_import` | Indicates if the device supports
15951595
importing external memory resources.
1596-
|`aspect::ext_oneapi_interop_semaphore_import`` | Indicates if the device
1596+
|`aspect::ext_oneapi_external_semaphore_import`` | Indicates if the device
15971597
supports importing external semaphore resources.
15981598
|======================
15991599

@@ -1687,35 +1687,35 @@ resource type.
16871687
```cpp
16881688
namespace sycl::ext::oneapi::experimental {
16891689

1690-
struct interop_mem_handle {
1690+
struct external_mem {
16911691
using raw_handle_type = /* Implementation defined */;
16921692
raw_handle_type raw_handle;
16931693
};
16941694

16951695
template <typename ResourceType>
1696-
interop_mem_handle import_external_memory(
1696+
external_mem import_external_memory(
16971697
external_mem_descriptor<ResourceType> externalMemDescriptor,
16981698
const sycl::device &syclDevice,
16991699
const sycl::context &syclContext);
17001700

17011701
template <typename ResourceType>
1702-
interop_mem_handle import_external_memory(
1702+
external_mem import_external_memory(
17031703
external_mem_descriptor<ResourceType> externalMemDescriptor,
17041704
const sycl::queue &syclQueue);
17051705

17061706
image_mem_handle map_external_image_memory(
1707-
interop_mem_handle interopMemHandle,
1707+
external_mem externalMemHandle,
17081708
const image_descriptor &imageDescriptor,
17091709
const sycl::device &syclDevice,
17101710
const sycl::context &syclContext);
17111711
image_mem_handle map_external_image_memory(
1712-
interop_mem_handle interopMemHandle,
1712+
external_mem externalMemHandle,
17131713
const image_descriptor &imageDescriptor,
17141714
const sycl::queue &syclQueue);
17151715
}
17161716
```
17171717

1718-
The resulting `interop_mem_handle` can then be mapped, where the resulting type
1718+
The resulting `external_mem` can then be mapped, where the resulting type
17191719
is an `image_mem_handle`. This can be used to construct images in the same way
17201720
as memory allocated through `alloc_image_mem`. The `ext_oneapi_copy` operations
17211721
also work with imported memory mapped to `image_mem_handle` types.
@@ -1734,16 +1734,16 @@ behaviour.
17341734
Once a user has finished operating on imported memory, they must ensure that
17351735
they destroy the imported memory handle through `release_external_memory`.
17361736

1737-
`release_external_memory` can only accept `interop_mem_handles` that were
1737+
`release_external_memory` can only accept `external_mem` objects that were
17381738
created through `import_external_memory`.
17391739

17401740
```cpp
17411741
namespace sycl::ext::oneapi::experimental {
17421742

1743-
void release_external_memory(interop_mem_handle interopMem,
1743+
void release_external_memory(external_mem externalMem,
17441744
const sycl::device &syclDevice,
17451745
const sycl::context &syclContext);
1746-
void release_external_memory(interop_mem_handle interopMem,
1746+
void release_external_memory(external_mem externalMem,
17471747
const sycl::queue &syclQueue);
17481748
}
17491749
```
@@ -1807,27 +1807,27 @@ compatible with the `resource_fd` resource type.
18071807
```cpp
18081808
namespace sycl::ext::oneapi::experimental {
18091809

1810-
struct interop_semaphore_handle {
1810+
struct external_semaphore {
18111811
using raw_handle_type = /* Implementation defined */;
18121812
raw_handle_type raw_handle;
18131813
};
18141814

18151815
template <typename ResourceType>
1816-
interop_semaphore_handle import_external_semaphore(
1816+
external_semaphore import_external_semaphore(
18171817
external_semaphore_descriptor<ResourceType>
18181818
externalSemaphoreDescriptor,
18191819
const sycl::device &syclDevice,
18201820
const sycl::context &syclContext);
18211821

18221822
template <typename ResourceType>
1823-
interop_semaphore_handle import_external_semaphore(
1823+
external_semaphore import_external_semaphore(
18241824
external_semaphore_descriptor<ResourceType>
18251825
externalSemaphoreDescriptor,
18261826
const sycl::queue &syclQueue);
18271827
}
18281828
```
18291829

1830-
The resulting `interop_semaphore_handle` can then be used in a SYCL command
1830+
The resulting `external_semaphore` can then be used in a SYCL command
18311831
group, to either wait until the semaphore signalled, or signal the semaphore.
18321832

18331833
If the type of semaphore imported supports setting the state of discrete
@@ -1843,77 +1843,77 @@ namespace sycl {
18431843
class handler {
18441844
public:
18451845
void ext_oneapi_wait_external_semaphore(
1846-
ext::oneapi::experimental::interop_semaphore_handle
1847-
interop_semaphore_handle);
1846+
ext::oneapi::experimental::external_semaphore
1847+
external_semaphore);
18481848

18491849
void ext_oneapi_wait_external_semaphore(
1850-
ext::oneapi::experimental::interop_semaphore_handle
1851-
interop_semaphore_handle,
1850+
ext::oneapi::experimental::external_semaphore
1851+
external_semaphore,
18521852
uint64_t wait_value);
18531853

18541854
void ext_oneapi_signal_external_semaphore(
1855-
ext::oneapi::experimental::interop_semaphore_handle
1856-
interop_semaphore_handle);
1855+
ext::oneapi::experimental::external_semaphore
1856+
external_semaphore);
18571857

18581858
void ext_oneapi_signal_external_semaphore(
1859-
ext::oneapi::experimental::interop_semaphore_handle
1860-
interop_semaphore_handle,
1859+
ext::oneapi::experimental::external_semaphore
1860+
external_semaphore,
18611861
uint64_t signal_value);
18621862
};
18631863

18641864
class queue {
18651865
public:
18661866
event ext_oneapi_wait_external_semaphore(
1867-
ext::oneapi::experimental::interop_semaphore_handle
1868-
interop_semaphore_handle);
1867+
ext::oneapi::experimental::external_semaphore
1868+
external_semaphore);
18691869
event ext_oneapi_wait_external_semaphore(
1870-
ext::oneapi::experimental::interop_semaphore_handle
1871-
interop_semaphore_handle,
1870+
ext::oneapi::experimental::external_semaphore
1871+
external_semaphore,
18721872
event DepEvent);
18731873
event ext_oneapi_wait_external_semaphore(
1874-
ext::oneapi::experimental::interop_semaphore_handle
1875-
interop_semaphore_handle,
1874+
ext::oneapi::experimental::external_semaphore
1875+
external_semaphore,
18761876
const std::vector<event> &DepEvents);
18771877

18781878
event ext_oneapi_wait_external_semaphore(
1879-
ext::oneapi::experimental::interop_semaphore_handle
1880-
interop_semaphore_handle,
1879+
ext::oneapi::experimental::external_semaphore
1880+
external_semaphore,
18811881
uint64_t wait_value);
18821882
event ext_oneapi_wait_external_semaphore(
1883-
ext::oneapi::experimental::interop_semaphore_handle
1884-
interop_semaphore_handle,
1883+
ext::oneapi::experimental::external_semaphore
1884+
external_semaphore,
18851885
uint64_t wait_value,
18861886
event DepEvent);
18871887
event ext_oneapi_wait_external_semaphore(
1888-
ext::oneapi::experimental::interop_semaphore_handle
1889-
interop_semaphore_handle,
1888+
ext::oneapi::experimental::external_semaphore
1889+
external_semaphore,
18901890
uint64_t wait_value,
18911891
const std::vector<event> &DepEvents);
18921892

18931893
event ext_oneapi_signal_external_semaphore(
1894-
ext::oneapi::experimental::interop_semaphore_handle
1895-
interop_semaphore_handle);
1894+
ext::oneapi::experimental::external_semaphore
1895+
external_semaphore);
18961896
event ext_oneapi_signal_external_semaphore(
1897-
ext::oneapi::experimental::interop_semaphore_handle
1898-
interop_semaphore_handle,
1897+
ext::oneapi::experimental::external_semaphore
1898+
external_semaphore,
18991899
event DepEvent);
19001900
event ext_oneapi_signal_external_semaphore(
1901-
ext::oneapi::experimental::interop_semaphore_handle
1902-
interop_semaphore_handle,
1901+
ext::oneapi::experimental::external_semaphore
1902+
external_semaphore,
19031903
const std::vector<event> &DepEvents);
19041904

19051905
event ext_oneapi_signal_external_semaphore(
1906-
ext::oneapi::experimental::interop_semaphore_handle
1907-
interop_semaphore_handle,
1906+
ext::oneapi::experimental::external_semaphore
1907+
external_semaphore,
19081908
uint64_t signal_value);
19091909
event ext_oneapi_signal_external_semaphore(
1910-
ext::oneapi::experimental::interop_semaphore_handle
1911-
interop_semaphore_handle,
1910+
ext::oneapi::experimental::external_semaphore
1911+
external_semaphore,
19121912
uint64_t signal_value,
19131913
event DepEvent);
19141914
event ext_oneapi_signal_external_semaphore(
1915-
ext::oneapi::experimental::interop_semaphore_handle
1916-
interop_semaphore_handle,
1915+
ext::oneapi::experimental::external_semaphore
1916+
external_semaphore,
19171917
uint64_t signal_value,
19181918
const std::vector<event> &DepEvents);
19191919
};
@@ -1952,11 +1952,11 @@ access the external semaphore once they are no longer required through
19521952
```cpp
19531953
namespace sycl::ext::oneapi::experimental {
19541954

1955-
void release_external_semaphore(interop_semaphore_handle semaphoreHandle,
1955+
void release_external_semaphore(external_semaphore semaphoreHandle,
19561956
const sycl::device &syclDevice,
19571957
const sycl::context &syclContext);
19581958

1959-
void release_external_semaphore(interop_semaphore_handle semaphoreHandle,
1959+
void release_external_semaphore(external_semaphore semaphoreHandle,
19601960
const sycl::queue &syclQueue);
19611961

19621962
}
@@ -2547,34 +2547,34 @@ sycl::ext::oneapi::experimental::external_semaphore_descriptor<
25472547

25482548
try {
25492549
// Extension: import external semaphores
2550-
sycl::ext::oneapi::experimental::interop_semaphore_handle
2551-
wait_interop_semaphore_handle =
2550+
sycl::ext::oneapi::experimental::external_semaphore
2551+
wait_external_semaphore =
25522552
sycl::ext::oneapi::experimental::import_external_semaphore(
25532553
wait_external_semaphore_desc, queue);
25542554

2555-
sycl::ext::oneapi::experimental::interop_semaphore_handle
2556-
done_interop_semaphore_handle =
2555+
sycl::ext::oneapi::experimental::external_semaphore
2556+
done_external_semaphore =
25572557
sycl::ext::oneapi::experimental::import_external_semaphore(
25582558
done_external_semaphore_desc, queue);
25592559

25602560
// Extension: import external memory from descriptors
2561-
sycl::ext::oneapi::experimental::interop_mem_handle
2562-
input_interop_mem_handle =
2561+
sycl::ext::oneapi::experimental::external_mem
2562+
input_external_mem =
25632563
sycl::ext::oneapi::experimental::import_external_memory(
25642564
input_ext_mem_desc, queue);
25652565

2566-
sycl::ext::oneapi::experimental::interop_mem_handle
2567-
output_interop_mem_handle =
2566+
sycl::ext::oneapi::experimental::external_mem
2567+
output_external_mem =
25682568
sycl::ext::oneapi::experimental::import_external_memory(
25692569
output_ext_mem_desc, queue);
25702570

25712571
// Extension: map imported external memory to image memory
25722572
sycl::ext::oneapi::experimental::image_mem_handle input_mapped_mem_handle =
25732573
sycl::ext::oneapi::experimental::map_external_image_memory(
2574-
input_interop_mem_handle, desc, queue);
2574+
input_external_mem, desc, queue);
25752575
sycl::ext::oneapi::experimental::image_mem_handle output_mapped_mem_handle =
25762576
sycl::ext::oneapi::experimental::map_external_image_memory(
2577-
output_interop_mem_handle, desc, queue);
2577+
output_external_mem, desc, queue);
25782578

25792579
// Extension: create images from mapped memory and return the handles
25802580
sycl::ext::oneapi::experimental::unsampled_image_handle img_input =
@@ -2585,7 +2585,7 @@ try {
25852585
output_mapped_mem_handle, desc, queue);
25862586

25872587
// Extension: wait for imported semaphore
2588-
q.ext_oneapi_wait_external_semaphore(wait_interop_semaphore_handle)
2588+
q.ext_oneapi_wait_external_semaphore(wait_external_semaphore)
25892589

25902590
// Submit our kernel that depends on imported "wait_semaphore_file_descriptor"
25912591
q.submit([&](sycl::handler &cgh) {
@@ -2610,7 +2610,7 @@ try {
26102610
});
26112611

26122612
// Extension: signal imported semaphore
2613-
q.ext_oneapi_signal_external_semaphore(done_interop_semaphore_handle)
2613+
q.ext_oneapi_signal_external_semaphore(done_external_semaphore)
26142614

26152615
// The external API can now use the semaphore it exported to
26162616
// "done_semaphore_file_descriptor" to schedule its own command submissions
@@ -2619,13 +2619,13 @@ try {
26192619

26202620
// Extension: destroy all external resources
26212621
sycl::ext::oneapi::experimental::release_external_memory(
2622-
input_interop_mem_handle, queue);
2622+
input_external_mem, queue);
26232623
sycl::ext::oneapi::experimental::release_external_memory(
2624-
output_interop_mem_handle, queue);
2624+
output_external_mem, queue);
26252625
sycl::ext::oneapi::experimental::release_external_semaphore(
2626-
wait_interop_semaphore_handle, queue);
2626+
wait_external_semaphore, queue);
26272627
sycl::ext::oneapi::experimental::release_external_semaphore(
2628-
done_interop_semaphore_handle, queue);
2628+
done_external_semaphore, queue);
26292629
sycl::ext::oneapi::experimental::destroy_image_handle(img_input, queue);
26302630
sycl::ext::oneapi::experimental::destroy_image_handle(img_output, queue);
26312631
} catch (sycl::exception e) {
@@ -2859,4 +2859,11 @@ These features still need to be handled:
28592859
3D USM images as they are not supported on any platform.
28602860
- Refine the description of `ext_oneapi_bindless_images` aspect
28612861
to indicate support for bindless image APIs.
2862+
|5.16|2024-07-24| - Renamed interop aspect queries, handles, semaphore wait and
2863+
signal functions, by replacing `interop` with `external` for
2864+
consistency with other interop related structs/funcs and
2865+
3rd party interop API naming.
2866+
- Removed `handle` keyword from `interop_xxx_handle` to
2867+
clear up possible confusion between 3rd party interop
2868+
handles and the imported `interop_xxx_handle`.
28622869
|======================

0 commit comments

Comments
 (0)