Skip to content

Commit 0473316

Browse files
authored
[NFC][SYCL] Break include's cycle (#1770)
This changes is required for #1747. Suppose we add `#include <CL/sycl/accessor.hpp>` in `interop_handle.hpp` . Furthermore we will add `#include <CL/sycl/interop_handle.hpp>` to `include/CL/sycl/handler.hpp`. Then, we will have the following cycle (here `->` says `which includes`): ``` handler.hpp -> interop_handle.hpp -> accessor.hpp -> handler.hpp (cycle here) ``` Also, this patch eliminates use of `reinterpret_cast` (either as it is or C-style) when converting `accessor` to `AccessorBaseHost` at host.
1 parent f9226d2 commit 0473316

File tree

13 files changed

+483
-371
lines changed

13 files changed

+483
-371
lines changed

sycl/include/CL/sycl/accessor.hpp

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
#include <CL/sycl/detail/common.hpp>
1616
#include <CL/sycl/detail/export.hpp>
1717
#include <CL/sycl/detail/generic_type_traits.hpp>
18+
#include <CL/sycl/detail/handler_proxy.hpp>
1819
#include <CL/sycl/detail/image_accessor_util.hpp>
1920
#include <CL/sycl/detail/image_ocl_types.hpp>
2021
#include <CL/sycl/exception.hpp>
21-
#include <CL/sycl/handler.hpp>
2222
#include <CL/sycl/id.hpp>
2323
#include <CL/sycl/image.hpp>
2424
#include <CL/sycl/pointers.hpp>
@@ -846,7 +846,7 @@ class accessor :
846846
detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), AccessMode,
847847
detail::getSyclObjImpl(BufferRef).get(), Dimensions, sizeof(DataT),
848848
BufferRef.OffsetInBytes, BufferRef.IsSubBuffer) {
849-
CommandGroupHandler.associateWithHandler(*this);
849+
detail::associateWithHandler(CommandGroupHandler, this, AccessTarget);
850850
}
851851
#endif
852852

@@ -888,7 +888,7 @@ class accessor :
888888
detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), AccessMode,
889889
detail::getSyclObjImpl(BufferRef).get(), Dimensions, sizeof(DataT),
890890
BufferRef.OffsetInBytes, BufferRef.IsSubBuffer) {
891-
CommandGroupHandler.associateWithHandler(*this);
891+
detail::associateWithHandler(CommandGroupHandler, this, AccessTarget);
892892
}
893893
#endif
894894

@@ -932,7 +932,7 @@ class accessor :
932932
AccessMode, detail::getSyclObjImpl(BufferRef).get(),
933933
Dimensions, sizeof(DataT), BufferRef.OffsetInBytes,
934934
BufferRef.IsSubBuffer) {
935-
CommandGroupHandler.associateWithHandler(*this);
935+
detail::associateWithHandler(CommandGroupHandler, this, AccessTarget);
936936
}
937937
#endif
938938

@@ -1238,7 +1238,10 @@ class accessor<DataT, Dimensions, AccessMode, access::target::image,
12381238
access::target::image, IsPlaceholder>(
12391239
Image, CommandGroupHandler,
12401240
(detail::getSyclObjImpl(Image))->getElementSize()) {
1241-
CommandGroupHandler.associateWithHandler(*this);
1241+
#ifndef __SYCL_DEVICE_ONLY__
1242+
detail::associateWithHandler(CommandGroupHandler, this,
1243+
access::target::image);
1244+
#endif
12421245
}
12431246
#ifdef __SYCL_DEVICE_ONLY__
12441247
private:
@@ -1313,7 +1316,10 @@ class accessor<DataT, Dimensions, AccessMode, access::target::image_array,
13131316
access::target::image, IsPlaceholder>(
13141317
Image, CommandGroupHandler,
13151318
(detail::getSyclObjImpl(Image))->getElementSize()) {
1316-
CommandGroupHandler.associateWithHandler(*this);
1319+
#ifndef __SYCL_DEVICE_ONLY__
1320+
detail::associateWithHandler(CommandGroupHandler, this,
1321+
access::target::image_array);
1322+
#endif
13171323
}
13181324

13191325
detail::__image_array_slice__<DataT, Dimensions, AccessMode, IsPlaceholder>

sycl/include/CL/sycl/detail/buffer_impl.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
#include <CL/sycl/detail/export.hpp>
1515
#include <CL/sycl/detail/helpers.hpp>
1616
#include <CL/sycl/detail/sycl_mem_obj_t.hpp>
17-
#include <CL/sycl/handler.hpp>
1817
#include <CL/sycl/property_list.hpp>
1918
#include <CL/sycl/stl.hpp>
2019
#include <CL/sycl/types.hpp>
@@ -32,7 +31,6 @@ template <typename DataT, int Dimensions, access::mode AccessMode,
3231
class accessor;
3332
template <typename T, int Dimensions, typename AllocatorT, typename Enable>
3433
class buffer;
35-
class handler;
3634

3735
using buffer_allocator = detail::sycl_memory_object_allocator;
3836

0 commit comments

Comments
 (0)