From a59f693b7acffc9a7cd64ac51d354be1adfb73eb Mon Sep 17 00:00:00 2001 From: Andrei Elovikov Date: Tue, 1 Jul 2025 12:03:23 -0700 Subject: [PATCH] [SYCL] Change `getSyclObjImpl` to return reference to an impl --- sycl/include/sycl/accessor.hpp | 84 +++++----- sycl/include/sycl/accessor_image.hpp | 22 +-- sycl/include/sycl/detail/impl_utils.hpp | 16 +- sycl/include/sycl/detail/owner_less_base.hpp | 6 +- .../oneapi/experimental/current_device.hpp | 4 +- .../sycl/ext/oneapi/weak_object_base.hpp | 4 +- sycl/include/sycl/handler.hpp | 35 ++--- sycl/include/sycl/interop_handle.hpp | 5 +- sycl/include/sycl/kernel_bundle.hpp | 7 +- sycl/include/sycl/usm/usm_pointer_info.hpp | 2 +- sycl/source/backend.cpp | 16 +- sycl/source/backend/level_zero.cpp | 2 +- sycl/source/backend/opencl.cpp | 4 +- sycl/source/context.cpp | 4 +- sycl/source/detail/async_alloc.cpp | 6 +- sycl/source/detail/context_impl.cpp | 6 +- sycl/source/detail/context_impl.hpp | 15 +- .../source/detail/device_global_map_entry.cpp | 2 +- sycl/source/detail/device_image_impl.cpp | 6 +- sycl/source/detail/device_image_impl.hpp | 30 ++-- sycl/source/detail/event_impl.cpp | 4 +- sycl/source/detail/filter_selector_impl.cpp | 2 +- sycl/source/detail/fusion/fusion_wrapper.cpp | 2 +- sycl/source/detail/graph/dynamic_impl.cpp | 6 +- sycl/source/detail/graph/dynamic_impl.hpp | 4 +- sycl/source/detail/graph/graph_impl.cpp | 32 ++-- sycl/source/detail/graph/graph_impl.hpp | 6 +- sycl/source/detail/graph/memory_pool.cpp | 4 +- sycl/source/detail/graph/memory_pool.hpp | 2 +- sycl/source/detail/graph/node_impl.cpp | 4 +- sycl/source/detail/helpers.cpp | 2 +- sycl/source/detail/helpers.hpp | 10 +- sycl/source/detail/image_impl.cpp | 2 +- sycl/source/detail/kernel_bundle_impl.hpp | 48 +++--- sycl/source/detail/kernel_data.cpp | 14 +- sycl/source/detail/kernel_impl.hpp | 18 +-- sycl/source/detail/memory_manager.cpp | 4 +- sycl/source/detail/memory_pool_impl.cpp | 4 +- sycl/source/detail/physical_mem_impl.hpp | 2 +- sycl/source/detail/pipes.cpp | 2 +- sycl/source/detail/platform_impl.cpp | 4 +- .../program_manager/program_manager.cpp | 48 +++--- sycl/source/detail/queue_impl.cpp | 16 +- sycl/source/detail/queue_impl.hpp | 6 +- sycl/source/detail/reduction.cpp | 6 +- sycl/source/detail/scheduler/commands.cpp | 16 +- sycl/source/detail/sycl_mem_obj_t.cpp | 8 +- sycl/source/detail/ur.cpp | 2 +- sycl/source/detail/usm/usm_impl.cpp | 13 +- sycl/source/device_selector.cpp | 2 +- sycl/source/enqueue_functions.cpp | 16 +- sycl/source/handler.cpp | 33 ++-- sycl/source/ipc_memory.cpp | 24 +-- sycl/source/kernel.cpp | 4 +- sycl/source/kernel_bundle.cpp | 10 +- sycl/source/physical_mem.cpp | 2 +- sycl/source/queue.cpp | 36 ++--- sycl/source/queue_v3.cpp | 18 +-- sycl/source/sampler.cpp | 2 +- sycl/source/stream.cpp | 2 +- sycl/source/virtual_mem.cpp | 2 +- .../Extensions/BindlessImages/Semaphores.cpp | 20 +-- .../Extensions/CommandGraph/Barrier.cpp | 141 +++++++++-------- .../Extensions/CommandGraph/CommandGraph.cpp | 144 +++++++++--------- .../Extensions/CommandGraph/Common.hpp | 1 + .../Extensions/CommandGraph/Exceptions.cpp | 6 +- .../Extensions/CommandGraph/InOrderQueue.cpp | 62 ++++---- .../CommandGraph/LinearGraphOptimization.cpp | 6 +- .../Extensions/CommandGraph/MultiThreaded.cpp | 20 +-- .../Extensions/CommandGraph/Queries.cpp | 2 +- .../Extensions/CommandGraph/Subgraph.cpp | 90 +++++------ .../CommandGraph/TopologicalSort.cpp | 16 +- sycl/unittests/Extensions/CompositeDevice.cpp | 4 +- sycl/unittests/Extensions/DeviceGlobal.cpp | 8 +- sycl/unittests/Extensions/GetLastEvent.cpp | 2 +- sycl/unittests/Extensions/USMMemcpy2D.cpp | 8 +- sycl/unittests/SYCL2020/KernelBundle.cpp | 14 +- .../SYCL2020/SpecializationConstant.cpp | 4 +- sycl/unittests/buffer/BufferLocation.cpp | 2 +- sycl/unittests/buffer/BufferReleaseBase.cpp | 14 +- sycl/unittests/buffer/BufferReleaseBase.hpp | 4 +- sycl/unittests/kernel-and-program/Cache.cpp | 46 +++--- .../kernel-and-program/InMemCacheEviction.cpp | 6 +- .../kernel-and-program/KernelInfo.cpp | 2 +- .../kernel-and-program/KernelRelease.cpp | 2 +- .../kernel-and-program/MultipleDevsCache.cpp | 4 +- .../kernel-and-program/OutOfResources.cpp | 4 +- .../PersistentDeviceCodeCache.cpp | 14 +- sycl/unittests/program_manager/BuildLog.cpp | 4 +- sycl/unittests/program_manager/Cleanup.cpp | 12 +- .../DynamicLinking/DynamicLinking.cpp | 2 +- sycl/unittests/program_manager/SubDevices.cpp | 14 +- .../arg_mask/EliminatedArgMask.cpp | 10 +- sycl/unittests/queue/DeviceCheck.cpp | 4 +- sycl/unittests/queue/GetProfilingInfo.cpp | 2 +- sycl/unittests/queue/Hash.cpp | 2 +- sycl/unittests/queue/USM.cpp | 2 +- sycl/unittests/queue/Wait.cpp | 2 +- .../scheduler/AccessorDefaultCtor.cpp | 2 +- sycl/unittests/scheduler/AllocaLinking.cpp | 2 +- .../scheduler/BarrierDependencies.cpp | 10 +- sycl/unittests/scheduler/BlockedCommands.cpp | 8 +- sycl/unittests/scheduler/Commands.cpp | 4 +- .../scheduler/CommandsWaitForEvents.cpp | 12 +- .../scheduler/EnqueueWithDependsOnDeps.cpp | 13 +- sycl/unittests/scheduler/FailedCommands.cpp | 2 +- sycl/unittests/scheduler/GraphCleanup.cpp | 16 +- .../scheduler/HostTaskAndBarrier.cpp | 81 +++++----- sycl/unittests/scheduler/InOrderQueueDeps.cpp | 4 +- .../scheduler/InOrderQueueSyncCheck.cpp | 2 +- sycl/unittests/scheduler/LeafLimit.cpp | 4 +- .../scheduler/LeafLimitDiffContexts.cpp | 8 +- sycl/unittests/scheduler/LeavesCollection.cpp | 6 +- .../scheduler/LinkedAllocaDependencies.cpp | 2 +- .../scheduler/MemObjCommandCleanup.cpp | 8 +- .../scheduler/NoHostUnifiedMemory.cpp | 4 +- sycl/unittests/scheduler/QueueFlushing.cpp | 6 +- .../scheduler/SchedulerTestUtils.hpp | 2 +- sycl/unittests/xpti_trace/QueueIDCheck.cpp | 14 +- 119 files changed, 808 insertions(+), 820 deletions(-) diff --git a/sycl/include/sycl/accessor.hpp b/sycl/include/sycl/accessor.hpp index ad938b2685e07..71bb88a8205f9 100644 --- a/sycl/include/sycl/accessor.hpp +++ b/sycl/include/sycl/accessor.hpp @@ -949,16 +949,15 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : detail::convertToArrayOfN<3, 1>( detail::GetZeroDimAccessRange(BufferRef)), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), - getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), AdjustedDim, sizeof(DataT), - IsPlaceH, BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, - PropertyList) { + getAdjustedMode(PropertyList), &detail::getSyclObjImpl(BufferRef), + AdjustedDim, sizeof(DataT), IsPlaceH, BufferRef.OffsetInBytes, + BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); preScreenAccessor(PropertyList); if (!AccessorBaseHost::isPlaceholder()) addHostAccessorAndWait(AccessorBaseHost::impl.get()); initHostAcc(); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -990,16 +989,15 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : detail::convertToArrayOfN<3, 1>( detail::GetZeroDimAccessRange(BufferRef)), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), - getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), AdjustedDim, sizeof(DataT), - IsPlaceH, BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, - PropertyList) { + getAdjustedMode(PropertyList), &detail::getSyclObjImpl(BufferRef), + AdjustedDim, sizeof(DataT), IsPlaceH, BufferRef.OffsetInBytes, + BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); preScreenAccessor(PropertyList); if (!AccessorBaseHost::isPlaceholder()) addHostAccessorAndWait(AccessorBaseHost::impl.get()); initHostAcc(); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1028,14 +1026,14 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : detail::convertToArrayOfN<3, 1>( detail::GetZeroDimAccessRange(BufferRef)), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), - getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, sizeof(DataT), - BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, PropertyList) { + getAdjustedMode(PropertyList), &detail::getSyclObjImpl(BufferRef), + Dimensions, sizeof(DataT), BufferRef.OffsetInBytes, + BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); preScreenAccessor(PropertyList); detail::associateWithHandler(CommandGroupHandler, this, AccessTarget); initHostAcc(); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1066,14 +1064,14 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : detail::convertToArrayOfN<3, 1>( detail::GetZeroDimAccessRange(BufferRef)), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), - getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, sizeof(DataT), - BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, PropertyList) { + getAdjustedMode(PropertyList), &detail::getSyclObjImpl(BufferRef), + Dimensions, sizeof(DataT), BufferRef.OffsetInBytes, + BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); preScreenAccessor(PropertyList); detail::associateWithHandler(CommandGroupHandler, this, AccessTarget); initHostAcc(); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1099,16 +1097,15 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : /*Offset=*/{0, 0, 0}, detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), - getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, sizeof(DataT), - IsPlaceH, BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, - PropertyList) { + getAdjustedMode(PropertyList), &detail::getSyclObjImpl(BufferRef), + Dimensions, sizeof(DataT), IsPlaceH, BufferRef.OffsetInBytes, + BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); preScreenAccessor(PropertyList); if (!AccessorBaseHost::isPlaceholder()) addHostAccessorAndWait(AccessorBaseHost::impl.get()); initHostAcc(); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1136,16 +1133,15 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : /*Offset=*/{0, 0, 0}, detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), - getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, sizeof(DataT), - IsPlaceH, BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, - PropertyList) { + getAdjustedMode(PropertyList), &detail::getSyclObjImpl(BufferRef), + Dimensions, sizeof(DataT), IsPlaceH, BufferRef.OffsetInBytes, + BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); preScreenAccessor(PropertyList); if (!AccessorBaseHost::isPlaceholder()) addHostAccessorAndWait(AccessorBaseHost::impl.get()); initHostAcc(); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1201,14 +1197,14 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : /*Offset=*/{0, 0, 0}, detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), - getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, sizeof(DataT), - BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, PropertyList) { + getAdjustedMode(PropertyList), &detail::getSyclObjImpl(BufferRef), + Dimensions, sizeof(DataT), BufferRef.OffsetInBytes, + BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); preScreenAccessor(PropertyList); detail::associateWithHandler(CommandGroupHandler, this, AccessTarget); initHostAcc(); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1237,14 +1233,14 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : /*Offset=*/{0, 0, 0}, detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), - getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, sizeof(DataT), - BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, PropertyList) { + getAdjustedMode(PropertyList), &detail::getSyclObjImpl(BufferRef), + Dimensions, sizeof(DataT), BufferRef.OffsetInBytes, + BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); preScreenAccessor(PropertyList); initHostAcc(); detail::associateWithHandler(CommandGroupHandler, this, AccessTarget); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1414,7 +1410,7 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : detail::convertToArrayOfN<3, 1>(AccessRange), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, + &detail::getSyclObjImpl(BufferRef), Dimensions, sizeof(DataT), IsPlaceH, BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); @@ -1428,7 +1424,7 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : "exceed the bounds of the buffer"); initHostAcc(); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1457,7 +1453,7 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : detail::convertToArrayOfN<3, 1>(AccessRange), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, + &detail::getSyclObjImpl(BufferRef), Dimensions, sizeof(DataT), IsPlaceH, BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); @@ -1471,7 +1467,7 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : "exceed the bounds of the buffer"); initHostAcc(); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1529,7 +1525,7 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : detail::convertToArrayOfN<3, 1>(AccessRange), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, + &detail::getSyclObjImpl(BufferRef), Dimensions, sizeof(DataT), BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); @@ -1542,7 +1538,7 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : initHostAcc(); detail::associateWithHandler(CommandGroupHandler, this, AccessTarget); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); @@ -1572,7 +1568,7 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : detail::convertToArrayOfN<3, 1>(AccessRange), detail::convertToArrayOfN<3, 1>(BufferRef.get_range()), getAdjustedMode(PropertyList), - detail::getSyclObjImpl(BufferRef).get(), Dimensions, + &detail::getSyclObjImpl(BufferRef), Dimensions, sizeof(DataT), BufferRef.OffsetInBytes, BufferRef.IsSubBuffer, PropertyList) { throwIfUsedByGraph(); @@ -1585,7 +1581,7 @@ class __SYCL_EBO __SYCL_SPECIAL_CLASS __SYCL_TYPE(accessor) accessor : initHostAcc(); detail::associateWithHandler(CommandGroupHandler, this, AccessTarget); - detail::constructorNotification(detail::getSyclObjImpl(BufferRef).get(), + detail::constructorNotification(&detail::getSyclObjImpl(BufferRef), detail::AccessorBaseHost::impl.get(), AccessTarget, AccessMode, CodeLoc); GDBMethodsAnchor(); diff --git a/sycl/include/sycl/accessor_image.hpp b/sycl/include/sycl/accessor_image.hpp index be5eb3a697ae4..55132d8132aa8 100644 --- a/sycl/include/sycl/accessor_image.hpp +++ b/sycl/include/sycl/accessor_image.hpp @@ -333,7 +333,7 @@ class image_accessor : AccessorBaseHost({ImageRef.getRowPitch(), ImageRef.getSlicePitch(), 0}, detail::convertToArrayOfN<3, 1>(ImageRef.get_range()), detail::convertToArrayOfN<3, 1>(ImageRef.get_range()), - AccessMode, detail::getSyclObjImpl(ImageRef).get(), + AccessMode, &detail::getSyclObjImpl(ImageRef), Dimensions, ImageElementSize, size_t(0)), MImageCount(ImageRef.size()), MImgChannelOrder(ImageRef.getChannelOrder()), @@ -362,7 +362,7 @@ class image_accessor : AccessorBaseHost({ImageRef.getRowPitch(), ImageRef.getSlicePitch(), 0}, detail::convertToArrayOfN<3, 1>(ImageRef.get_range()), detail::convertToArrayOfN<3, 1>(ImageRef.get_range()), - AccessMode, detail::getSyclObjImpl(ImageRef).get(), + AccessMode, &detail::getSyclObjImpl(ImageRef), Dimensions, ImageElementSize, size_t(0)), MImageCount(ImageRef.size()), MImgChannelOrder(ImageRef.getChannelOrder()), @@ -803,7 +803,7 @@ class __SYCL_EBO unsampled_image_accessor : } #else : host_base_class(detail::convertToArrayOfN<3, 1>(ImageRef.get_range()), - AccessMode, detail::getSyclObjImpl(ImageRef).get(), + AccessMode, &detail::getSyclObjImpl(ImageRef), Dimensions, ImageRef.getElementSize(), {ImageRef.getRowPitch(), ImageRef.getSlicePitch(), 0}, ImageRef.getChannelType(), ImageRef.getChannelOrder(), @@ -818,7 +818,7 @@ class __SYCL_EBO unsampled_image_accessor : "aspect::image."); detail::unsampledImageConstructorNotification( - detail::getSyclObjImpl(ImageRef).get(), this->impl.get(), AccessTarget, + &detail::getSyclObjImpl(ImageRef), this->impl.get(), AccessTarget, AccessMode, (const void *)typeid(DataT).name(), sizeof(DataT), CodeLoc); detail::associateWithHandler(CommandGroupHandlerRef, this, AccessTarget); GDBMethodsAnchor(); @@ -950,15 +950,15 @@ class __SYCL_EBO host_unsampled_image_accessor const property_list &PropList = {}, const detail::code_location CodeLoc = detail::code_location::current()) : base_class(detail::convertToArrayOfN<3, 1>(ImageRef.get_range()), - AccessMode, detail::getSyclObjImpl(ImageRef).get(), - Dimensions, ImageRef.getElementSize(), + AccessMode, &detail::getSyclObjImpl(ImageRef), Dimensions, + ImageRef.getElementSize(), {ImageRef.getRowPitch(), ImageRef.getSlicePitch(), 0}, ImageRef.getChannelType(), ImageRef.getChannelOrder(), PropList) { addHostUnsampledImageAccessorAndWait(base_class::impl.get()); detail::unsampledImageConstructorNotification( - detail::getSyclObjImpl(ImageRef).get(), this->impl.get(), std::nullopt, + &detail::getSyclObjImpl(ImageRef), this->impl.get(), std::nullopt, AccessMode, (const void *)typeid(DataT).name(), sizeof(DataT), CodeLoc); } @@ -1092,7 +1092,7 @@ class __SYCL_EBO sampled_image_accessor : } #else : host_base_class(detail::convertToArrayOfN<3, 1>(ImageRef.get_range()), - detail::getSyclObjImpl(ImageRef).get(), Dimensions, + &detail::getSyclObjImpl(ImageRef), Dimensions, ImageRef.getElementSize(), {ImageRef.getRowPitch(), ImageRef.getSlicePitch(), 0}, ImageRef.getChannelType(), ImageRef.getChannelOrder(), @@ -1107,7 +1107,7 @@ class __SYCL_EBO sampled_image_accessor : "aspect::image."); detail::sampledImageConstructorNotification( - detail::getSyclObjImpl(ImageRef).get(), this->impl.get(), AccessTarget, + &detail::getSyclObjImpl(ImageRef), this->impl.get(), AccessTarget, (const void *)typeid(DataT).name(), sizeof(DataT), CodeLoc); detail::associateWithHandler(CommandGroupHandlerRef, this, AccessTarget); GDBMethodsAnchor(); @@ -1215,7 +1215,7 @@ class __SYCL_EBO host_sampled_image_accessor const property_list &PropList = {}, const detail::code_location CodeLoc = detail::code_location::current()) : base_class(detail::convertToArrayOfN<3, 1>(ImageRef.get_range()), - detail::getSyclObjImpl(ImageRef).get(), Dimensions, + &detail::getSyclObjImpl(ImageRef), Dimensions, ImageRef.getElementSize(), {ImageRef.getRowPitch(), ImageRef.getSlicePitch(), 0}, ImageRef.getChannelType(), ImageRef.getChannelOrder(), @@ -1223,7 +1223,7 @@ class __SYCL_EBO host_sampled_image_accessor addHostSampledImageAccessorAndWait(base_class::impl.get()); detail::sampledImageConstructorNotification( - detail::getSyclObjImpl(ImageRef).get(), this->impl.get(), std::nullopt, + &detail::getSyclObjImpl(ImageRef), this->impl.get(), std::nullopt, (const void *)typeid(DataT).name(), sizeof(DataT), CodeLoc); } diff --git a/sycl/include/sycl/detail/impl_utils.hpp b/sycl/include/sycl/detail/impl_utils.hpp index f5307b03d5d52..0864fb6f55bd7 100644 --- a/sycl/include/sycl/detail/impl_utils.hpp +++ b/sycl/include/sycl/detail/impl_utils.hpp @@ -25,10 +25,15 @@ struct ImplUtils { // Helper function for extracting implementation from SYCL's interface // objects. template - static const decltype(Obj::impl) &getSyclObjImpl(const Obj &SyclObj) { + static const decltype(Obj::impl) &getSyclObjImplPtr(const Obj &SyclObj) { assert(SyclObj.impl && "every constructor should create an impl"); return SyclObj.impl; } + template + static const decltype(*Obj::impl) &getSyclObjImpl(const Obj &SyclObj) { + assert(SyclObj.impl && "every constructor should create an impl"); + return *SyclObj.impl; + } // Helper function for creation SYCL interface objects from implementations. template @@ -46,6 +51,11 @@ auto getSyclObjImpl(const Obj &SyclObj) -> decltype(ImplUtils::getSyclObjImpl(SyclObj)) { return ImplUtils::getSyclObjImpl(SyclObj); } +template +auto getSyclObjImplPtr(const Obj &SyclObj) + -> decltype(ImplUtils::getSyclObjImplPtr(SyclObj)) { + return ImplUtils::getSyclObjImplPtr(SyclObj); +} template SyclObject createSyclObjFromImpl(From &&from) { @@ -55,14 +65,14 @@ SyclObject createSyclObjFromImpl(From &&from) { template struct sycl_obj_hash { size_t operator()(const T &Obj) const { if constexpr (SupportedOnDevice) { - auto &Impl = sycl::detail::getSyclObjImpl(Obj); + auto &Impl = sycl::detail::getSyclObjImplPtr(Obj); return std::hash>{}(Impl); } else { #ifdef __SYCL_DEVICE_ONLY__ (void)Obj; return 0; #else - auto &Impl = sycl::detail::getSyclObjImpl(Obj); + auto &Impl = sycl::detail::getSyclObjImplPtr(Obj); return std::hash>{}(Impl); #endif } diff --git a/sycl/include/sycl/detail/owner_less_base.hpp b/sycl/include/sycl/detail/owner_less_base.hpp index dfce9a2ed74e2..d66000b4eeea3 100644 --- a/sycl/include/sycl/detail/owner_less_base.hpp +++ b/sycl/include/sycl/detail/owner_less_base.hpp @@ -28,7 +28,7 @@ template class OwnerLessBase { bool ext_oneapi_owner_before( const ext::oneapi::detail::weak_object_base &Other) const noexcept { - return getSyclObjImpl(*static_cast(this)) + return getSyclObjImplPtr(*static_cast(this)) .owner_before(ext::oneapi::detail::getSyclWeakObjImpl(Other)); } @@ -38,8 +38,8 @@ template class OwnerLessBase { /// \param Other is the object to compare ordering against. /// \return true if this object precedes \param Other and false otherwise. bool ext_oneapi_owner_before(const SyclObjT &Other) const noexcept { - return getSyclObjImpl(*static_cast(this)) - .owner_before(getSyclObjImpl(Other)); + return getSyclObjImplPtr(*static_cast(this)) + .owner_before(getSyclObjImplPtr(Other)); } #else // On device calls to these functions are disallowed, so declare them but diff --git a/sycl/include/sycl/ext/oneapi/experimental/current_device.hpp b/sycl/include/sycl/ext/oneapi/experimental/current_device.hpp index 7dc41bfc0970b..632090cdc11ee 100644 --- a/sycl/include/sycl/ext/oneapi/experimental/current_device.hpp +++ b/sycl/include/sycl/ext/oneapi/experimental/current_device.hpp @@ -23,7 +23,7 @@ using namespace sycl::detail; // some hacks to emulate the lifetime management done by the `global_handler`. inline std::weak_ptr &get_current_device_impl() { static thread_local std::weak_ptr current_device{ - getSyclObjImpl(sycl::device{sycl::default_selector_v})}; + getSyclObjImplPtr(sycl::device{sycl::default_selector_v})}; return current_device; } } // namespace detail @@ -44,7 +44,7 @@ inline sycl::device get_current_device() { /// @pre The function is called from a host thread, executing outside of a host /// task or an asynchronous error handler. inline void set_current_device(sycl::device dev) { - detail::get_current_device_impl() = detail::getSyclObjImpl(dev); + detail::get_current_device_impl() = detail::getSyclObjImplPtr(dev); } } // namespace ext::oneapi::experimental::this_thread diff --git a/sycl/include/sycl/ext/oneapi/weak_object_base.hpp b/sycl/include/sycl/ext/oneapi/weak_object_base.hpp index 0a037d31f5fe8..3842e6da62ae0 100644 --- a/sycl/include/sycl/ext/oneapi/weak_object_base.hpp +++ b/sycl/include/sycl/ext/oneapi/weak_object_base.hpp @@ -63,12 +63,12 @@ template class weak_object_base { protected: #ifndef __SYCL_DEVICE_ONLY__ // Store a weak variant of the impl in the SYCLObjT. - typename std::remove_reference()))>::type::weak_type MObjWeakPtr; // relies on from impl_utils.h static decltype(MObjWeakPtr) GetWeakImpl(const SYCLObjT &SYCLObj) { - return sycl::detail::getSyclObjImpl(SYCLObj); + return sycl::detail::getSyclObjImplPtr(SYCLObj); } #else // On device we may not have an impl, so we pad with an unused void pointer. diff --git a/sycl/include/sycl/handler.hpp b/sycl/include/sycl/handler.hpp index 2217e3cade53b..3ec72e2cd4d05 100644 --- a/sycl/include/sycl/handler.hpp +++ b/sycl/include/sycl/handler.hpp @@ -523,7 +523,7 @@ class __SYCL_EXPORT handler { void addReduction(const std::shared_ptr> &ReduBuf) { - detail::markBufferAsInternal(getSyclObjImpl(*ReduBuf)); + detail::markBufferAsInternal(getSyclObjImplPtr(*ReduBuf)); addReduction(std::shared_ptr(ReduBuf)); } @@ -557,7 +557,7 @@ class __SYCL_EXPORT handler { void setLocalAccessorArgHelper(int ArgIndex, detail::LocalAccessorBaseHost &LocalAccBase) { detail::LocalAccessorImplPtr LocalAccImpl = - detail::getSyclObjImpl(LocalAccBase); + detail::getSyclObjImplPtr(LocalAccBase); detail::LocalAccessorImplHost *Req = LocalAccImpl.get(); MLocalAccStorage.push_back(std::move(LocalAccImpl)); addArg(detail::kernel_param_kind_t::kind_accessor, Req, @@ -597,7 +597,8 @@ class __SYCL_EXPORT handler { int ArgIndex, accessor &&Arg) { detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Arg; - const detail::AccessorImplPtr &AccImpl = detail::getSyclObjImpl(*AccBase); + const detail::AccessorImplPtr &AccImpl = + detail::getSyclObjImplPtr(*AccBase); // Ensure the data of AccImpl lives at least as long as the handler. addLifetimeSharedPtrStorage(AccImpl); detail::AccessorImplHost *Req = AccImpl.get(); @@ -639,8 +640,7 @@ class __SYCL_EXPORT handler { // Register the dynamic parameter with the handler for later association // with the node being added - registerDynamicParameter(detail::getSyclObjImpl(DynamicParam).get(), - ArgIndex); + registerDynamicParameter(&detail::getSyclObjImpl(DynamicParam), ArgIndex); } template @@ -656,7 +656,7 @@ class __SYCL_EXPORT handler { &DynWorkGroupBase = DynWorkGroupMem; ext::oneapi::experimental::detail::dynamic_parameter_impl *DynParamImpl = - detail::getSyclObjImpl(DynWorkGroupBase).get(); + &detail::getSyclObjImpl(DynWorkGroupBase); addArg(detail::kernel_param_kind_t::kind_dynamic_work_group_memory, DynParamImpl, 0, ArgIndex); @@ -676,7 +676,7 @@ class __SYCL_EXPORT handler { &DynLocalAccessorBase = DynLocalAccessor; ext::oneapi::experimental::detail::dynamic_parameter_impl *DynParamImpl = - detail::getSyclObjImpl(DynLocalAccessorBase).get(); + &detail::getSyclObjImpl(DynLocalAccessorBase); addArg(detail::kernel_param_kind_t::kind_dynamic_accessor, DynParamImpl, 0, ArgIndex); @@ -1979,9 +1979,8 @@ class __SYCL_EXPORT handler { setType(detail::CGType::CopyAccToPtr); detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Src; - detail::AccessorImplPtr AccImpl = detail::getSyclObjImpl(*AccBase); - MSrcPtr = static_cast(AccImpl.get()); + MSrcPtr = static_cast(&detail::getSyclObjImpl(*AccBase)); MDstPtr = static_cast(Dst); } @@ -2014,10 +2013,9 @@ class __SYCL_EXPORT handler { setType(detail::CGType::CopyPtrToAcc); detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Dst; - detail::AccessorImplPtr AccImpl = detail::getSyclObjImpl(*AccBase); MSrcPtr = const_cast(Src); - MDstPtr = static_cast(AccImpl.get()); + MDstPtr = static_cast(&detail::getSyclObjImpl(*AccBase)); } /// Copies the content of memory object accessed by Src to the memory @@ -2065,13 +2063,10 @@ class __SYCL_EXPORT handler { setType(detail::CGType::CopyAccToAcc); detail::AccessorBaseHost *AccBaseSrc = (detail::AccessorBaseHost *)&Src; - detail::AccessorImplPtr AccImplSrc = detail::getSyclObjImpl(*AccBaseSrc); - detail::AccessorBaseHost *AccBaseDst = (detail::AccessorBaseHost *)&Dst; - detail::AccessorImplPtr AccImplDst = detail::getSyclObjImpl(*AccBaseDst); - MSrcPtr = AccImplSrc.get(); - MDstPtr = AccImplDst.get(); + MSrcPtr = &detail::getSyclObjImpl(*AccBaseSrc); + MDstPtr = &detail::getSyclObjImpl(*AccBaseDst); } /// Provides guarantees that the memory object accessed via Acc is updated @@ -2094,9 +2089,8 @@ class __SYCL_EXPORT handler { setType(detail::CGType::UpdateHost); detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Acc; - detail::AccessorImplPtr AccImpl = detail::getSyclObjImpl(*AccBase); - MDstPtr = static_cast(AccImpl.get()); + MDstPtr = static_cast(&detail::getSyclObjImpl(*AccBase)); } public: @@ -2994,9 +2988,8 @@ class __SYCL_EXPORT handler { const T &Pattern) { setType(detail::CGType::Fill); detail::AccessorBaseHost *AccBase = (detail::AccessorBaseHost *)&Dst; - detail::AccessorImplPtr AccImpl = detail::getSyclObjImpl(*AccBase); - MDstPtr = static_cast(AccImpl.get()); + MDstPtr = static_cast(&detail::getSyclObjImpl(*AccBase)); MPattern.resize(sizeof(T)); auto PatternPtr = reinterpret_cast(MPattern.data()); @@ -3139,7 +3132,7 @@ class __SYCL_EXPORT handler { accessor Acc) { auto *AccBase = reinterpret_cast(&Acc); - detail::AccessorImplHost *Req = detail::getSyclObjImpl(*AccBase).get(); + detail::AccessorImplHost *Req = &detail::getSyclObjImpl(*AccBase); if (HasAssociatedAccessor(Req, AccessTarget)) throw sycl::exception(make_error_code(errc::kernel_argument), "placeholder accessor must be bound by calling " diff --git a/sycl/include/sycl/interop_handle.hpp b/sycl/include/sycl/interop_handle.hpp index b797284ce5de5..00d6a00f02277 100644 --- a/sycl/include/sycl/interop_handle.hpp +++ b/sycl/include/sycl/interop_handle.hpp @@ -75,8 +75,7 @@ class interop_handle { throw exception(make_error_code(errc::invalid), "Incorrect backend argument was passed"); const auto *AccBase = static_cast(&Acc); - return getMemImpl( - detail::getSyclObjImpl(*AccBase).get()); + return getMemImpl(&detail::getSyclObjImpl(*AccBase)); #else (void)Acc; // we believe this won't be ever called on device side @@ -101,7 +100,7 @@ class interop_handle { throw exception(make_error_code(errc::invalid), "Incorrect backend argument was passed"); const auto *AccBase = static_cast(&Acc); - return getMemImpl(detail::getSyclObjImpl(*AccBase).get()); + return getMemImpl(&detail::getSyclObjImpl(*AccBase)); #else (void)Acc; // we believe this won't be ever called on device side diff --git a/sycl/include/sycl/kernel_bundle.hpp b/sycl/include/sycl/kernel_bundle.hpp index b4af63c854b08..c3bde57db875a 100644 --- a/sycl/include/sycl/kernel_bundle.hpp +++ b/sycl/include/sycl/kernel_bundle.hpp @@ -877,11 +877,10 @@ join(const std::vector> &Bundles) { std::vector KernelBundleImpls; KernelBundleImpls.reserve(Bundles.size()); for (const sycl::kernel_bundle &Bundle : Bundles) - KernelBundleImpls.push_back(detail::getSyclObjImpl(Bundle)); + KernelBundleImpls.push_back(detail::getSyclObjImplPtr(Bundle)); - std::shared_ptr Impl = - detail::join_impl(KernelBundleImpls, State); - return detail::createSyclObjFromImpl>(Impl); + return detail::createSyclObjFromImpl>( + detail::join_impl(KernelBundleImpls, State)); } ///////////////////////// diff --git a/sycl/include/sycl/usm/usm_pointer_info.hpp b/sycl/include/sycl/usm/usm_pointer_info.hpp index b16c183e71578..035b07adea5cc 100644 --- a/sycl/include/sycl/usm/usm_pointer_info.hpp +++ b/sycl/include/sycl/usm/usm_pointer_info.hpp @@ -28,7 +28,7 @@ __SYCL_EXPORT usm::alloc get_pointer_type(const void *ptr, context_impl &ctxt); /// \param ctxt is the sycl context the ptr was allocated in #ifdef __INTEL_PREVIEW_BREAKING_CHANGES inline usm::alloc get_pointer_type(const void *ptr, const context &ctxt) { - return get_pointer_type(ptr, *getSyclObjImpl(ctxt)); + return get_pointer_type(ptr, getSyclObjImpl(ctxt)); } #else __SYCL_EXPORT usm::alloc get_pointer_type(const void *ptr, const context &ctxt); diff --git a/sycl/source/backend.cpp b/sycl/source/backend.cpp index 304d5c8cce436..addbf848d2b6a 100644 --- a/sycl/source/backend.cpp +++ b/sycl/source/backend.cpp @@ -108,7 +108,7 @@ __SYCL_EXPORT context make_context(ur_native_handle_t NativeHandle, Properties.isNativeHandleOwned = false; std::vector DeviceHandles; for (const auto &Dev : DeviceList) { - DeviceHandles.push_back(detail::getSyclObjImpl(Dev)->getHandleRef()); + DeviceHandles.push_back(detail::getSyclObjImpl(Dev).getHandleRef()); } Adapter.call( NativeHandle, Adapter.getUrAdapter(), DeviceHandles.size(), @@ -124,9 +124,9 @@ __SYCL_EXPORT queue make_queue(ur_native_handle_t NativeHandle, const property_list &PropList, const async_handler &Handler, backend Backend) { ur_device_handle_t UrDevice = - Device ? getSyclObjImpl(*Device)->getHandleRef() : nullptr; + Device ? getSyclObjImpl(*Device).getHandleRef() : nullptr; const adapter_impl &Adapter = getAdapter(Backend); - context_impl &ContextImpl = *getSyclObjImpl(Context); + context_impl &ContextImpl = getSyclObjImpl(Context); if (PropList.has_property()) { throw sycl::exception( @@ -172,7 +172,7 @@ __SYCL_EXPORT event make_event(ur_native_handle_t NativeHandle, const context &Context, bool KeepOwnership, backend Backend) { const adapter_impl &Adapter = getAdapter(Backend); - context_impl &ContextImpl = *getSyclObjImpl(Context); + context_impl &ContextImpl = getSyclObjImpl(Context); ur_event_handle_t UrEvent = nullptr; ur_event_native_properties_t Properties{}; @@ -194,7 +194,7 @@ make_kernel_bundle(ur_native_handle_t NativeHandle, const context &TargetContext, bool KeepOwnership, bundle_state State, backend Backend) { adapter_impl &Adapter = getAdapter(Backend); - context_impl &ContextImpl = *getSyclObjImpl(TargetContext); + context_impl &ContextImpl = getSyclObjImpl(TargetContext); Managed UrProgram{Adapter}; ur_program_native_properties_t Properties{}; @@ -322,8 +322,8 @@ kernel make_kernel(const context &TargetContext, ur_native_handle_t NativeHandle, bool KeepOwnership, backend Backend) { adapter_impl &Adapter = getAdapter(Backend); - context_impl &ContextImpl = *getSyclObjImpl(TargetContext); - kernel_bundle_impl &KernelBundleImpl = *getSyclObjImpl(KernelBundle); + context_impl &ContextImpl = getSyclObjImpl(TargetContext); + kernel_bundle_impl &KernelBundleImpl = getSyclObjImpl(KernelBundle); // For Level-Zero expect exactly one device image in the bundle. This is // natural for interop kernel to get created out of a single native @@ -342,7 +342,7 @@ kernel make_kernel(const context &TargetContext, const device_image &DeviceImage = *KernelBundle.begin(); - device_image_impl &DeviceImageImpl = *getSyclObjImpl(DeviceImage); + device_image_impl &DeviceImageImpl = getSyclObjImpl(DeviceImage); UrProgram = DeviceImageImpl.get_ur_program(); } diff --git a/sycl/source/backend/level_zero.cpp b/sycl/source/backend/level_zero.cpp index df6634150f932..c0f1532ade1a0 100644 --- a/sycl/source/backend/level_zero.cpp +++ b/sycl/source/backend/level_zero.cpp @@ -26,7 +26,7 @@ __SYCL_EXPORT device make_device(const platform &Platform, NativeHandle, Adapter.getUrAdapter(), nullptr, &UrDevice); return detail::createSyclObjFromImpl( - getSyclObjImpl(Platform)->getOrMakeDeviceImpl(UrDevice)); + getSyclObjImpl(Platform).getOrMakeDeviceImpl(UrDevice)); } } // namespace ext::oneapi::level_zero::detail diff --git a/sycl/source/backend/opencl.cpp b/sycl/source/backend/opencl.cpp index 39389791feb7b..5ce92dd0e42d3 100644 --- a/sycl/source/backend/opencl.cpp +++ b/sycl/source/backend/opencl.cpp @@ -33,7 +33,7 @@ __SYCL_EXPORT bool has_extension(const sycl::platform &SyclPlatform, } std::string ExtensionsString = urGetInfoString( - *getSyclObjImpl(SyclPlatform), UR_PLATFORM_INFO_EXTENSIONS); + getSyclObjImpl(SyclPlatform), UR_PLATFORM_INFO_EXTENSIONS); return ExtensionsString.find(std::string_view{Extension}) != std::string::npos; @@ -48,7 +48,7 @@ __SYCL_EXPORT bool has_extension(const sycl::device &SyclDevice, } std::string ExtensionsString = urGetInfoString( - *getSyclObjImpl(SyclDevice), UR_DEVICE_INFO_EXTENSIONS); + getSyclObjImpl(SyclDevice), UR_DEVICE_INFO_EXTENSIONS); return ExtensionsString.find(std::string_view{Extension}) != std::string::npos; diff --git a/sycl/source/context.cpp b/sycl/source/context.cpp index 85670e4e51764..ceb08c2ef6fd3 100644 --- a/sycl/source/context.cpp +++ b/sycl/source/context.cpp @@ -60,11 +60,11 @@ context::context(const std::vector &DeviceList, } const auto &RefPlatform = - detail::getSyclObjImpl(DeviceList[0].get_platform())->getHandleRef(); + detail::getSyclObjImpl(DeviceList[0].get_platform()).getHandleRef(); if (std::any_of(DeviceList.begin(), DeviceList.end(), [&](const device &CurrentDevice) { return (detail::getSyclObjImpl(CurrentDevice.get_platform()) - ->getHandleRef() != RefPlatform); + .getHandleRef() != RefPlatform); })) throw exception(make_error_code(errc::invalid), "Can't add devices across platforms to a single context."); diff --git a/sycl/source/detail/async_alloc.cpp b/sycl/source/detail/async_alloc.cpp index c67666d74f44d..a0befdce2c229 100644 --- a/sycl/source/detail/async_alloc.cpp +++ b/sycl/source/detail/async_alloc.cpp @@ -36,7 +36,7 @@ std::vector getDepGraphNodes( sycl::handler &Handler, detail::queue_impl *Queue, const std::shared_ptr &Graph, const std::vector> &DepEvents) { - detail::handler_impl &HandlerImpl = *detail::getSyclObjImpl(Handler); + detail::handler_impl &HandlerImpl = detail::getSyclObjImpl(Handler); // Get dependent graph nodes from any events auto DepNodes = Graph->getNodesForEvents(DepEvents); // If this node was added explicitly we may have node deps in the handler as @@ -118,7 +118,7 @@ __SYCL_EXPORT void *async_malloc_from_pool(sycl::handler &h, size_t size, const memory_pool &pool) { detail::adapter_impl &Adapter = h.getContextImpl().getAdapter(); - detail::memory_pool_impl &memPoolImpl = *detail::getSyclObjImpl(pool); + detail::memory_pool_impl &memPoolImpl = detail::getSyclObjImpl(pool); // Get CG event dependencies for this allocation. const auto &DepEvents = h.impl->CGData.MEvents; @@ -134,7 +134,7 @@ __SYCL_EXPORT void *async_malloc_from_pool(sycl::handler &h, size_t size, // Memory pool is passed as the graph may use some properties of it. alloc = Graph->getMemPool().malloc(size, pool.get_alloc_kind(), DepNodes, - detail::getSyclObjImpl(pool).get()); + &sycl::detail::getSyclObjImpl(pool)); } else { ur_queue_handle_t Q = h.impl->get_queue().getHandleRef(); Adapter.call ComponentDevices = D.get_info< ext::oneapi::experimental::info::device::component_devices>(); for (const auto &CD : ComponentDevices) - DeviceIds.push_back(getSyclObjImpl(CD)->getHandleRef()); + DeviceIds.push_back(getSyclObjImpl(CD).getHandleRef()); } DeviceIds.push_back(D.getHandleRef()); @@ -442,7 +442,7 @@ std::optional context_impl::getProgramForDevImgs( auto LockedCache = MKernelProgramCache.acquireCachedPrograms(); auto &KeyMap = LockedCache.get().KeyMap; auto &Cache = LockedCache.get().Cache; - ur_device_handle_t &DevHandle = getSyclObjImpl(Device)->getHandleRef(); + ur_device_handle_t &DevHandle = getSyclObjImpl(Device).getHandleRef(); for (std::uintptr_t ImageIDs : ImgIdentifiers) { auto OuterKey = std::make_pair(ImageIDs, std::set{DevHandle}); @@ -507,7 +507,7 @@ context_impl::get_default_memory_pool(const context &Context, assert(Kind == usm::alloc::device); - detail::device_impl &DevImpl = *detail::getSyclObjImpl(Device); + detail::device_impl &DevImpl = detail::getSyclObjImpl(Device); ur_device_handle_t DeviceHandle = DevImpl.getHandleRef(); detail::adapter_impl &Adapter = this->getAdapter(); diff --git a/sycl/source/detail/context_impl.hpp b/sycl/source/detail/context_impl.hpp index 3b42a6319d223..8f8f265609516 100644 --- a/sycl/source/detail/context_impl.hpp +++ b/sycl/source/detail/context_impl.hpp @@ -174,7 +174,7 @@ class context_impl : public std::enable_shared_from_this { // for a composite device they belong to. auto CompositeDevice = CurrDevice->get_info< ext::oneapi::experimental::info::device::composite_device>(); - return hasDevice(*detail::getSyclObjImpl(CompositeDevice)); + return hasDevice(detail::getSyclObjImpl(CompositeDevice)); } return false; @@ -185,9 +185,8 @@ class context_impl : public std::enable_shared_from_this { // TODO remove once this limitation is lifted return false; } - CurrDevice = detail::getSyclObjImpl( - CurrDevice->get_info()) - .get(); + CurrDevice = &detail::getSyclObjImpl( + CurrDevice->get_info()); } return true; @@ -367,7 +366,7 @@ inline auto get_ur_handles(const detail::context_impl &Ctx) { return std::tuple{urCtx, &Ctx.getAdapter()}; } inline auto get_ur_handles(const context &syclContext) { - return get_ur_handles(*detail::getSyclObjImpl(syclContext)); + return get_ur_handles(detail::getSyclObjImpl(syclContext)); } inline auto get_ur_handles(const detail::device_impl &syclDevice, const detail::context_impl &syclContext) { @@ -377,11 +376,11 @@ inline auto get_ur_handles(const detail::device_impl &syclDevice, } inline auto get_ur_handles(const device &syclDevice, const context &syclContext) { - return get_ur_handles(*detail::getSyclObjImpl(syclDevice), - *detail::getSyclObjImpl(syclContext)); + return get_ur_handles(detail::getSyclObjImpl(syclDevice), + detail::getSyclObjImpl(syclContext)); } inline auto get_ur_handles(const device &syclDevice) { - auto &implDevice = *detail::getSyclObjImpl(syclDevice); + auto &implDevice = detail::getSyclObjImpl(syclDevice); ur_device_handle_t urDevice = implDevice.getHandleRef(); return std::tuple{urDevice, &implDevice.getAdapter()}; } diff --git a/sycl/source/detail/device_global_map_entry.cpp b/sycl/source/detail/device_global_map_entry.cpp index d31d9e8999348..0daf0aa241799 100644 --- a/sycl/source/detail/device_global_map_entry.cpp +++ b/sycl/source/detail/device_global_map_entry.cpp @@ -119,7 +119,7 @@ DeviceGlobalMapEntry::getOrAllocateDeviceGlobalUSM(const context &Context) { assert(!MIsDeviceImageScopeDecorated && "USM allocations should not be acquired for device_global with " "device_image_scope property."); - context_impl &CtxImpl = *getSyclObjImpl(Context); + context_impl &CtxImpl = getSyclObjImpl(Context); device_impl &DevImpl = CtxImpl.getDevices().front(); std::lock_guard Lock(MDeviceToUSMPtrMapMutex); diff --git a/sycl/source/detail/device_image_impl.cpp b/sycl/source/detail/device_image_impl.cpp index 2871f836f6aa3..578edf7c445e8 100644 --- a/sycl/source/detail/device_image_impl.cpp +++ b/sycl/source/detail/device_image_impl.cpp @@ -35,14 +35,14 @@ std::shared_ptr device_image_impl::tryGetExtensionKernel( PM.getOrCreateKernel(Context, AdjustedName, /*PropList=*/{}, UrProgram); return std::make_shared( - std::move(UrKernel), *getSyclObjImpl(Context), shared_from_this(), + std::move(UrKernel), getSyclObjImpl(Context), shared_from_this(), OwnerBundle, ArgMask, UrProgram, CacheMutex); } return nullptr; } ur_program_handle_t UrProgram = get_ur_program(); - detail::adapter_impl &Adapter = getSyclObjImpl(Context)->getAdapter(); + detail::adapter_impl &Adapter = getSyclObjImpl(Context).getAdapter(); Managed UrKernel{Adapter}; Adapter.call(UrProgram, AdjustedName.data(), &UrKernel); @@ -53,7 +53,7 @@ std::shared_ptr device_image_impl::tryGetExtensionKernel( ArgMask = &ArgMaskIt->second; return std::make_shared( - std::move(UrKernel), *detail::getSyclObjImpl(Context), shared_from_this(), + std::move(UrKernel), detail::getSyclObjImpl(Context), shared_from_this(), OwnerBundle, ArgMask, UrProgram, /*CacheMutex=*/nullptr); } diff --git a/sycl/source/detail/device_image_impl.hpp b/sycl/source/detail/device_image_impl.hpp index d18e878d5cf43..c04a490393e63 100644 --- a/sycl/source/detail/device_image_impl.hpp +++ b/sycl/source/detail/device_image_impl.hpp @@ -47,7 +47,7 @@ namespace detail { template struct LessByHash { bool operator()(const T &LHS, const T &RHS) const { - return getSyclObjImpl(LHS) < getSyclObjImpl(RHS); + return &getSyclObjImpl(LHS) < &getSyclObjImpl(RHS); } }; @@ -380,12 +380,12 @@ class device_image_impl const device &DeviceCand) const noexcept { // If the device is in the device list and the kernel ID is in the kernel // bundle, return true. - if (get_devices().contains(*getSyclObjImpl(DeviceCand))) + if (get_devices().contains(getSyclObjImpl(DeviceCand))) return has_kernel(KernelIDCand); // Otherwise, if the device candidate is a sub-device it is also valid if // its parent is valid. - if (!getSyclObjImpl(DeviceCand)->isRootDevice()) { + if (!getSyclObjImpl(DeviceCand).isRootDevice()) { try { return has_kernel(KernelIDCand, DeviceCand.get_info()); @@ -560,7 +560,7 @@ class device_image_impl ur_mem_handle_t &get_spec_const_buffer_ref() noexcept { std::lock_guard Lock{MSpecConstAccessMtx}; if (nullptr == MSpecConstsBuffer && !MSpecConstsBlob.empty()) { - adapter_impl &Adapter = getSyclObjImpl(MContext)->getAdapter(); + adapter_impl &Adapter = getSyclObjImpl(MContext).getAdapter(); // Uses UR_MEM_FLAGS_HOST_PTR_COPY instead of UR_MEM_FLAGS_HOST_PTR_USE // since post-enqueue cleanup might trigger destruction of // device_image_impl and, as a result, destruction of MSpecConstsBlob @@ -570,7 +570,7 @@ class device_image_impl nullptr, MSpecConstsBlob.data()}; try { memBufferCreateHelper( - Adapter, detail::getSyclObjImpl(MContext)->getHandleRef(), + Adapter, detail::getSyclObjImpl(MContext).getHandleRef(), UR_MEM_FLAG_READ_WRITE | UR_MEM_FLAG_ALLOC_COPY_HOST_POINTER, MSpecConstsBlob.size(), &MSpecConstsBuffer, &Properties); } catch (std::exception &e) { @@ -591,7 +591,7 @@ class device_image_impl ur_native_handle_t getNative() const { assert(MProgram); - context_impl &ContextImpl = *detail::getSyclObjImpl(MContext); + context_impl &ContextImpl = detail::getSyclObjImpl(MContext); adapter_impl &Adapter = ContextImpl.getAdapter(); ur_native_handle_t NativeProgram = 0; @@ -611,7 +611,7 @@ class device_image_impl ~device_image_impl() try { if (MSpecConstsBuffer) { std::lock_guard Lock{MSpecConstAccessMtx}; - adapter_impl &Adapter = getSyclObjImpl(MContext)->getAdapter(); + adapter_impl &Adapter = getSyclObjImpl(MContext).getAdapter(); memReleaseHelper(Adapter, MSpecConstsBuffer); } } catch (std::exception &e) { @@ -718,7 +718,7 @@ class device_image_impl assert(MRTCBinInfo); assert(MOrigins & ImageOriginKernelCompiler); - sycl::detail::context_impl &ContextImpl = *getSyclObjImpl(MContext); + sycl::detail::context_impl &ContextImpl = getSyclObjImpl(MContext); for (device_impl &Dev : Devices) { if (!ContextImpl.hasDevice(Dev)) { @@ -809,7 +809,7 @@ class device_image_impl "compile is only available for kernel_bundle " "when the source language was sycl."); - sycl::detail::context_impl &ContextImpl = *getSyclObjImpl(MContext); + sycl::detail::context_impl &ContextImpl = getSyclObjImpl(MContext); for (device_impl &Dev : Devices) { if (!ContextImpl.hasDevice(Dev)) { @@ -917,7 +917,7 @@ class device_image_impl devices_range Devices, const std::vector &BuildOptions, const std::string &SourceStr) const { - sycl::detail::context_impl &ContextImpl = *getSyclObjImpl(MContext); + sycl::detail::context_impl &ContextImpl = getSyclObjImpl(MContext); adapter_impl &Adapter = ContextImpl.getAdapter(); std::string UserArgs = syclex::detail::userArgsAsString(BuildOptions); @@ -1173,7 +1173,7 @@ class device_image_impl } auto DGRegs = std::make_shared( - *getSyclObjImpl(MContext), std::string{Prefix}, + getSyclObjImpl(MContext), std::string{Prefix}, std::move(DeviceGlobalNames), std::move(DeviceGlobalAllocations)); // Mark the image as input so the program manager will bring it into @@ -1205,7 +1205,7 @@ class device_image_impl NewImageAndDeps.push_back( createSyclObjFromImpl(std::move(DevImgImpl))); devices_range SupportingDevsRef = - getSyclObjImpl(NewImageAndDeps[0])->get_devices(); + getSyclObjImpl(NewImageAndDeps[0]).get_devices(); if (State == bundle_state::executable) { // If target is executable we bundle the image and dependencies together // and bring it into state. @@ -1219,13 +1219,13 @@ class device_image_impl DevImgPlainWithDeps ImgDepWithDeps{PM.createDependencyImage( MContext, SupportingDevsRef, ImgDep, bundle_state::input)}; PM.bringSYCLDeviceImageToState(ImgDepWithDeps, State); - Result.push_back(getSyclObjImpl(ImgDepWithDeps.getMain())); + Result.push_back(getSyclObjImplPtr(ImgDepWithDeps.getMain())); } } DevImgPlainWithDeps ImgWithDeps(std::move(NewImageAndDeps)); PM.bringSYCLDeviceImageToState(ImgWithDeps, State); - Result.push_back(getSyclObjImpl(ImgWithDeps.getMain())); + Result.push_back(getSyclObjImplPtr(ImgWithDeps.getMain())); } OutDeviceBins.emplace_back( @@ -1237,7 +1237,7 @@ class device_image_impl createProgramFromSource(devices_range Devices, const std::vector &Options, std::string *LogPtr) const { - sycl::detail::context_impl &ContextImpl = *getSyclObjImpl(MContext); + sycl::detail::context_impl &ContextImpl = getSyclObjImpl(MContext); adapter_impl &Adapter = ContextImpl.getAdapter(); const auto spirv = [&]() -> std::vector { switch (MRTCBinInfo->MLanguage) { diff --git a/sycl/source/detail/event_impl.cpp b/sycl/source/detail/event_impl.cpp index 6b7957bf781bd..15b1f88e4e264 100644 --- a/sycl/source/detail/event_impl.cpp +++ b/sycl/source/detail/event_impl.cpp @@ -35,7 +35,7 @@ void event_impl::initContextIfNeeded() { const device SyclDevice; MIsHostEvent = false; MContext = - detail::queue_impl::getDefaultOrNew(*detail::getSyclObjImpl(SyclDevice)); + detail::queue_impl::getDefaultOrNew(detail::getSyclObjImpl(SyclDevice)); assert(MContext); } @@ -151,7 +151,7 @@ void event_impl::setContextImpl(context_impl &Context) { event_impl::event_impl(ur_event_handle_t Event, const context &SyclContext, private_tag) - : MEvent(Event), MContext(detail::getSyclObjImpl(SyclContext)), + : MEvent(Event), MContext(detail::getSyclObjImplPtr(SyclContext)), MIsFlushed(true), MState(HES_Complete) { ur_context_handle_t TempContext; diff --git a/sycl/source/detail/filter_selector_impl.cpp b/sycl/source/detail/filter_selector_impl.cpp index 69b53c05d21b4..7abd53dbd2728 100644 --- a/sycl/source/detail/filter_selector_impl.cpp +++ b/sycl/source/detail/filter_selector_impl.cpp @@ -107,7 +107,7 @@ int filter_selector_impl::operator()(const device &Dev) const { bool DeviceNumOK = true; if (Filter.Backend) { - backend BE = sycl::detail::getSyclObjImpl(Dev)->getBackend(); + backend BE = sycl::detail::getSyclObjImpl(Dev).getBackend(); // Backend is okay if the filter BE is set 'all'. if (Filter.Backend.value() == backend::all) BackendOK = true; diff --git a/sycl/source/detail/fusion/fusion_wrapper.cpp b/sycl/source/detail/fusion/fusion_wrapper.cpp index 4a6aae1548d24..53725aa2d8030 100644 --- a/sycl/source/detail/fusion/fusion_wrapper.cpp +++ b/sycl/source/detail/fusion/fusion_wrapper.cpp @@ -17,7 +17,7 @@ inline namespace _V1 { namespace ext::codeplay::experimental { fusion_wrapper::fusion_wrapper(queue &Queue) - : MQueue{detail::getSyclObjImpl(Queue)} {} + : MQueue{detail::getSyclObjImplPtr(Queue)} {} queue fusion_wrapper::get_queue() const { return detail::createSyclObjFromImpl(MQueue); diff --git a/sycl/source/detail/graph/dynamic_impl.cpp b/sycl/source/detail/graph/dynamic_impl.cpp index f02205d248259..51050dce63021 100644 --- a/sycl/source/detail/graph/dynamic_impl.cpp +++ b/sycl/source/detail/graph/dynamic_impl.cpp @@ -155,7 +155,7 @@ void dynamic_parameter_impl::updateCGAccessor( const sycl::detail::AccessorBaseHost *Acc) { auto &Args = static_cast(CG.get())->MArgs; - auto NewAccImpl = sycl::detail::getSyclObjImpl(*Acc); + auto NewAccImpl = sycl::detail::getSyclObjImplPtr(*Acc); for (auto &Arg : Args) { if (Arg.MIndex != ArgIndex) { continue; @@ -285,7 +285,7 @@ void dynamic_local_accessor_impl::updateCGLocalAccessor( dynamic_command_group_impl::dynamic_command_group_impl( const command_graph &Graph) - : MGraph{sycl::detail::getSyclObjImpl(Graph)}, MActiveCGF(0), + : MGraph{sycl::detail::getSyclObjImplPtr(Graph)}, MActiveCGF(0), MID(NextAvailableID.fetch_add(1, std::memory_order_relaxed)) {} void dynamic_command_group_impl::finalizeCGFList( @@ -408,6 +408,6 @@ size_t std::hash::operator()( const sycl::ext::oneapi::experimental::dynamic_command_group &DynamicCG) const { - auto ID = sycl::detail::getSyclObjImpl(DynamicCG)->getID(); + auto ID = sycl::detail::getSyclObjImpl(DynamicCG).getID(); return std::hash()(ID); } diff --git a/sycl/source/detail/graph/dynamic_impl.hpp b/sycl/source/detail/graph/dynamic_impl.hpp index bd4cc7e13e54a..4bb54c31cde2d 100644 --- a/sycl/source/detail/graph/dynamic_impl.hpp +++ b/sycl/source/detail/graph/dynamic_impl.hpp @@ -258,7 +258,7 @@ struct hash> { size_t operator()(const sycl::ext::oneapi::experimental::dynamic_parameter &DynamicParam) const { - auto ID = sycl::detail::getSyclObjImpl(DynamicParam)->getID(); + auto ID = sycl::detail::getSyclObjImpl(DynamicParam).getID(); return std::hash()(ID); } }; @@ -269,7 +269,7 @@ struct hash &DynWorkGroupMem) const { - auto ID = sycl::detail::getSyclObjImpl(DynWorkGroupMem)->getID(); + auto ID = sycl::detail::getSyclObjImpl(DynWorkGroupMem).getID(); return std::hash()(ID); } }; diff --git a/sycl/source/detail/graph/graph_impl.cpp b/sycl/source/detail/graph/graph_impl.cpp index 68de839376647..def85a0120757 100644 --- a/sycl/source/detail/graph/graph_impl.cpp +++ b/sycl/source/detail/graph/graph_impl.cpp @@ -854,9 +854,9 @@ void exec_graph_impl::createCommandBuffers( ur_exp_command_buffer_desc_t Desc{UR_STRUCTURE_TYPE_EXP_COMMAND_BUFFER_DESC, nullptr, MIsUpdatable, IsInOrderCommandBuffer, MEnableProfiling}; - context_impl &ContextImpl = *sycl::detail::getSyclObjImpl(MContext); + context_impl &ContextImpl = sycl::detail::getSyclObjImpl(MContext); sycl::detail::adapter_impl &Adapter = ContextImpl.getAdapter(); - sycl::detail::device_impl &DeviceImpl = *sycl::detail::getSyclObjImpl(Device); + sycl::detail::device_impl &DeviceImpl = sycl::detail::getSyclObjImpl(Device); ur_result_t Res = Adapter.call_nocheck( ContextImpl.getHandleRef(), DeviceImpl.getHandleRef(), &Desc, @@ -936,8 +936,8 @@ exec_graph_impl::exec_graph_impl(sycl::context Context, MQueueImpl = std::move(PlaceholderQueuePtr); } else { MQueueImpl = sycl::detail::queue_impl::create( - *sycl::detail::getSyclObjImpl(GraphImpl->getDevice()), - *sycl::detail::getSyclObjImpl(Context), sycl::async_handler{}, + sycl::detail::getSyclObjImpl(GraphImpl->getDevice()), + sycl::detail::getSyclObjImpl(Context), sycl::async_handler{}, sycl::property_list{}); } } @@ -947,7 +947,7 @@ exec_graph_impl::~exec_graph_impl() { MGraphImpl->markExecGraphDestroyed(); sycl::detail::adapter_impl &Adapter = - sycl::detail::getSyclObjImpl(MContext)->getAdapter(); + sycl::detail::getSyclObjImpl(MContext).getAdapter(); MSchedule.clear(); // Clean up any graph-owned allocations that were allocated @@ -1595,10 +1595,10 @@ void exec_graph_impl::populateURKernelUpdateStructs( sycl::detail::NDRDescT &NDRDesc, ur_exp_command_buffer_update_kernel_launch_desc_t &UpdateDesc) const { sycl::detail::context_impl &ContextImpl = - *sycl::detail::getSyclObjImpl(MContext); + sycl::detail::getSyclObjImpl(MContext); sycl::detail::adapter_impl &Adapter = ContextImpl.getAdapter(); sycl::detail::device_impl &DeviceImpl = - *sycl::detail::getSyclObjImpl(MGraphImpl->getDevice()); + sycl::detail::getSyclObjImpl(MGraphImpl->getDevice()); // Gather arg information from Node auto &ExecCG = @@ -1839,7 +1839,7 @@ void exec_graph_impl::updateURImpl(ur_exp_command_buffer_handle_t CommandBuffer, StructListIndex++; } - context_impl &ContextImpl = *sycl::detail::getSyclObjImpl(MContext); + context_impl &ContextImpl = sycl::detail::getSyclObjImpl(MContext); sycl::detail::adapter_impl &Adapter = ContextImpl.getAdapter(); Adapter.call( CommandBuffer, UpdateDescList.size(), UpdateDescList.data()); @@ -1865,7 +1865,7 @@ modifiable_command_graph::modifiable_command_graph( node modifiable_command_graph::addImpl(dynamic_command_group &DynCGF, const std::vector &Deps) { impl->throwIfGraphRecordingQueue("Explicit API \"Add()\" function"); - auto DynCGFImpl = sycl::detail::getSyclObjImpl(DynCGF); + auto DynCGFImpl = sycl::detail::getSyclObjImplPtr(DynCGF); if (DynCGFImpl->MGraph != impl) { throw sycl::exception(make_error_code(sycl::errc::invalid), @@ -1897,7 +1897,7 @@ node modifiable_command_graph::addImpl(std::function CGF, void modifiable_command_graph::addGraphLeafDependencies(node Node) { // Find all exit nodes in the current graph and add them to the dependency // vector - detail::node_impl &DstImpl = *sycl::detail::getSyclObjImpl(Node); + detail::node_impl &DstImpl = sycl::detail::getSyclObjImpl(Node); graph_impl::WriteLock Lock(impl->MMutex); for (auto &NodeImpl : impl->MNodeStorage) { if ((NodeImpl->MSuccessors.size() == 0) && (NodeImpl.get() != &DstImpl)) { @@ -1907,8 +1907,8 @@ void modifiable_command_graph::addGraphLeafDependencies(node Node) { } void modifiable_command_graph::make_edge(node &Src, node &Dest) { - detail::node_impl &SenderImpl = *sycl::detail::getSyclObjImpl(Src); - detail::node_impl &ReceiverImpl = *sycl::detail::getSyclObjImpl(Dest); + detail::node_impl &SenderImpl = sycl::detail::getSyclObjImpl(Src); + detail::node_impl &ReceiverImpl = sycl::detail::getSyclObjImpl(Dest); graph_impl::WriteLock Lock(impl->MMutex); impl->makeEdge(SenderImpl, ReceiverImpl); @@ -1937,7 +1937,7 @@ void modifiable_command_graph::begin_recording( // related to graph at all. checkGraphPropertiesAndThrow(PropList); - queue_impl &QueueImpl = *sycl::detail::getSyclObjImpl(RecordingQueue); + queue_impl &QueueImpl = sycl::detail::getSyclObjImpl(RecordingQueue); if (QueueImpl.hasCommandGraph()) { throw sycl::exception(sycl::make_error_code(errc::invalid), @@ -1972,7 +1972,7 @@ void modifiable_command_graph::end_recording() { } void modifiable_command_graph::end_recording(queue &RecordingQueue) { - queue_impl &QueueImpl = *sycl::detail::getSyclObjImpl(RecordingQueue); + queue_impl &QueueImpl = sycl::detail::getSyclObjImpl(RecordingQueue); if (QueueImpl.getCommandGraph() == impl) { QueueImpl.setCommandGraph(nullptr); graph_impl::WriteLock Lock(impl->MMutex); @@ -2067,11 +2067,11 @@ void executable_command_graph::finalizeImpl() { void executable_command_graph::update( const command_graph &Graph) { - impl->update(sycl::detail::getSyclObjImpl(Graph)); + impl->update(sycl::detail::getSyclObjImplPtr(Graph)); } void executable_command_graph::update(const node &Node) { - impl->update(*sycl::detail::getSyclObjImpl(Node)); + impl->update(sycl::detail::getSyclObjImpl(Node)); } void executable_command_graph::update(const std::vector &Nodes) { diff --git a/sycl/source/detail/graph/graph_impl.hpp b/sycl/source/detail/graph/graph_impl.hpp index e6637032676cb..10798c3105ccb 100644 --- a/sycl/source/detail/graph/graph_impl.hpp +++ b/sycl/source/detail/graph/graph_impl.hpp @@ -269,12 +269,12 @@ class graph_impl : public std::enable_shared_from_this { sycl::context getContext() const { return MContext; } sycl::detail::context_impl &getContextImpl() const { - return *sycl::detail::getSyclObjImpl(MContext); + return sycl::detail::getSyclObjImpl(MContext); } /// Query for the device_impl tied to this graph. /// @return device_impl shared ptr reference associated with graph. - device_impl &getDeviceImpl() const { return *getSyclObjImpl(MDevice); } + device_impl &getDeviceImpl() const { return getSyclObjImpl(MDevice); } /// Query for the device tied to this graph. /// @return Device associated with graph. @@ -966,7 +966,7 @@ template struct hash> { size_t operator()(const sycl::ext::oneapi::experimental::command_graph &Graph) const { - auto ID = sycl::detail::getSyclObjImpl(Graph)->getID(); + auto ID = sycl::detail::getSyclObjImpl(Graph).getID(); return std::hash()(ID); } }; diff --git a/sycl/source/detail/graph/memory_pool.cpp b/sycl/source/detail/graph/memory_pool.cpp index 998d1ef1d7424..fa711100d3b51 100644 --- a/sycl/source/detail/graph/memory_pool.cpp +++ b/sycl/source/detail/graph/memory_pool.cpp @@ -40,9 +40,9 @@ void *graph_mem_pool::malloc(size_t Size, usm::alloc AllocType, switch (AllocType) { case usm::alloc::device: { - const context_impl &CtxImpl = *getSyclObjImpl(MContext); + const context_impl &CtxImpl = getSyclObjImpl(MContext); const adapter_impl &Adapter = CtxImpl.getAdapter(); - const device_impl &DeviceImpl = *getSyclObjImpl(MDevice); + const device_impl &DeviceImpl = getSyclObjImpl(MDevice); const size_t Granularity = get_mem_granularity_for_allocation_size( DeviceImpl, CtxImpl, granularity_mode::recommended, Size); diff --git a/sycl/source/detail/graph/memory_pool.hpp b/sycl/source/detail/graph/memory_pool.hpp index aa7c0a9cb1bac..890a26edf0c66 100644 --- a/sycl/source/detail/graph/memory_pool.hpp +++ b/sycl/source/detail/graph/memory_pool.hpp @@ -116,7 +116,7 @@ class graph_mem_pool { // Create physical memory auto PhysicalMem = std::make_shared( - *getSyclObjImpl(MDevice), MContext, AllocInfo.Size); + getSyclObjImpl(MDevice), MContext, AllocInfo.Size); // Map the virtual reservation to it PhysicalMem->map(reinterpret_cast(Ptr), AllocInfo.Size, AccessMode, 0); diff --git a/sycl/source/detail/graph/node_impl.cpp b/sycl/source/detail/graph/node_impl.cpp index 65e7718688dbe..c85ba62020188 100644 --- a/sycl/source/detail/graph/node_impl.cpp +++ b/sycl/source/detail/graph/node_impl.cpp @@ -26,7 +26,7 @@ std::vector node::get_successors() const { } node node::get_node_from_event(event nodeEvent) { - auto EventImpl = sycl::detail::getSyclObjImpl(nodeEvent); + auto EventImpl = sycl::detail::getSyclObjImplPtr(nodeEvent); auto GraphImpl = EventImpl->getCommandGraph(); return sycl::detail::createSyclObjFromImpl( @@ -59,6 +59,6 @@ template <> __SYCL_EXPORT void node::update_range<3>(range<3> Range) { size_t std::hash::operator()( const sycl::ext::oneapi::experimental::node &Node) const { - auto ID = sycl::detail::getSyclObjImpl(Node)->getID(); + auto ID = sycl::detail::getSyclObjImpl(Node).getID(); return std::hash()(ID); } diff --git a/sycl/source/detail/helpers.cpp b/sycl/source/detail/helpers.cpp index 680cd01c6305d..6326e3ea9a0db 100644 --- a/sycl/source/detail/helpers.cpp +++ b/sycl/source/detail/helpers.cpp @@ -29,7 +29,7 @@ namespace detail { // Unused, only keeping for ABI compatibility reasons. __SYCL_EXPORT void waitEvents(std::vector DepEvents) { for (auto SyclEvent : DepEvents) { - detail::getSyclObjImpl(SyclEvent)->waitInternal(); + detail::getSyclObjImpl(SyclEvent).waitInternal(); } } #endif diff --git a/sycl/source/detail/helpers.hpp b/sycl/source/detail/helpers.hpp index 4da5b451e94c6..7d881dfd18047 100644 --- a/sycl/source/detail/helpers.hpp +++ b/sycl/source/detail/helpers.hpp @@ -43,8 +43,8 @@ template class variadic_iterator { public: using iterator_category = std::forward_iterator_tag; using difference_type = std::ptrdiff_t; - using value_type = std::remove_reference_t()))>; + using value_type = + std::remove_reference_t()))>; using sycl_type = SyclTy; using pointer = value_type *; using reference = value_type &; @@ -77,7 +77,7 @@ template class variadic_iterator { using Ty = std::decay_t; static_assert(!std::is_same_v); if constexpr (std::is_same_v) { - return *getSyclObjImpl(Elem); + return getSyclObjImpl(Elem); } else if constexpr (std::is_same_v) { return Elem; } else { @@ -123,11 +123,11 @@ template class iterator_range { template ())})>, + &getSyclObjImpl(std::declval())})>, // To make it different from `ContainerTy` overload above: typename = void> iterator_range(const sycl_type &Obj) - : iterator_range(&*getSyclObjImpl(Obj), (&*getSyclObjImpl(Obj) + 1), 1) {} + : iterator_range(&getSyclObjImpl(Obj), (&getSyclObjImpl(Obj) + 1), 1) {} iterator begin() const { return Begin; } iterator end() const { return End; } diff --git a/sycl/source/detail/image_impl.cpp b/sycl/source/detail/image_impl.cpp index 231dae863ac65..b86151154f33e 100644 --- a/sycl/source/detail/image_impl.cpp +++ b/sycl/source/detail/image_impl.cpp @@ -270,7 +270,7 @@ image_impl::image_impl(cl_mem MemObject, const context &SyclContext, std::move(Allocator)), MDimensions(Dimensions), MRange({0, 0, 0}) { ur_mem_handle_t Mem = ur::cast(BaseT::MInteropMemObject); - detail::context_impl &Context = *getSyclObjImpl(SyclContext); + detail::context_impl &Context = getSyclObjImpl(SyclContext); adapter_impl &Adapter = Context.getAdapter(); Adapter.call(Mem, UR_MEM_INFO_SIZE, sizeof(size_t), &(BaseT::MSizeInBytes), nullptr); diff --git a/sycl/source/detail/kernel_bundle_impl.hpp b/sycl/source/detail/kernel_bundle_impl.hpp index 2d076b6bbd8cf..a33d74e7db23e 100644 --- a/sycl/source/detail/kernel_bundle_impl.hpp +++ b/sycl/source/detail/kernel_bundle_impl.hpp @@ -52,7 +52,7 @@ inline bool checkAllDevicesAreInContext(devices_range Devices, const context &Context) { return std::all_of(Devices.begin(), Devices.end(), [&Context](device_impl &Dev) { - return getSyclObjImpl(Context)->isDeviceValid(Dev); + return getSyclObjImpl(Context).isDeviceValid(Dev); }); } @@ -74,7 +74,7 @@ CreateLinkGraph(const std::vector &DevImages) { // images collection. std::map ExportMap; for (size_t I = 0; I < DevImages.size(); ++I) { - device_image_impl &DevImageImpl = *getSyclObjImpl(DevImages[I]); + device_image_impl &DevImageImpl = getSyclObjImpl(DevImages[I]); if (DevImageImpl.get_bin_image_ref() == nullptr) continue; for (const sycl_device_binary_property &ESProp : @@ -91,7 +91,7 @@ CreateLinkGraph(const std::vector &DevImages) { std::vector> Dependencies; Dependencies.resize(DevImages.size()); for (size_t I = 0; I < DevImages.size(); ++I) { - device_image_impl &DevImageImpl = *getSyclObjImpl(DevImages[I]); + device_image_impl &DevImageImpl = getSyclObjImpl(DevImages[I]); if (DevImageImpl.get_bin_image_ref() == nullptr) continue; std::set DeviceImageDepsSet; @@ -208,7 +208,7 @@ class kernel_bundle_impl : MContext(InputBundle.get_context()), MDevices(Devs.to>()), MState(TargetState) { - kernel_bundle_impl &InputBundleImpl = *getSyclObjImpl(InputBundle); + kernel_bundle_impl &InputBundleImpl = getSyclObjImpl(InputBundle); MSpecConstValues = InputBundleImpl.get_spec_const_map_ref(); devices_range InputBundleDevices = InputBundleImpl.get_devices(); @@ -231,7 +231,7 @@ class kernel_bundle_impl InputBundleImpl.MDeviceImages) { // Skip images which are not compatible with devices provided if (none_of(get_devices(), - [&MainImg = *getSyclObjImpl(DevImgWithDeps.getMain())]( + [&MainImg = getSyclObjImpl(DevImgWithDeps.getMain())]( device_impl &Dev) { return MainImg.compatible_with_device(Dev); })) @@ -302,7 +302,7 @@ class kernel_bundle_impl ObjectBundles.begin(), ObjectBundles.end(), [&Dev](const kernel_bundle &KernelBundle) { devices_range BundleDevices = - getSyclObjImpl(KernelBundle)->get_devices(); + getSyclObjImpl(KernelBundle).get_devices(); return BundleDevices.contains(Dev); }); }); @@ -323,12 +323,12 @@ class kernel_bundle_impl for (const kernel_bundle &ObjectBundle : ObjectBundles) { for (const DevImgPlainWithDeps &DeviceImageWithDeps : - getSyclObjImpl(ObjectBundle)->MDeviceImages) { - if (getSyclObjImpl(DeviceImageWithDeps.getMain())->getOriginMask() & + getSyclObjImpl(ObjectBundle).MDeviceImages) { + if (getSyclObjImpl(DeviceImageWithDeps.getMain()).getOriginMask() & ImageOriginSYCLOffline) { OfflineDeviceImages.push_back(&DeviceImageWithDeps); for (const device_image_plain &DevImg : DeviceImageWithDeps) - OfflineDeviceImageSet.insert(&*getSyclObjImpl(DevImg)); + OfflineDeviceImageSet.insert(&getSyclObjImpl(DevImg)); } } } @@ -352,7 +352,7 @@ class kernel_bundle_impl for (const kernel_bundle &ObjectBundle : ObjectBundles) { detail::kernel_bundle_impl &ObjectBundleImpl = - *getSyclObjImpl(ObjectBundle); + getSyclObjImpl(ObjectBundle); // Firstly find all suitable AOT binaries, if the object bundle was // made from SYCLBIN. @@ -437,7 +437,7 @@ class kernel_bundle_impl for (const kernel_bundle &ObjectBundle : ObjectBundles) for (device_image_impl &DevImg : - getSyclObjImpl(ObjectBundle)->device_images()) + getSyclObjImpl(ObjectBundle).device_images()) if (OfflineDeviceImageSet.find(&DevImg) == OfflineDeviceImageSet.end()) DevImagesSet.insert(&DevImg); @@ -463,7 +463,7 @@ class kernel_bundle_impl for (auto &GraphIt : DevImageLinkGraphs) { device_impl &Dev = *GraphIt.first; GraphIt.second.Poison([&Dev](const device_image_plain &DevImg) { - return !getSyclObjImpl(DevImg)->compatible_with_device(Dev); + return !getSyclObjImpl(DevImg).compatible_with_device(Dev); }); } @@ -488,13 +488,13 @@ class kernel_bundle_impl [](const device_image_plain &LHS, const device_image_plain &RHS) { // Sort by state: That leaves objects (JIT) at the beginning and // executables (AOT) at the end. - return getSyclObjImpl(LHS)->get_state() < - getSyclObjImpl(RHS)->get_state(); + return getSyclObjImpl(LHS).get_state() < + getSyclObjImpl(RHS).get_state(); }); auto AOTImgsBegin = std::find_if(GraphImgs.begin(), GraphImgs.end(), [](const device_image_plain &Img) { - return getSyclObjImpl(Img)->get_state() == + return getSyclObjImpl(Img).get_state() == bundle_state::executable; }); size_t NumJITImgs = std::distance(GraphImgs.begin(), AOTImgsBegin); @@ -529,7 +529,7 @@ class kernel_bundle_impl for (const DevImgPlainWithDeps *DeviceImageWithDeps : OfflineDeviceImages) { // Skip images which are not compatible with devices provided if (none_of(get_devices(), - [&MainImg = *getSyclObjImpl(DeviceImageWithDeps->getMain())]( + [&MainImg = getSyclObjImpl(DeviceImageWithDeps->getMain())]( device_impl &Dev) { return MainImg.compatible_with_device(Dev); })) @@ -549,7 +549,7 @@ class kernel_bundle_impl populateDeviceGlobalsForSYCLBIN(); for (const kernel_bundle &Bundle : ObjectBundles) { - kernel_bundle_impl &BundleImpl = *getSyclObjImpl(Bundle); + kernel_bundle_impl &BundleImpl = getSyclObjImpl(Bundle); for (const auto &[Name, Values] : BundleImpl.MSpecConstValues) { MSpecConstValues[Name] = Values; } @@ -667,7 +667,7 @@ class kernel_bundle_impl const std::string &Src, include_pairs_t IncludePairsVec, private_tag) : MContext(Context), MDevices(getSyclObjImpl(Context) - ->getDevices() + .getDevices() .to>()), MDeviceImages{device_image_plain{device_image_impl::create( Src, MContext, MDevices, Lang, std::move(IncludePairsVec))}}, @@ -681,7 +681,7 @@ class kernel_bundle_impl kernel_bundle_impl(const context &Context, syclex::source_language Lang, const std::vector &Bytes, private_tag) : MContext(Context), MDevices(getSyclObjImpl(Context) - ->getDevices() + .getDevices() .to>()), MDeviceImages{device_image_plain{ device_image_impl::create(Bytes, MContext, MDevices, Lang)}}, @@ -853,7 +853,7 @@ class kernel_bundle_impl void *ext_oneapi_get_device_global_address(const std::string &Name, const device &Dev) const { DeviceGlobalMapEntry *Entry = getDeviceGlobalEntry(Name); - device_impl &DeviceImpl = *getSyclObjImpl(Dev); + device_impl &DeviceImpl = getSyclObjImpl(Dev); if (!get_devices().contains(DeviceImpl)) { throw sycl::exception(make_error_code(errc::invalid), @@ -876,7 +876,7 @@ class kernel_bundle_impl } else { queue InitQueue{MContext, Dev}; auto &USMMem = - Entry->getOrAllocateDeviceGlobalUSM(*getSyclObjImpl(InitQueue)); + Entry->getOrAllocateDeviceGlobalUSM(getSyclObjImpl(InitQueue)); InitQueue.wait_and_throw(); return USMMem.getPtr(); } @@ -1033,7 +1033,7 @@ class kernel_bundle_impl for (DevImgPlainWithDeps &DevImgWithDeps : NewDevImgs) for (device_image_plain &DevImg : DevImgWithDeps) for (auto SpecConst : MSpecConstValues) - getSyclObjImpl(DevImg)->set_specialization_constant_raw_value( + getSyclObjImpl(DevImg).set_specialization_constant_raw_value( SpecConst.first.c_str(), SpecConst.second.data()); // Add the images to the collection @@ -1085,7 +1085,7 @@ class kernel_bundle_impl if (!DeviceImageWithDeps.getMain().has_kernel(KernelID)) continue; - const auto DeviceImageImpl = detail::getSyclObjImpl(DeviceImage); + const auto DeviceImageImpl = detail::getSyclObjImplPtr(DeviceImage); SpecConstsSet |= DeviceImageImpl->is_any_specialization_constant_set(); // Remember current image in corresponding variable depending on whether @@ -1128,7 +1128,7 @@ class kernel_bundle_impl MContext, KernelID.get_name(), /*PropList=*/{}, UrProgram); return std::make_shared( - std::move(Kernel), *detail::getSyclObjImpl(MContext), + std::move(Kernel), detail::getSyclObjImpl(MContext), std::move(SelectedImage), *this, ArgMask, UrProgram, CacheMutex); } diff --git a/sycl/source/detail/kernel_data.cpp b/sycl/source/detail/kernel_data.cpp index 2fa9a964ef36f..610c328b81ce7 100644 --- a/sycl/source/detail/kernel_data.cpp +++ b/sycl/source/detail/kernel_data.cpp @@ -124,21 +124,21 @@ void KernelData::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind, detail::AccessorBaseHost *GBufBase = static_cast(&S->GlobalBuf); - detail::Requirement *GBufReq = &*detail::getSyclObjImpl(*GBufBase); + detail::Requirement *GBufReq = &detail::getSyclObjImpl(*GBufBase); addArgsForGlobalAccessor(GBufReq, Index, IndexShift, Size, IsKernelCreatedFromSource, GlobalSize, MArgs, IsESIMD); ++IndexShift; detail::AccessorBaseHost *GOffsetBase = static_cast(&S->GlobalOffset); - detail::Requirement *GOffsetReq = &*detail::getSyclObjImpl(*GOffsetBase); + detail::Requirement *GOffsetReq = &detail::getSyclObjImpl(*GOffsetBase); addArgsForGlobalAccessor(GOffsetReq, Index, IndexShift, Size, IsKernelCreatedFromSource, GlobalSize, MArgs, IsESIMD); ++IndexShift; detail::AccessorBaseHost *GFlushBase = static_cast(&S->GlobalFlushBuf); - detail::Requirement *GFlushReq = &*detail::getSyclObjImpl(*GFlushBase); + detail::Requirement *GFlushReq = &detail::getSyclObjImpl(*GFlushBase); // If work group size wasn't set explicitly then it must be recieved // from kernel attribute or set to default values. @@ -316,11 +316,11 @@ void KernelData::extractArgsAndReqsFromLambda() { AccTarget == access::target::image_array)) { detail::AccessorBaseHost *AccBase = static_cast(Ptr); - Ptr = detail::getSyclObjImpl(*AccBase).get(); + Ptr = &detail::getSyclObjImpl(*AccBase); } else if (AccTarget == access::target::local) { detail::LocalAccessorBaseHost *LocalAccBase = static_cast(Ptr); - Ptr = detail::getSyclObjImpl(*LocalAccBase).get(); + Ptr = &detail::getSyclObjImpl(*LocalAccBase); } } else if (Kind == detail::kernel_param_kind_t::kind_dynamic_accessor) { // For args kind of accessor Size is information about accessor. @@ -332,13 +332,13 @@ void KernelData::extractArgsAndReqsFromLambda() { ext::oneapi::experimental::detail::dynamic_parameter_base *DynamicParamBase = static_cast< ext::oneapi::experimental::detail::dynamic_parameter_base *>(Ptr); - Ptr = detail::getSyclObjImpl(*DynamicParamBase).get(); + Ptr = &detail::getSyclObjImpl(*DynamicParamBase); } else if (Kind == detail::kernel_param_kind_t::kind_dynamic_work_group_memory) { ext::oneapi::experimental::detail::dynamic_parameter_base *DynamicParamBase = static_cast< ext::oneapi::experimental::detail::dynamic_parameter_base *>(Ptr); - Ptr = detail::getSyclObjImpl(*DynamicParamBase).get(); + Ptr = &detail::getSyclObjImpl(*DynamicParamBase); } processArg(Ptr, Kind, Size, I, IndexShift, diff --git a/sycl/source/detail/kernel_impl.hpp b/sycl/source/detail/kernel_impl.hpp index 1fda7c147cdf5..74a9d64ec2587 100644 --- a/sycl/source/detail/kernel_impl.hpp +++ b/sycl/source/detail/kernel_impl.hpp @@ -340,7 +340,7 @@ kernel_impl::get_info(const device &Device) const { Param, info::kernel_device_specific::global_work_size>) { bool isDeviceCustom = Device.get_info() == info::device_type::custom; - if (!isDeviceCustom && !isBuiltInKernel(*getSyclObjImpl(Device))) + if (!isDeviceCustom && !isBuiltInKernel(getSyclObjImpl(Device))) throw exception( sycl::make_error_code(errc::invalid), "info::kernel_device_specific::global_work_size descriptor may only " @@ -349,7 +349,7 @@ kernel_impl::get_info(const device &Device) const { } return get_kernel_device_specific_info( - this->getHandleRef(), getSyclObjImpl(Device)->getHandleRef(), + this->getHandleRef(), getSyclObjImpl(Device).getHandleRef(), getAdapter()); } @@ -358,7 +358,7 @@ inline typename Param::return_type kernel_impl::get_info(const device &Device, const sycl::range<3> &WGSize) const { return get_kernel_device_specific_info_with_input( - this->getHandleRef(), getSyclObjImpl(Device)->getHandleRef(), WGSize, + this->getHandleRef(), getSyclObjImpl(Device).getHandleRef(), WGSize, getAdapter()); } @@ -376,7 +376,7 @@ kernel_impl::queryMaxNumWorkGroups(queue Queue, adapter_impl &Adapter = getAdapter(); const auto &Handle = getHandleRef(); auto Device = Queue.get_device(); - auto DeviceHandleRef = sycl::detail::getSyclObjImpl(Device)->getHandleRef(); + auto DeviceHandleRef = sycl::detail::getSyclObjImpl(Device).getHandleRef(); size_t WG[Dimensions]; WG[0] = WorkGroupSize[0]; @@ -453,7 +453,7 @@ inline typename ext::intel::info::kernel_device_specific::spill_memory_size:: return get_kernel_device_specific_info< ext::intel::info::kernel_device_specific::spill_memory_size>( - this->getHandleRef(), getSyclObjImpl(Device)->getHandleRef(), + this->getHandleRef(), getSyclObjImpl(Device).getHandleRef(), getAdapter()); } @@ -467,8 +467,8 @@ inline typename syclex::info::kernel_queue_specific::max_work_group_size:: syclex::info::kernel_queue_specific::max_work_group_size>( queue Queue) const { adapter_impl &Adapter = getAdapter(); - const auto DeviceNativeHandle = - getSyclObjImpl(Queue.get_device())->getHandleRef(); + ur_device_handle_t DeviceNativeHandle = + getSyclObjImpl(Queue.get_device()).getHandleRef(); size_t KernelWGSize = 0; Adapter.call( @@ -523,8 +523,8 @@ ADD_TEMPLATE_METHOD_SPEC(3) throw exception(sycl::make_error_code(errc::invalid), \ "The work-group size cannot be zero."); \ adapter_impl &Adapter = getAdapter(); \ - const auto DeviceNativeHandle = \ - getSyclObjImpl(Queue.get_device())->getHandleRef(); \ + ur_device_handle_t DeviceNativeHandle = \ + getSyclObjImpl(Queue.get_device()).getHandleRef(); \ uint32_t KernelSubWGSize = 0; \ Adapter.call(MKernel, DeviceNativeHandle, Reg, \ sizeof(uint32_t), &KernelSubWGSize, \ diff --git a/sycl/source/detail/memory_manager.cpp b/sycl/source/detail/memory_manager.cpp index 2501730dfccaa..b0574d6b00410 100644 --- a/sycl/source/detail/memory_manager.cpp +++ b/sycl/source/detail/memory_manager.cpp @@ -1149,13 +1149,13 @@ getOrBuildProgramForDeviceGlobal(queue_impl &Queue, auto Context = createSyclObjFromImpl(ContextImpl); ProgramManager &PM = ProgramManager::getInstance(); const RTDeviceBinaryImage &Img = PM.getDeviceImage( - DeviceGlobalEntry->MImages, ContextImpl, *getSyclObjImpl(Device)); + DeviceGlobalEntry->MImages, ContextImpl, getSyclObjImpl(Device)); device_image_plain DeviceImage = PM.getDeviceImageFromBinaryImage(&Img, Context, Device); device_image_plain BuiltImage = PM.build(std::move(DeviceImage), {std::move(Device)}, {}); - return getSyclObjImpl(BuiltImage)->get_ur_program(); + return getSyclObjImpl(BuiltImage).get_ur_program(); } static void diff --git a/sycl/source/detail/memory_pool_impl.cpp b/sycl/source/detail/memory_pool_impl.cpp index 68efcd880166a..722901c45ddde 100644 --- a/sycl/source/detail/memory_pool_impl.cpp +++ b/sycl/source/detail/memory_pool_impl.cpp @@ -61,7 +61,7 @@ memory_pool_impl::memory_pool_impl(const sycl::context &ctx, const sycl::device &dev, const sycl::usm::alloc kind, const pool_properties props) - : MContextImplPtr(sycl::detail::getSyclObjImpl(ctx)), MDevice(dev), + : MContextImplPtr(sycl::detail::getSyclObjImplPtr(ctx)), MDevice(dev), MKind(kind), MProps(props) { if (kind == sycl::usm::alloc::device) @@ -80,7 +80,7 @@ memory_pool_impl::memory_pool_impl(const sycl::context &ctx, ur_usm_pool_handle_t poolHandle, const bool isDefaultPool, const pool_properties props) - : MContextImplPtr(sycl::detail::getSyclObjImpl(ctx)), MDevice(dev), + : MContextImplPtr(sycl::detail::getSyclObjImplPtr(ctx)), MDevice(dev), MKind(kind), MPoolHandle(poolHandle), MIsDefaultPool(isDefaultPool), MProps(props) {} diff --git a/sycl/source/detail/physical_mem_impl.hpp b/sycl/source/detail/physical_mem_impl.hpp index 3bc4d6865187c..3f02a5113b082 100644 --- a/sycl/source/detail/physical_mem_impl.hpp +++ b/sycl/source/detail/physical_mem_impl.hpp @@ -39,7 +39,7 @@ class physical_mem_impl { public: physical_mem_impl(device_impl &DeviceImpl, const context &SyclContext, size_t NumBytes) - : MDevice(DeviceImpl), MContext(getSyclObjImpl(SyclContext)), + : MDevice(DeviceImpl), MContext(getSyclObjImplPtr(SyclContext)), MNumBytes(NumBytes) { adapter_impl &Adapter = MContext->getAdapter(); diff --git a/sycl/source/detail/pipes.cpp b/sycl/source/detail/pipes.cpp index 470a8bfcabd61..170d09d341363 100644 --- a/sycl/source/detail/pipes.cpp +++ b/sycl/source/detail/pipes.cpp @@ -29,7 +29,7 @@ pipe_base::get_pipe_name_impl(const void *HostPipePtr) { __SYCL_EXPORT bool pipe_base::wait_non_blocking(const event &E) { bool Success = false; - sycl::detail::event_impl &EImpl = *sycl::detail::getSyclObjImpl(E); + sycl::detail::event_impl &EImpl = sycl::detail::getSyclObjImpl(E); EImpl.wait(&Success); return Success; } diff --git a/sycl/source/detail/platform_impl.cpp b/sycl/source/detail/platform_impl.cpp index d88b8972aa5d1..514e71c49c3d9 100644 --- a/sycl/source/detail/platform_impl.cpp +++ b/sycl/source/detail/platform_impl.cpp @@ -83,7 +83,7 @@ context_impl &platform_impl::khr_get_default_context() { auto It = PlatformToDefaultContextCache.find(this); if (PlatformToDefaultContextCache.end() == It) std::tie(It, std::ignore) = PlatformToDefaultContextCache.insert( - {this, detail::getSyclObjImpl(context{get_devices()})}); + {this, detail::getSyclObjImplPtr(context{get_devices()})}); return *It->second; } @@ -145,7 +145,7 @@ std::vector platform_impl::get_platforms() { for (auto &Platform : PlatformsWithAdapter) { auto &Adapter = Platform.second; std::lock_guard Guard(*Adapter->getAdapterMutex()); - Adapter->getPlatformId(getSyclObjImpl(Platform.first)->getHandleRef()); + Adapter->getPlatformId(getSyclObjImpl(Platform.first).getHandleRef()); Platforms.push_back(Platform.first); } diff --git a/sycl/source/detail/program_manager/program_manager.cpp b/sycl/source/detail/program_manager/program_manager.cpp index 835e31952d5d0..fb6c2967e1ce7 100644 --- a/sycl/source/detail/program_manager/program_manager.cpp +++ b/sycl/source/detail/program_manager/program_manager.cpp @@ -849,7 +849,7 @@ Managed ProgramManager::getBuiltURProgram( if (!BuildDev->isRootDevice()) { device_impl *CandidateRoot = BuildDev; while (!CandidateRoot->isRootDevice()) - CandidateRoot = &*detail::getSyclObjImpl( + CandidateRoot = &detail::getSyclObjImpl( CandidateRoot->get_info()); bool MustBuildOnSubdevice = true; @@ -911,7 +911,7 @@ ProgramManager::getBuiltURProgram(const BinImgWithDeps &ImgWithDeps, if (!DeviceCodeWasInCache && MainImg.supportsSpecConstants()) { enableITTAnnotationsIfNeeded(NativePrg, Adapter); if (DevImgWithDeps) - setSpecializationConstants(*getSyclObjImpl(DevImgWithDeps->getMain()), + setSpecializationConstants(getSyclObjImpl(DevImgWithDeps->getMain()), NativePrg, Adapter); } @@ -947,7 +947,7 @@ ProgramManager::getBuiltURProgram(const BinImgWithDeps &ImgWithDeps, enableITTAnnotationsIfNeeded(NativePrg, Adapter); if (DevImgWithDeps) setSpecializationConstants( - *getSyclObjImpl(DevImgWithDeps->getAll()[I]), NativePrg, + getSyclObjImpl(DevImgWithDeps->getAll()[I]), NativePrg, Adapter); } ProgramsToLink.push_back(std::move(NativePrg)); @@ -2470,7 +2470,7 @@ device_image_plain ProgramManager::getDeviceImageFromBinaryImage( const device &Dev) { const bundle_state ImgState = getBinImageState(BinImage); - assert(compatibleWithDevice(BinImage, *getSyclObjImpl(Dev).get())); + assert(compatibleWithDevice(BinImage, getSyclObjImpl(Dev))); std::shared_ptr> KernelIDs; // Collect kernel names for the image. @@ -2680,8 +2680,8 @@ ProgramManager::createDependencyImage(const context &Ctx, devices_range Devs, void ProgramManager::bringSYCLDeviceImageToState( DevImgPlainWithDeps &DeviceImage, bundle_state TargetState) { device_image_plain &MainImg = DeviceImage.getMain(); - device_image_impl &MainImgImpl = *getSyclObjImpl(MainImg); - const bundle_state DevImageState = getSyclObjImpl(MainImg)->get_state(); + device_image_impl &MainImgImpl = getSyclObjImpl(MainImg); + const bundle_state DevImageState = getSyclObjImpl(MainImg).get_state(); // At this time, there is no circumstance where a device image should ever // be in the source state. That not good. assert(DevImageState != bundle_state::ext_oneapi_source); @@ -2766,7 +2766,7 @@ ProgramManager::getSYCLDeviceImages(const context &Ctx, devices_range Devs, auto It = std::remove_if( DeviceImages.begin(), DeviceImages.end(), [&Selector](const DevImgPlainWithDeps &ImageWithDeps) { - return !Selector(getSyclObjImpl(ImageWithDeps.getMain())); + return !Selector(getSyclObjImplPtr(ImageWithDeps.getMain())); }); DeviceImages.erase(It, DeviceImages.end()); @@ -2825,14 +2825,14 @@ ProgramManager::compile(const DevImgPlainWithDeps &ImgWithDeps, std::vector CompiledImages; CompiledImages.reserve(ImgWithDeps.size()); for (const device_image_plain &DeviceImage : ImgWithDeps.getAll()) { - device_image_impl &InputImpl = *getSyclObjImpl(DeviceImage); + device_image_impl &InputImpl = getSyclObjImpl(DeviceImage); adapter_impl &Adapter = - getSyclObjImpl(InputImpl.get_context())->getAdapter(); + getSyclObjImpl(InputImpl.get_context()).getAdapter(); Managed Prog = createURProgram(*InputImpl.get_bin_image_ref(), - *getSyclObjImpl(InputImpl.get_context()), Devs); + getSyclObjImpl(InputImpl.get_context()), Devs); if (InputImpl.get_bin_image_ref()->supportsSpecConstants()) setSpecializationConstants(InputImpl, Prog, Adapter); @@ -2859,13 +2859,13 @@ ProgramManager::compile(const DevImgPlainWithDeps &ImgWithDeps, appendCompileEnvironmentVariablesThatAppend(CompileOptions); ur_result_t Error = doCompile( Adapter, ObjectImpl->get_ur_program(), Devs.size(), URDevices.data(), - getSyclObjImpl(InputImpl.get_context()).get()->getHandleRef(), + getSyclObjImpl(InputImpl.get_context()).getHandleRef(), CompileOptions.c_str()); if (Error != UR_RESULT_SUCCESS) throw sycl::exception( make_error_code(errc::build), getProgramBuildLog(ObjectImpl->get_ur_program(), - *getSyclObjImpl(ObjectImpl->get_context()))); + getSyclObjImpl(ObjectImpl->get_context()))); CompiledImages.push_back( createSyclObjFromImpl(std::move(ObjectImpl))); @@ -2957,7 +2957,7 @@ ProgramManager::link(device_images_range Imgs, devices_range Devs, // Should always come last! appendLinkEnvironmentVariablesThatAppend(LinkOptionsStr); const context &Context = FirstImgImpl.get_context(); - context_impl &ContextImpl = *getSyclObjImpl(Context); + context_impl &ContextImpl = getSyclObjImpl(Context); adapter_impl &Adapter = ContextImpl.getAdapter(); ur_exp_program_flags_t UrLinkFlags{}; @@ -3056,7 +3056,7 @@ void ProgramManager::dynamicLink(device_images_range Imgs) { auto URPrograms = Imgs.to>(); auto [URCtx, Adapter] = - get_ur_handles(*getSyclObjImpl(Imgs.front().get_context())); + get_ur_handles(getSyclObjImpl(Imgs.front().get_context())); Adapter->call(URCtx, URPrograms.size(), URPrograms.data()); } @@ -3074,15 +3074,15 @@ ProgramManager::build(const DevImgPlainWithDeps &DevImgWithDeps, PropList, NoAllowedPropertiesCheck, NoAllowedPropertiesCheck); } - device_image_impl &MainInputImpl = *getSyclObjImpl(DevImgWithDeps.getMain()); + device_image_impl &MainInputImpl = getSyclObjImpl(DevImgWithDeps.getMain()); const context &Context = MainInputImpl.get_context(); - context_impl &ContextImpl = *detail::getSyclObjImpl(Context); + context_impl &ContextImpl = detail::getSyclObjImpl(Context); std::vector BinImgs; BinImgs.reserve(DevImgWithDeps.size()); for (const device_image_plain &DevImg : DevImgWithDeps) - BinImgs.push_back(getSyclObjImpl(DevImg)->get_bin_image_ref()); + BinImgs.push_back(getSyclObjImpl(DevImg).get_bin_image_ref()); std::shared_ptr> KernelIDs; std::vector SpecConstBlob; @@ -3097,8 +3097,8 @@ ProgramManager::build(const DevImgPlainWithDeps &DevImgWithDeps, std::vector SortedImgs = DevImgWithDeps.getAll(); std::sort(SortedImgs.begin(), SortedImgs.end(), [](const auto &A, const auto &B) { - return getSyclObjImpl(A)->get_bin_image_ref()->getImageID() < - getSyclObjImpl(B)->get_bin_image_ref()->getImageID(); + return getSyclObjImpl(A).get_bin_image_ref()->getImageID() < + getSyclObjImpl(B).get_bin_image_ref()->getImageID(); }); ResultBinImg = mergeImageData(SortedImgs, *KernelIDs, SpecConstBlob, SpecConstMap, MergedImageStorage); @@ -3114,7 +3114,7 @@ ProgramManager::build(const DevImgPlainWithDeps &DevImgWithDeps, // The origin becomes the combination of all the origins. uint8_t CombinedOrigins = 0; for (const device_image_plain &DevImg : DevImgWithDeps) - CombinedOrigins |= getSyclObjImpl(DevImg)->getOriginMask(); + CombinedOrigins |= getSyclObjImpl(DevImg).getOriginMask(); std::vector *> RTCInfoPtrs; @@ -3123,7 +3123,7 @@ ProgramManager::build(const DevImgPlainWithDeps &DevImgWithDeps, std::map> MergedEliminatedKernelArgMasks; for (const device_image_plain &DevImg : DevImgWithDeps) { - device_image_impl &DevImgImpl = *getSyclObjImpl(DevImg); + device_image_impl &DevImgImpl = getSyclObjImpl(DevImg); RTCInfoPtrs.emplace_back(&(DevImgImpl.getRTCInfo())); MergedKernelNames.insert(DevImgImpl.getKernelNames().begin(), DevImgImpl.getKernelNames().end()); @@ -3155,7 +3155,7 @@ ProgramManager::getOrCreateKernel(const context &Context, PropList, NoAllowedPropertiesCheck, NoAllowedPropertiesCheck); } - context_impl &Ctx = *getSyclObjImpl(Context); + context_impl &Ctx = getSyclObjImpl(Context); KernelProgramCache &Cache = Ctx.getKernelProgramCache(); @@ -3251,8 +3251,8 @@ ur_kernel_handle_t ProgramManager::getOrCreateMaterializedKernel( if constexpr (DbgProgMgr > 0) std::cerr << ">>> Adding the kernel to the cache.\n"; - context_impl &ContextImpl = *detail::getSyclObjImpl(Context); - detail::device_impl &DeviceImpl = *detail::getSyclObjImpl(Device); + context_impl &ContextImpl = detail::getSyclObjImpl(Context); + detail::device_impl &DeviceImpl = detail::getSyclObjImpl(Device); adapter_impl &Adapter = DeviceImpl.getAdapter(); Managed ProgramManaged = diff --git a/sycl/source/detail/queue_impl.cpp b/sycl/source/detail/queue_impl.cpp index 746554cd91a97..d954d6d54ecea 100644 --- a/sycl/source/detail/queue_impl.cpp +++ b/sycl/source/detail/queue_impl.cpp @@ -52,7 +52,7 @@ static std::vector getUrEvents(const std::vector &DepEvents) { std::vector RetUrEvents; for (const sycl::event &Event : DepEvents) { - event_impl &EventImpl = *detail::getSyclObjImpl(Event); + event_impl &EventImpl = detail::getSyclObjImpl(Event); auto Handle = EventImpl.getHandle(); if (Handle != nullptr) RetUrEvents.push_back(Handle); @@ -315,7 +315,7 @@ queue_impl::submit_impl(const detail::type_erased_cgfo_ty &CGF, // We might swap handlers as part of the CGH(Handler) call in the reduction // case, so need to retrieve the handler_impl reference after that. - detail::handler_impl &HandlerImpl = *detail::getSyclObjImpl(Handler); + detail::handler_impl &HandlerImpl = detail::getSyclObjImpl(Handler); // Scheduler will later omit events, that are not required to execute tasks. // Host and interop tasks, however, are not submitted to low-level runtimes @@ -646,9 +646,9 @@ detail::EventImplPtr queue_impl::submit_direct( std::optional ExternalEvent = popExternalEvent(); if (ExternalEvent) { registerEventDependency( - getSyclObjImpl(*ExternalEvent), CGData.MEvents, this, getContextImpl(), - getDeviceImpl(), hasCommandGraph() ? getCommandGraph().get() : nullptr, - Type); + getSyclObjImplPtr(*ExternalEvent), CGData.MEvents, this, + getContextImpl(), getDeviceImpl(), + hasCommandGraph() ? getCommandGraph().get() : nullptr, Type); } auto &Deps = hasCommandGraph() ? MExtGraphDeps : MDefaultGraphDeps; @@ -670,7 +670,7 @@ detail::EventImplPtr queue_impl::submit_direct( for (event e : DepEvents) { registerEventDependency( - getSyclObjImpl(e), CGData.MEvents, this, getContextImpl(), + getSyclObjImplPtr(e), CGData.MEvents, this, getContextImpl(), getDeviceImpl(), hasCommandGraph() ? getCommandGraph().get() : nullptr, Type); } @@ -771,7 +771,7 @@ event queue_impl::submitMemOpHelper(const std::vector &DepEvents, } event ResEvent = prepareSYCLEventAssociatedWithQueue(*this); - const auto &EventImpl = detail::getSyclObjImpl(ResEvent); + const auto &EventImpl = detail::getSyclObjImplPtr(ResEvent); { NestedCallsTracker tracker; ur_event_handle_t UREvent = nullptr; @@ -787,7 +787,7 @@ event queue_impl::submitMemOpHelper(const std::vector &DepEvents, ExpandedDepEventImplPtrs.reserve(ExpandedDepEvents.size()); for (const event &DepEvent : ExpandedDepEvents) ExpandedDepEventImplPtrs.push_back( - detail::getSyclObjImpl(DepEvent)); + detail::getSyclObjImplPtr(DepEvent)); // EventImpl is local for current thread, no need to lock. EventImpl->cleanDepEventsThroughOneLevelUnlocked(); diff --git a/sycl/source/detail/queue_impl.hpp b/sycl/source/detail/queue_impl.hpp index a9b2f217f37d3..5425c095d0a65 100644 --- a/sycl/source/detail/queue_impl.hpp +++ b/sycl/source/detail/queue_impl.hpp @@ -780,7 +780,7 @@ class queue_impl : public std::enable_shared_from_this { assert(isInOrder()); assert(Handler.getType() == CGType::CodeplayHostTask || (Handler.getType() == CGType::ExecCommandBuffer && - getSyclObjImpl(Handler)->MExecGraph->containsHostTask())); + getSyclObjImpl(Handler).MExecGraph->containsHostTask())); auto &EventToBuildDeps = MGraph.expired() ? MDefaultGraphDeps.LastEventPtr : MExtGraphDeps.LastEventPtr; @@ -815,7 +815,7 @@ class queue_impl : public std::enable_shared_from_this { // this is handled by finalizeHandlerInOrderHostTask assert(Handler.getType() != CGType::CodeplayHostTask); assert(!(Handler.getType() == CGType::ExecCommandBuffer && - getSyclObjImpl(Handler)->MExecGraph->containsHostTask())); + getSyclObjImpl(Handler).MExecGraph->containsHostTask())); auto &EventToBuildDeps = MGraph.expired() ? MDefaultGraphDeps.LastEventPtr : MExtGraphDeps.LastEventPtr; @@ -848,7 +848,7 @@ class queue_impl : public std::enable_shared_from_this { template detail::EventImplPtr finalizeHandlerOutOfOrder(HandlerType &Handler) { - const CGType Type = getSyclObjImpl(Handler)->MCGType; + const CGType Type = getSyclObjImpl(Handler).MCGType; std::lock_guard Lock{MMutex}; MEmpty.store(false, std::memory_order_release); diff --git a/sycl/source/detail/reduction.cpp b/sycl/source/detail/reduction.cpp index 84a8722c96e76..1272ad38ec15f 100644 --- a/sycl/source/detail/reduction.cpp +++ b/sycl/source/detail/reduction.cpp @@ -63,7 +63,7 @@ uint32_t reduGetMaxNumConcurrentWorkGroups(device_impl &Dev) { // Returns the estimated number of physical threads on the device associated // with the given queue. __SYCL_EXPORT uint32_t reduGetMaxNumConcurrentWorkGroups(handler &cgh) { - return reduGetMaxNumConcurrentWorkGroups(getSyclObjImpl(cgh)->get_device()); + return reduGetMaxNumConcurrentWorkGroups(getSyclObjImpl(cgh).get_device()); } #ifndef __INTEL_PREVIEW_BREAKING_CHANGES @@ -125,7 +125,7 @@ size_t reduGetMaxWGSize(device_impl &Dev, size_t LocalMemBytesPerWorkItem) { } __SYCL_EXPORT size_t reduGetMaxWGSize(handler &cgh, size_t LocalMemBytesPerWorkItem) { - return reduGetMaxWGSize(getSyclObjImpl(cgh)->get_device(), + return reduGetMaxWGSize(getSyclObjImpl(cgh).get_device(), LocalMemBytesPerWorkItem); } #ifndef __INTEL_PREVIEW_BREAKING_CHANGES @@ -181,7 +181,7 @@ size_t reduGetPreferredWGSize(device_impl &Dev, } __SYCL_EXPORT size_t reduGetPreferredWGSize(handler &cgh, size_t LocalMemBytesPerWorkItem) { - return reduGetPreferredWGSize(getSyclObjImpl(cgh)->get_device(), + return reduGetPreferredWGSize(getSyclObjImpl(cgh).get_device(), LocalMemBytesPerWorkItem); } #ifndef __INTEL_PREVIEW_BREAKING_CHANGES diff --git a/sycl/source/detail/scheduler/commands.cpp b/sycl/source/detail/scheduler/commands.cpp index f36b1e269e009..2b7540a651f43 100644 --- a/sycl/source/detail/scheduler/commands.cpp +++ b/sycl/source/detail/scheduler/commands.cpp @@ -98,7 +98,7 @@ void emitInstrumentationGeneral(xpti::stream_id_t StreamID, uint64_t InstanceID, } static size_t deviceToID(const device &Device) { - return reinterpret_cast(getSyclObjImpl(Device)->getHandleRef()); + return reinterpret_cast(getSyclObjImpl(Device).getHandleRef()); } static void addDeviceMetadata(xpti_td *TraceEvent, queue_impl *Queue) { @@ -108,7 +108,7 @@ static void addDeviceMetadata(xpti_td *TraceEvent, queue_impl *Queue) { deviceToID(Queue->get_device())); xpti::addMetadata( TraceEvent, "sycl_device_name", - getSyclObjImpl(Queue->get_device())->get_info()); + getSyclObjImpl(Queue->get_device()).get_info()); } } static void addDeviceMetadata(xpti_td *TraceEvent, @@ -431,7 +431,7 @@ class DispatchHostTask { auto &Queue = HostTask.MQueue; bool NativeCommandSupport = false; Queue->getAdapter().call( - detail::getSyclObjImpl(Queue->get_device())->getHandleRef(), + detail::getSyclObjImpl(Queue->get_device()).getHandleRef(), UR_DEVICE_INFO_ENQUEUE_NATIVE_COMMAND_SUPPORT_EXP, sizeof(NativeCommandSupport), &NativeCommandSupport, nullptr); if (NativeCommandSupport) { @@ -2351,7 +2351,7 @@ static void GetUrArgsBasedOnType( sampler *SamplerPtr = (sampler *)Arg.MPtr; ur_exp_kernel_arg_value_t Value = {}; Value.sampler = (ur_sampler_handle_t)detail::getSyclObjImpl(*SamplerPtr) - ->getOrCreateSampler(ContextImpl); + .getOrCreateSampler(ContextImpl); UrArg.type = UR_EXP_KERNEL_ARG_TYPE_SAMPLER; UrArg.size = sizeof(ur_sampler_handle_t); UrArg.value = Value; @@ -2589,7 +2589,7 @@ static void SetArgBasedOnType( sampler *SamplerPtr = (sampler *)Arg.MPtr; ur_sampler_handle_t Sampler = (ur_sampler_handle_t)detail::getSyclObjImpl(*SamplerPtr) - ->getOrCreateSampler(ContextImpl); + .getOrCreateSampler(ContextImpl); Adapter.call(Kernel, NextTrueIndex, nullptr, Sampler); break; @@ -2673,7 +2673,7 @@ ur_result_t enqueueImpCommandBufferKernel( device_image_impl *DeviceImageImpl = nullptr; const KernelArgMask *EliminatedArgMask = nullptr; - context_impl &ContextImpl = *sycl::detail::getSyclObjImpl(Ctx); + context_impl &ContextImpl = sycl::detail::getSyclObjImpl(Ctx); std::tie(UrKernel, DeviceImageImpl, EliminatedArgMask) = getCGKernelInfo( CommandGroup, ContextImpl, DeviceImpl, FastKernelCacheValsToRelease); @@ -2892,7 +2892,7 @@ ur_result_t enqueueReadWriteHostPipe(queue_impl &Queue, hostPipeEntry->getDevBinImage(), Queue.get_context(), Device); device_image_plain BuiltImage = ProgramManager::getInstance().build( std::move(devImgPlain), {std::move(Device)}, {}); - Program = getSyclObjImpl(BuiltImage)->get_ur_program(); + Program = getSyclObjImpl(BuiltImage).get_ur_program(); } assert(Program && "Program for this hostpipe is not compiled."); @@ -3547,7 +3547,7 @@ ur_result_t ExecCGCommand::enqueueImpQueue() { assert(MQueue && "Native command should have an associated queue"); adapter_impl &Adapter = MQueue->getAdapter(); Adapter.call( - detail::getSyclObjImpl(MQueue->get_device())->getHandleRef(), + detail::getSyclObjImpl(MQueue->get_device()).getHandleRef(), UR_DEVICE_INFO_ENQUEUE_NATIVE_COMMAND_SUPPORT_EXP, sizeof(NativeCommandSupport), &NativeCommandSupport, nullptr); assert(NativeCommandSupport && "ext_codeplay_enqueue_native_command is not " diff --git a/sycl/source/detail/sycl_mem_obj_t.cpp b/sycl/source/detail/sycl_mem_obj_t.cpp index bae53031930de..1f5c24f07f486 100644 --- a/sycl/source/detail/sycl_mem_obj_t.cpp +++ b/sycl/source/detail/sycl_mem_obj_t.cpp @@ -29,8 +29,8 @@ SYCLMemObjT::SYCLMemObjT(ur_native_handle_t MemObject, event AvailableEvent, std::unique_ptr Allocator) : MAllocator(std::move(Allocator)), MProps(), - MInteropEvent(detail::getSyclObjImpl(std::move(AvailableEvent))), - MInteropContext(detail::getSyclObjImpl(SyclContext)), + MInteropEvent(detail::getSyclObjImplPtr(std::move(AvailableEvent))), + MInteropContext(detail::getSyclObjImplPtr(SyclContext)), MOpenCLInterop(true), MHostPtrReadOnly(false), MNeedWriteBack(true), MUserPtr(nullptr), MShadowCopy(nullptr), MUploadDataFunctor(nullptr), MSharedPtrStorage(nullptr), MHostPtrProvided(true), @@ -76,8 +76,8 @@ SYCLMemObjT::SYCLMemObjT(ur_native_handle_t MemObject, ur_image_format_t Format, range<3> Range3WithOnes, unsigned Dimensions, size_t ElementSize) : MAllocator(std::move(Allocator)), MProps(), - MInteropEvent(detail::getSyclObjImpl(std::move(AvailableEvent))), - MInteropContext(detail::getSyclObjImpl(SyclContext)), + MInteropEvent(detail::getSyclObjImplPtr(std::move(AvailableEvent))), + MInteropContext(detail::getSyclObjImplPtr(SyclContext)), MOpenCLInterop(true), MHostPtrReadOnly(false), MNeedWriteBack(true), MUserPtr(nullptr), MShadowCopy(nullptr), MUploadDataFunctor(nullptr), MSharedPtrStorage(nullptr), MHostPtrProvided(true), diff --git a/sycl/source/detail/ur.cpp b/sycl/source/detail/ur.cpp index 42acb792d99d2..6b30f2b3c56df 100644 --- a/sycl/source/detail/ur.cpp +++ b/sycl/source/detail/ur.cpp @@ -49,7 +49,7 @@ namespace pi { void contextSetExtendedDeleter(const sycl::context &context, pi_context_extended_deleter func, void *user_data) { - context_impl &Ctx = *getSyclObjImpl(context); + context_impl &Ctx = getSyclObjImpl(context); adapter_impl &Adapter = Ctx.getAdapter(); Adapter.call( Ctx.getHandleRef(), reinterpret_cast(func), diff --git a/sycl/source/detail/usm/usm_impl.cpp b/sycl/source/detail/usm/usm_impl.cpp index 27e05a2c636b4..5c951a4f0eb8a 100644 --- a/sycl/source/detail/usm/usm_impl.cpp +++ b/sycl/source/detail/usm/usm_impl.cpp @@ -243,9 +243,8 @@ void *alignedAlloc(size_t Alignment, size_t Size, const context &Ctxt, TP.scopedNotify((uint16_t)xpti::trace_point_type_t::mem_alloc_begin, UserData); #endif - void *RetVal = - alignedAllocInternal(Alignment, Size, getSyclObjImpl(Ctxt).get(), - getSyclObjImpl(Dev).get(), Kind, PropList); + void *RetVal = alignedAllocInternal(Alignment, Size, &getSyclObjImpl(Ctxt), + &getSyclObjImpl(Dev), Kind, PropList); #ifdef XPTI_ENABLE_INSTRUMENTATION // Once the allocation is complete, update metadata with the memory pointer // before the mem_alloc_end event is sent @@ -285,7 +284,7 @@ void free(void *Ptr, const context &Ctxt, TP.scopedNotify((uint16_t)xpti::trace_point_type_t::mem_release_begin, UserData); #endif - freeInternal(Ptr, detail::getSyclObjImpl(Ctxt).get()); + freeInternal(Ptr, &detail::getSyclObjImpl(Ctxt)); } } // namespace usm @@ -578,7 +577,7 @@ alloc get_pointer_type(const void *Ptr, context_impl &Ctxt) { } // namespace detail #ifndef __INTEL_PREVIEW_BREAKING_CHANGES __SYCL_EXPORT alloc get_pointer_type(const void *Ptr, const context &Ctxt) { - return get_pointer_type(Ptr, *getSyclObjImpl(Ctxt)); + return get_pointer_type(Ptr, getSyclObjImpl(Ctxt)); } #endif @@ -596,7 +595,7 @@ device get_pointer_device(const void *Ptr, const context &Ctxt) { // Check if ptr is a host allocation if (get_pointer_type(Ptr, Ctxt) == alloc::host) { - detail::devices_range Devs = detail::getSyclObjImpl(Ctxt)->getDevices(); + detail::devices_range Devs = detail::getSyclObjImpl(Ctxt).getDevices(); if (Devs.size() == 0) throw exception(make_error_code(errc::invalid), "No devices in passed context!"); @@ -615,7 +614,7 @@ device get_pointer_device(const void *Ptr, const context &Ctxt) { // The device is not necessarily a member of the context, it could be a // member's descendant instead. Fetch the corresponding device from the cache. if (detail::device_impl *DevImpl = - detail::getSyclObjImpl(Ctxt)->getPlatformImpl().getDeviceImpl( + detail::getSyclObjImpl(Ctxt).getPlatformImpl().getDeviceImpl( DeviceId)) return detail::createSyclObjFromImpl(*DevImpl); throw exception(make_error_code(errc::runtime), diff --git a/sycl/source/device_selector.cpp b/sycl/source/device_selector.cpp index 40b3f40f95eb8..fdc5b1af85b0d 100644 --- a/sycl/source/device_selector.cpp +++ b/sycl/source/device_selector.cpp @@ -33,7 +33,7 @@ namespace detail { // itself, so only matching devices will be scored. static int getDevicePreference(const device &Device) { int Score = 0; - const device_impl &DeviceImpl = *getSyclObjImpl(Device).get(); + const device_impl &DeviceImpl = getSyclObjImpl(Device); // Strongly prefer devices with available images. auto &program_manager = sycl::detail::ProgramManager::getInstance(); if (program_manager.hasCompatibleImage(DeviceImpl)) diff --git a/sycl/source/enqueue_functions.cpp b/sycl/source/enqueue_functions.cpp index db221380f862a..1f0435ebf9006 100644 --- a/sycl/source/enqueue_functions.cpp +++ b/sycl/source/enqueue_functions.cpp @@ -16,24 +16,24 @@ namespace ext::oneapi::experimental { __SYCL_EXPORT void memcpy(queue Q, void *Dest, const void *Src, size_t NumBytes, const sycl::detail::code_location &CodeLoc) { detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); - detail::getSyclObjImpl(Q)->memcpy(Dest, Src, NumBytes, {}, - /*CallerNeedsEvent=*/false, - TlsCodeLocCapture.query()); + detail::getSyclObjImpl(Q).memcpy(Dest, Src, NumBytes, {}, + /*CallerNeedsEvent=*/false, + TlsCodeLocCapture.query()); } __SYCL_EXPORT void memset(queue Q, void *Ptr, int Value, size_t NumBytes, const sycl::detail::code_location &CodeLoc) { detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); - detail::getSyclObjImpl(Q)->memset(Ptr, Value, NumBytes, {}, - /*CallerNeedsEvent=*/false); + detail::getSyclObjImpl(Q).memset(Ptr, Value, NumBytes, {}, + /*CallerNeedsEvent=*/false); } __SYCL_EXPORT void mem_advise(queue Q, void *Ptr, size_t NumBytes, int Advice, const sycl::detail::code_location &CodeLoc) { detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); - detail::getSyclObjImpl(Q)->mem_advise(Ptr, NumBytes, - ur_usm_advice_flags_t(Advice), {}, - /*CallerNeedsEvent=*/false); + detail::getSyclObjImpl(Q).mem_advise(Ptr, NumBytes, + ur_usm_advice_flags_t(Advice), {}, + /*CallerNeedsEvent=*/false); } } // namespace ext::oneapi::experimental diff --git a/sycl/source/handler.cpp b/sycl/source/handler.cpp index 1cf9b00714471..516cf59a6eb52 100644 --- a/sycl/source/handler.cpp +++ b/sycl/source/handler.cpp @@ -60,11 +60,11 @@ markBufferAsInternal(const std::shared_ptr &BufImpl) { // TODO: Check if two ABI exports below are still necessary. #endif device_impl &getDeviceImplFromHandler(handler &CGH) { - return getSyclObjImpl(CGH)->get_device(); + return getSyclObjImpl(CGH).get_device(); } device getDeviceFromHandler(handler &CGH) { - return createSyclObjFromImpl(getSyclObjImpl(CGH)->get_device()); + return createSyclObjFromImpl(getSyclObjImpl(CGH).get_device()); } bool isDeviceGlobalUsedInKernel(const void *DeviceGlobalPtr) { @@ -104,7 +104,7 @@ getUrImageCopyFlags(sycl::usm::alloc SrcPtrType, sycl::usm::alloc DstPtrType) { void *getValueFromDynamicParameter( ext::oneapi::experimental::detail::dynamic_parameter_base &DynamicParamBase) { - return sycl::detail::getSyclObjImpl(DynamicParamBase)->getValue(); + return sycl::detail::getSyclObjImpl(DynamicParamBase).getValue(); } // Bindless image helpers @@ -403,7 +403,7 @@ handler::getOrInsertHandlerKernelBundlePtr(bool Insert) const { context Ctx = detail::createSyclObjFromImpl(impl->get_context()); impl->MKernelBundle = - detail::getSyclObjImpl(get_kernel_bundle( + detail::getSyclObjImplPtr(get_kernel_bundle( Ctx, {detail::createSyclObjFromImpl(impl->get_device())}, {})); return impl->MKernelBundle.get(); @@ -420,7 +420,7 @@ void handler::setHandlerKernelBundle(kernel Kernel) { // program. As such, apply getSyclObjImpl directly on the kernel, i.e. not // the other way around: getSyclObjImp(Kernel->get_kernel_bundle()). std::shared_ptr KernelBundleImpl = - detail::getSyclObjImpl(Kernel)->get_kernel_bundle(); + detail::getSyclObjImpl(Kernel).get_kernel_bundle(); setHandlerKernelBundle(std::move(KernelBundleImpl)); } @@ -518,7 +518,7 @@ detail::EventImplPtr handler::finalize() { *KernelBundleImpPtr); kernel_bundle ExecKernelBundle = build(KernelBundle); - KernelBundleImpPtr = detail::getSyclObjImpl(ExecKernelBundle).get(); + KernelBundleImpPtr = &detail::getSyclObjImpl(ExecKernelBundle); // Raw ptr KernelBundleImpPtr is valid, because we saved the // shared_ptr to the handler setHandlerKernelBundle(KernelBundleImpPtr->shared_from_this()); @@ -537,7 +537,7 @@ detail::EventImplPtr handler::finalize() { kernel_bundle ExecBundle = build( detail::createSyclObjFromImpl>( *KernelBundleImpPtr)); - KernelBundleImpPtr = detail::getSyclObjImpl(ExecBundle).get(); + KernelBundleImpPtr = &detail::getSyclObjImpl(ExecBundle); // Raw ptr KernelBundleImpPtr is valid, because we saved the shared_ptr // to the handler setHandlerKernelBundle(KernelBundleImpPtr->shared_from_this()); @@ -828,19 +828,19 @@ void handler::associateWithHandlerCommon(detail::AccessorImplPtr AccImpl, void handler::associateWithHandler(detail::AccessorBaseHost *AccBase, access::target AccTarget) { - associateWithHandlerCommon(detail::getSyclObjImpl(*AccBase), + associateWithHandlerCommon(detail::getSyclObjImplPtr(*AccBase), static_cast(AccTarget)); } void handler::associateWithHandler( detail::UnsampledImageAccessorBaseHost *AccBase, image_target AccTarget) { - associateWithHandlerCommon(detail::getSyclObjImpl(*AccBase), + associateWithHandlerCommon(detail::getSyclObjImplPtr(*AccBase), static_cast(AccTarget)); } void handler::associateWithHandler( detail::SampledImageAccessorBaseHost *AccBase, image_target AccTarget) { - associateWithHandlerCommon(detail::getSyclObjImpl(*AccBase), + associateWithHandlerCommon(detail::getSyclObjImplPtr(*AccBase), static_cast(AccTarget)); } @@ -893,7 +893,7 @@ void handler::ext_oneapi_barrier(const std::vector &WaitList) { setType(detail::CGType::BarrierWaitlist); impl->MEventsWaitWithBarrier.reserve(WaitList.size()); for (auto &Event : WaitList) { - auto EventImpl = detail::getSyclObjImpl(Event); + auto EventImpl = detail::getSyclObjImplPtr(Event); // We could not wait for host task events in backend. // Adding them as dependency to enable proper scheduling. if (EventImpl->isHost()) { @@ -1469,19 +1469,18 @@ void handler::ext_oneapi_signal_external_semaphore( void handler::use_kernel_bundle( const kernel_bundle &ExecBundle) { - if (&impl->get_context() != - detail::getSyclObjImpl(ExecBundle.get_context()).get()) + if (&impl->get_context() != &detail::getSyclObjImpl(ExecBundle.get_context())) throw sycl::exception( make_error_code(errc::invalid), "Context associated with the primary queue is different from the " "context associated with the kernel bundle"); setStateExplicitKernelBundle(); - setHandlerKernelBundle(detail::getSyclObjImpl(ExecBundle)); + setHandlerKernelBundle(detail::getSyclObjImplPtr(ExecBundle)); } void handler::depends_on(event Event) { - auto EventImpl = detail::getSyclObjImpl(Event); + auto EventImpl = detail::getSyclObjImplPtr(Event); depends_on(EventImpl); } @@ -1645,7 +1644,7 @@ void handler::ext_oneapi_graph( ext::oneapi::experimental::graph_state::executable> Graph) { setType(detail::CGType::ExecCommandBuffer); - impl->MExecGraph = detail::getSyclObjImpl(Graph); + impl->MExecGraph = detail::getSyclObjImplPtr(Graph); } std::shared_ptr @@ -1758,7 +1757,7 @@ void handler::setType(sycl::detail::CGType Type) { impl->MCGType = Type; } sycl::detail::CGType handler::getType() const { return impl->MCGType; } void handler::setDeviceKernelInfo(kernel &&Kernel) { - MKernel = detail::getSyclObjImpl(std::move(Kernel)); + MKernel = detail::getSyclObjImplPtr(std::move(Kernel)); MKernelName = MKernel->getName(); setDeviceKernelInfoPtr(&MKernel->getDeviceKernelInfo()); setType(detail::CGType::Kernel); diff --git a/sycl/source/ipc_memory.cpp b/sycl/source/ipc_memory.cpp index 4555c145e3955..b648cbeca41da 100644 --- a/sycl/source/ipc_memory.cpp +++ b/sycl/source/ipc_memory.cpp @@ -26,8 +26,8 @@ __SYCL_EXPORT void *openIPCMemHandle(const std::byte *HandleData, sycl::make_error_code(errc::feature_not_supported), "Device does not support aspect::ext_oneapi_ipc_memory."); - auto CtxImpl = sycl::detail::getSyclObjImpl(Ctx); - sycl::detail::adapter_impl &Adapter = CtxImpl->getAdapter(); + context_impl &CtxImpl = sycl::detail::getSyclObjImpl(Ctx); + sycl::detail::adapter_impl &Adapter = CtxImpl.getAdapter(); // TODO: UMF and UR currently requires the handle data to be non-const, so we // need const-cast the data pointer. Once this has been changed, the @@ -39,7 +39,7 @@ __SYCL_EXPORT void *openIPCMemHandle(const std::byte *HandleData, void *Ptr = nullptr; ur_result_t UrRes = Adapter.call_nocheck( - CtxImpl->getHandleRef(), getSyclObjImpl(Dev)->getHandleRef(), + CtxImpl.getHandleRef(), getSyclObjImpl(Dev).getHandleRef(), NonConstHandleData, HandleDataSize, &Ptr); if (UrRes == UR_RESULT_ERROR_INVALID_VALUE) throw sycl::exception(sycl::make_error_code(errc::invalid), @@ -54,8 +54,8 @@ __SYCL_EXPORT void *openIPCMemHandle(const std::byte *HandleData, namespace ext::oneapi::experimental::ipc_memory { __SYCL_EXPORT handle get(void *Ptr, const sycl::context &Ctx) { - auto CtxImpl = sycl::detail::getSyclObjImpl(Ctx); - sycl::detail::adapter_impl &Adapter = CtxImpl->getAdapter(); + detail::context_impl &CtxImpl = sycl::detail::getSyclObjImpl(Ctx); + sycl::detail::adapter_impl &Adapter = CtxImpl.getAdapter(); // If the API fails, check that the device actually supported it. We only do // this if UR fails to avoid the device-lookup overhead. @@ -71,7 +71,7 @@ __SYCL_EXPORT handle get(void *Ptr, const sycl::context &Ctx) { size_t HandleSize = 0; auto UrRes = Adapter.call_nocheck( - CtxImpl->getHandleRef(), Ptr, &HandlePtr, &HandleSize); + CtxImpl.getHandleRef(), Ptr, &HandlePtr, &HandleSize); if (UrRes != UR_RESULT_SUCCESS) { CheckDeviceSupport(); Adapter.checkUrResult(UrRes); @@ -80,15 +80,15 @@ __SYCL_EXPORT handle get(void *Ptr, const sycl::context &Ctx) { } __SYCL_EXPORT void put(handle &Handle, const sycl::context &Ctx) { - auto CtxImpl = sycl::detail::getSyclObjImpl(Ctx); - CtxImpl->getAdapter().call( - CtxImpl->getHandleRef(), Handle.MData); + detail::context_impl &CtxImpl = sycl::detail::getSyclObjImpl(Ctx); + CtxImpl.getAdapter().call( + CtxImpl.getHandleRef(), Handle.MData); } __SYCL_EXPORT void close(void *Ptr, const sycl::context &Ctx) { - auto CtxImpl = sycl::detail::getSyclObjImpl(Ctx); - CtxImpl->getAdapter().call( - CtxImpl->getHandleRef(), Ptr); + detail::context_impl &CtxImpl = sycl::detail::getSyclObjImpl(Ctx); + CtxImpl.getAdapter().call( + CtxImpl.getHandleRef(), Ptr); } } // namespace ext::oneapi::experimental::ipc_memory diff --git a/sycl/source/kernel.cpp b/sycl/source/kernel.cpp index a091204972230..89417c9dd1099 100644 --- a/sycl/source/kernel.cpp +++ b/sycl/source/kernel.cpp @@ -24,10 +24,10 @@ kernel::kernel(cl_kernel ClKernel, const context &SyclContext) { ur_native_handle_t nativeHandle = reinterpret_cast(ClKernel); Adapter.call( - nativeHandle, getSyclObjImpl(SyclContext)->getHandleRef(), nullptr, + nativeHandle, getSyclObjImpl(SyclContext).getHandleRef(), nullptr, nullptr, &hKernel); impl = std::make_shared( - std::move(hKernel), *getSyclObjImpl(SyclContext), nullptr, nullptr); + std::move(hKernel), getSyclObjImpl(SyclContext), nullptr, nullptr); // This is a special interop constructor for OpenCL, so the kernel must be // retained. if (get_backend() == backend::opencl) { diff --git a/sycl/source/kernel_bundle.cpp b/sycl/source/kernel_bundle.cpp index 14d19ddacaa6b..4a61f5fc3ed1d 100644 --- a/sycl/source/kernel_bundle.cpp +++ b/sycl/source/kernel_bundle.cpp @@ -286,7 +286,7 @@ bool has_kernel_bundle_impl(const context &Ctx, const std::vector &Devs, std::set CombinedKernelIDs; for (const DevImgPlainWithDeps &DeviceImageWithDeps : DeviceImagesWithDeps) { for (const device_image_plain &DeviceImage : DeviceImageWithDeps) { - device_image_impl &DeviceImageImpl = *getSyclObjImpl(DeviceImage); + device_image_impl &DeviceImageImpl = getSyclObjImpl(DeviceImage); CombinedKernelIDs.insert(DeviceImageImpl.get_kernel_ids().begin(), DeviceImageImpl.get_kernel_ids().end()); @@ -379,7 +379,7 @@ std::vector get_kernel_ids() { } bool is_compatible(const std::vector &KernelIDs, const device &Dev) { - return detail::is_compatible(KernelIDs, *getSyclObjImpl(Dev)); + return detail::is_compatible(KernelIDs, getSyclObjImpl(Dev)); } ///////////////////////// @@ -448,7 +448,7 @@ bool is_source_kernel_bundle_supported( std::transform(Devices.begin(), Devices.end(), std::back_inserter(DeviceImplVec), [](const sycl::device &dev) { - return &*sycl::detail::getSyclObjImpl(dev); + return &sycl::detail::getSyclObjImpl(dev); }); return is_source_kernel_bundle_supported(Language, DeviceImplVec); @@ -520,7 +520,7 @@ obj_kb compile_from_source( LogPtr = &Log; std::vector UniqueDevices = sycl::detail::removeDuplicateDevices(Devices); - kernel_bundle_impl &sourceImpl = *getSyclObjImpl(SourceKB); + kernel_bundle_impl &sourceImpl = getSyclObjImpl(SourceKB); std::shared_ptr KBImpl = sourceImpl.compile_from_source( UniqueDevices, BuildOptions, LogPtr, RegisteredKernelNames); auto result = sycl::detail::createSyclObjFromImpl(KBImpl); @@ -544,7 +544,7 @@ exe_kb build_from_source( LogPtr = &Log; std::vector UniqueDevices = sycl::detail::removeDuplicateDevices(Devices); - kernel_bundle_impl &sourceImpl = *getSyclObjImpl(SourceKB); + kernel_bundle_impl &sourceImpl = getSyclObjImpl(SourceKB); std::shared_ptr KBImpl = sourceImpl.build_from_source( UniqueDevices, BuildOptions, LogPtr, RegisteredKernelNames); auto result = sycl::detail::createSyclObjFromImpl(std::move(KBImpl)); diff --git a/sycl/source/physical_mem.cpp b/sycl/source/physical_mem.cpp index 9284927596592..a0303c28dbab0 100644 --- a/sycl/source/physical_mem.cpp +++ b/sycl/source/physical_mem.cpp @@ -21,7 +21,7 @@ physical_mem::physical_mem(const device &SyclDevice, const context &SyclContext, "Device does not support aspect::ext_oneapi_virtual_mem."); impl = std::make_shared( - *getSyclObjImpl(SyclDevice), SyclContext, NumBytes); + getSyclObjImpl(SyclDevice), SyclContext, NumBytes); } void *physical_mem::map(uintptr_t Ptr, size_t NumBytes, diff --git a/sycl/source/queue.cpp b/sycl/source/queue.cpp index 78ad6cc4d9932..3a5ddda71a7fc 100644 --- a/sycl/source/queue.cpp +++ b/sycl/source/queue.cpp @@ -30,35 +30,35 @@ queue::queue(const context &SyclContext, const device_selector &DeviceSelector, const device &SyclDevice = *std::max_element(Devs.begin(), Devs.end(), Comp); - impl = detail::queue_impl::create(*detail::getSyclObjImpl(SyclDevice), - *detail::getSyclObjImpl(SyclContext), + impl = detail::queue_impl::create(detail::getSyclObjImpl(SyclDevice), + detail::getSyclObjImpl(SyclContext), AsyncHandler, PropList); } queue::queue(const context &SyclContext, const device &SyclDevice, const async_handler &AsyncHandler, const property_list &PropList) { - impl = detail::queue_impl::create(*detail::getSyclObjImpl(SyclDevice), - *detail::getSyclObjImpl(SyclContext), + impl = detail::queue_impl::create(detail::getSyclObjImpl(SyclDevice), + detail::getSyclObjImpl(SyclContext), AsyncHandler, PropList); } queue::queue(const device &SyclDevice, const async_handler &AsyncHandler, const property_list &PropList) { - impl = detail::queue_impl::create(*detail::getSyclObjImpl(SyclDevice), + impl = detail::queue_impl::create(detail::getSyclObjImpl(SyclDevice), AsyncHandler, PropList); } queue::queue(const context &SyclContext, const device_selector &deviceSelector, const property_list &PropList) : queue(SyclContext, deviceSelector, - detail::getSyclObjImpl(SyclContext)->get_async_handler(), - PropList) {} + detail::getSyclObjImpl(SyclContext).get_async_handler(), PropList) { +} queue::queue(const context &SyclContext, const device &SyclDevice, const property_list &PropList) : queue(SyclContext, SyclDevice, - detail::getSyclObjImpl(SyclContext)->get_async_handler(), - PropList) {} + detail::getSyclObjImpl(SyclContext).get_async_handler(), PropList) { +} queue::queue(cl_command_queue clQueue, const context &SyclContext, const async_handler &AsyncHandler) { @@ -66,7 +66,7 @@ queue::queue(cl_command_queue clQueue, const context &SyclContext, impl = detail::queue_impl::create( // TODO(pi2ur): Don't cast straight from cl_command_queue reinterpret_cast(clQueue), - *detail::getSyclObjImpl(SyclContext), AsyncHandler, PropList); + detail::getSyclObjImpl(SyclContext), AsyncHandler, PropList); } cl_command_queue queue::get() const { return impl->get(); } @@ -212,7 +212,7 @@ event queue::ext_oneapi_submit_barrier(const std::vector &WaitList, // them. bool AllEventsEmptyOrNop = std::all_of( begin(WaitList), end(WaitList), [&](const event &Event) -> bool { - detail::event_impl &EventImpl = *detail::getSyclObjImpl(Event); + detail::event_impl &EventImpl = detail::getSyclObjImpl(Event); return (EventImpl.isDefaultConstructed() || EventImpl.isNOP()) && !EventImpl.hasCommandGraph(); }); @@ -313,7 +313,7 @@ event submit_kernel_direct_with_event_impl( sycl::span DepEvents, const detail::KernelPropertyHolderStructTy &Props, const detail::code_location &CodeLoc, bool IsTopCodeLoc) { - return getSyclObjImpl(Queue)->submit_kernel_direct_with_event( + return getSyclObjImpl(Queue).submit_kernel_direct_with_event( RangeView, HostKernel, DeviceKernelInfo, DepEvents, Props, CodeLoc, IsTopCodeLoc); } @@ -325,7 +325,7 @@ void submit_kernel_direct_without_event_impl( sycl::span DepEvents, const detail::KernelPropertyHolderStructTy &Props, const detail::code_location &CodeLoc, bool IsTopCodeLoc) { - getSyclObjImpl(Queue)->submit_kernel_direct_without_event( + getSyclObjImpl(Queue).submit_kernel_direct_without_event( RangeView, HostKernel, DeviceKernelInfo, DepEvents, Props, CodeLoc, IsTopCodeLoc); } @@ -336,8 +336,8 @@ event submit_graph_direct_with_event_impl( ext::oneapi::experimental::graph_state::executable> &G, sycl::span DepEvents, const detail::code_location &CodeLoc) { detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); - return getSyclObjImpl(Queue)->submit_graph_direct_with_event( - getSyclObjImpl(G), DepEvents, TlsCodeLocCapture.query(), + return getSyclObjImpl(Queue).submit_graph_direct_with_event( + getSyclObjImplPtr(G), DepEvents, TlsCodeLocCapture.query(), TlsCodeLocCapture.isToplevel()); } @@ -347,8 +347,8 @@ void submit_graph_direct_without_event_impl( ext::oneapi::experimental::graph_state::executable> &G, sycl::span DepEvents, const detail::code_location &CodeLoc) { detail::tls_code_loc_t TlsCodeLocCapture(CodeLoc); - getSyclObjImpl(Queue)->submit_graph_direct_without_event( - getSyclObjImpl(G), DepEvents, TlsCodeLocCapture.query(), + getSyclObjImpl(Queue).submit_graph_direct_without_event( + getSyclObjImplPtr(G), DepEvents, TlsCodeLocCapture.query(), TlsCodeLocCapture.isToplevel()); } @@ -359,5 +359,5 @@ size_t std::hash::operator()(const sycl::queue &Q) const { // Compared to using the impl pointer, the unique ID helps avoid hash // collisions with previously destroyed queues. return std::hash()( - sycl::detail::getSyclObjImpl(Q)->getQueueID()); + sycl::detail::getSyclObjImpl(Q).getQueueID()); } diff --git a/sycl/source/queue_v3.cpp b/sycl/source/queue_v3.cpp index 2196e94fffa45..0c7162d457d77 100644 --- a/sycl/source/queue_v3.cpp +++ b/sycl/source/queue_v3.cpp @@ -39,34 +39,34 @@ queue::queue(const context &SyclContext, const device_selector &DeviceSelector, const device &SyclDevice = *std::max_element(Devs.begin(), Devs.end(), Comp); impl = std::make_shared( - detail::getSyclObjImpl(SyclDevice), detail::getSyclObjImpl(SyclContext), - AsyncHandler, PropList, true); + detail::getSyclObjImplPtr(SyclDevice), + detail::getSyclObjImplPtr(SyclContext), AsyncHandler, PropList, true); } queue::queue(const context &SyclContext, const device &SyclDevice, const async_handler &AsyncHandler, const property_list &PropList) { impl = std::make_shared( - detail::getSyclObjImpl(SyclDevice), detail::getSyclObjImpl(SyclContext), - AsyncHandler, PropList, true); + detail::getSyclObjImplPtr(SyclDevice), + detail::getSyclObjImplPtr(SyclContext), AsyncHandler, PropList, true); } queue::queue(const device &SyclDevice, const async_handler &AsyncHandler, const property_list &PropList) { impl = std::make_shared( - detail::getSyclObjImpl(SyclDevice), AsyncHandler, PropList, true); + detail::getSyclObjImplPtr(SyclDevice), AsyncHandler, PropList, true); } queue::queue(const context &SyclContext, const device_selector &deviceSelector, const property_list &PropList) : queue(SyclContext, deviceSelector, - detail::getSyclObjImpl(SyclContext)->get_async_handler(), - PropList) {} + detail::getSyclObjImpl(SyclContext).get_async_handler(), PropList) { +} queue::queue(const context &SyclContext, const device &SyclDevice, const property_list &PropList) : queue(SyclContext, SyclDevice, - detail::getSyclObjImpl(SyclContext)->get_async_handler(), - PropList) {} + detail::getSyclObjImpl(SyclContext).get_async_handler(), PropList) { +} } // namespace _V1 } // namespace sycl diff --git a/sycl/source/sampler.cpp b/sycl/source/sampler.cpp index a3029931469bd..62ef4fcfed688 100644 --- a/sycl/source/sampler.cpp +++ b/sycl/source/sampler.cpp @@ -22,7 +22,7 @@ sampler::sampler(coordinate_normalization_mode normalizationMode, sampler::sampler(cl_sampler clSampler, const context &syclContext) : impl(std::make_shared( - clSampler, *detail::getSyclObjImpl(syclContext))) {} + clSampler, detail::getSyclObjImpl(syclContext))) {} addressing_mode sampler::get_addressing_mode() const { return impl->get_addressing_mode(); diff --git a/sycl/source/stream.cpp b/sycl/source/stream.cpp index 499090d980f89..0a81779318125 100644 --- a/sycl/source/stream.cpp +++ b/sycl/source/stream.cpp @@ -52,7 +52,7 @@ stream::stream(size_t BufferSize, size_t MaxStatementSize, handler &CGH, // Set flag identifying that created accessor has perWI size. Accessor // will be resized in SYCL RT when number of work items will be // available. - detail::getSyclObjImpl(GlobalFlushBuf)->PerWI = true; + detail::getSyclObjImpl(GlobalFlushBuf).PerWI = true; } size_t stream::size() const noexcept { return impl->size(); } diff --git a/sycl/source/virtual_mem.cpp b/sycl/source/virtual_mem.cpp index 9150e8a50dae2..22d53d65a4dbd 100644 --- a/sycl/source/virtual_mem.cpp +++ b/sycl/source/virtual_mem.cpp @@ -67,7 +67,7 @@ __SYCL_EXPORT size_t get_mem_granularity(const device &SyclDevice, const context &SyclContext, granularity_mode Mode) { return get_mem_granularity_for_allocation_size( - *detail::getSyclObjImpl(SyclDevice), *detail::getSyclObjImpl(SyclContext), + detail::getSyclObjImpl(SyclDevice), detail::getSyclObjImpl(SyclContext), Mode, 1); } diff --git a/sycl/unittests/Extensions/BindlessImages/Semaphores.cpp b/sycl/unittests/Extensions/BindlessImages/Semaphores.cpp index 16f6aa2917920..e4934f3ae258a 100644 --- a/sycl/unittests/Extensions/BindlessImages/Semaphores.cpp +++ b/sycl/unittests/Extensions/BindlessImages/Semaphores.cpp @@ -96,7 +96,7 @@ TEST(BindlessImagesExtensionTests, ExternalSemaphoreWait) { urBindlessImagesWaitExternalSemaphoreExp_expectHasWaitValue = false; sycl::event E = Q.ext_oneapi_wait_external_semaphore(DummySemaphore); EXPECT_EQ(urBindlessImagesWaitExternalSemaphoreExp_counter, 1); - EXPECT_EQ(sycl::detail::getSyclObjImpl(E)->getHandle(), + EXPECT_EQ(sycl::detail::getSyclObjImpl(E).getHandle(), urBindlessImagesWaitExternalSemaphoreExp_lastEvent); DummySemaphore.handle_type = @@ -105,7 +105,7 @@ TEST(BindlessImagesExtensionTests, ExternalSemaphoreWait) { urBindlessImagesWaitExternalSemaphoreExp_expectHasWaitValue = true; E = Q.ext_oneapi_wait_external_semaphore(DummySemaphore, WaitValue); EXPECT_EQ(urBindlessImagesWaitExternalSemaphoreExp_counter, 2); - EXPECT_EQ(sycl::detail::getSyclObjImpl(E)->getHandle(), + EXPECT_EQ(sycl::detail::getSyclObjImpl(E).getHandle(), urBindlessImagesWaitExternalSemaphoreExp_lastEvent); } @@ -128,9 +128,9 @@ TEST(BindlessImagesExtensionTests, ExternalSemaphoreSignal) { // We create dummy events with dummy UR handles to make the runtime think we // pass actual device events. auto DummyEventImpl1 = sycl::detail::event_impl::create_device_event( - *sycl::detail::getSyclObjImpl(Q)); + sycl::detail::getSyclObjImpl(Q)); auto DummyEventImpl2 = sycl::detail::event_impl::create_device_event( - *sycl::detail::getSyclObjImpl(Q)); + sycl::detail::getSyclObjImpl(Q)); DummyEventImpl1->setHandle(reinterpret_cast(&DummyInt1)); DummyEventImpl2->setHandle(reinterpret_cast(&DummyInt2)); sycl::event DummyEvent1 = @@ -146,21 +146,21 @@ TEST(BindlessImagesExtensionTests, ExternalSemaphoreSignal) { urBindlessImagesSignalExternalSemaphoreExp_expectedNumWaitEvents = 0; sycl::event E = Q.ext_oneapi_signal_external_semaphore(DummySemaphore); EXPECT_EQ(urBindlessImagesSignalExternalSemaphoreExp_counter, 1); - EXPECT_EQ(sycl::detail::getSyclObjImpl(E)->getHandle(), + EXPECT_EQ(sycl::detail::getSyclObjImpl(E).getHandle(), urBindlessImagesSignalExternalSemaphoreExp_lastEvent); urBindlessImagesSignalExternalSemaphoreExp_expectHasSignalValue = false; urBindlessImagesSignalExternalSemaphoreExp_expectedNumWaitEvents = 1; E = Q.ext_oneapi_signal_external_semaphore(DummySemaphore, DummyEvent1); EXPECT_EQ(urBindlessImagesSignalExternalSemaphoreExp_counter, 2); - EXPECT_EQ(sycl::detail::getSyclObjImpl(E)->getHandle(), + EXPECT_EQ(sycl::detail::getSyclObjImpl(E).getHandle(), urBindlessImagesSignalExternalSemaphoreExp_lastEvent); urBindlessImagesSignalExternalSemaphoreExp_expectHasSignalValue = false; urBindlessImagesSignalExternalSemaphoreExp_expectedNumWaitEvents = 2; E = Q.ext_oneapi_signal_external_semaphore(DummySemaphore, DummyEventList); EXPECT_EQ(urBindlessImagesSignalExternalSemaphoreExp_counter, 3); - EXPECT_EQ(sycl::detail::getSyclObjImpl(E)->getHandle(), + EXPECT_EQ(sycl::detail::getSyclObjImpl(E).getHandle(), urBindlessImagesSignalExternalSemaphoreExp_lastEvent); DummySemaphore.handle_type = @@ -170,7 +170,7 @@ TEST(BindlessImagesExtensionTests, ExternalSemaphoreSignal) { urBindlessImagesSignalExternalSemaphoreExp_expectedNumWaitEvents = 0; E = Q.ext_oneapi_signal_external_semaphore(DummySemaphore, SignalValue); EXPECT_EQ(urBindlessImagesSignalExternalSemaphoreExp_counter, 4); - EXPECT_EQ(sycl::detail::getSyclObjImpl(E)->getHandle(), + EXPECT_EQ(sycl::detail::getSyclObjImpl(E).getHandle(), urBindlessImagesSignalExternalSemaphoreExp_lastEvent); urBindlessImagesSignalExternalSemaphoreExp_expectHasSignalValue = true; @@ -178,7 +178,7 @@ TEST(BindlessImagesExtensionTests, ExternalSemaphoreSignal) { E = Q.ext_oneapi_signal_external_semaphore(DummySemaphore, SignalValue, DummyEvent1); EXPECT_EQ(urBindlessImagesSignalExternalSemaphoreExp_counter, 5); - EXPECT_EQ(sycl::detail::getSyclObjImpl(E)->getHandle(), + EXPECT_EQ(sycl::detail::getSyclObjImpl(E).getHandle(), urBindlessImagesSignalExternalSemaphoreExp_lastEvent); urBindlessImagesSignalExternalSemaphoreExp_expectHasSignalValue = true; @@ -186,6 +186,6 @@ TEST(BindlessImagesExtensionTests, ExternalSemaphoreSignal) { E = Q.ext_oneapi_signal_external_semaphore(DummySemaphore, SignalValue, DummyEventList); EXPECT_EQ(urBindlessImagesSignalExternalSemaphoreExp_counter, 6); - EXPECT_EQ(sycl::detail::getSyclObjImpl(E)->getHandle(), + EXPECT_EQ(sycl::detail::getSyclObjImpl(E).getHandle(), urBindlessImagesSignalExternalSemaphoreExp_lastEvent); } diff --git a/sycl/unittests/Extensions/CommandGraph/Barrier.cpp b/sycl/unittests/Extensions/CommandGraph/Barrier.cpp index c43d3eb74ffa0..33973d4d87d5b 100644 --- a/sycl/unittests/Extensions/CommandGraph/Barrier.cpp +++ b/sycl/unittests/Extensions/CommandGraph/Barrier.cpp @@ -29,7 +29,7 @@ TEST_F(CommandGraphTest, EnqueueBarrier) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); Graph.end_recording(Queue); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Check the graph structure // (1) (2) (3) @@ -44,7 +44,7 @@ TEST_F(CommandGraphTest, EnqueueBarrier) { experimental::detail::node_impl &BarrierNode = *Root.MSuccessors.front(); ASSERT_EQ(BarrierNode.MCGType, sycl::detail::CGType::Barrier); ASSERT_EQ(GraphImpl.getEventForNode(BarrierNode).get(), - &*getSyclObjImpl(Barrier)); + &getSyclObjImpl(Barrier)); ASSERT_EQ(BarrierNode.MPredecessors.size(), 3lu); ASSERT_EQ(BarrierNode.MSuccessors.size(), 2lu); } @@ -69,7 +69,7 @@ TEST_F(CommandGraphTest, EnqueueBarrierMultipleQueues) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); Graph.end_recording(); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Check the graph structure // (1) (2) (3) @@ -79,13 +79,13 @@ TEST_F(CommandGraphTest, EnqueueBarrierMultipleQueues) { // (4) (5) ASSERT_EQ(GraphImpl.MRoots.size(), 3lu); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { - if (GraphImpl.getEventForNode(Root).get() == &*getSyclObjImpl(Node2Graph)) { + if (GraphImpl.getEventForNode(Root).get() == &getSyclObjImpl(Node2Graph)) { ASSERT_EQ(Root.MSuccessors.size(), 1lu); experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Barrier)); + &getSyclObjImpl(Barrier)); ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 2lu); @@ -93,11 +93,11 @@ TEST_F(CommandGraphTest, EnqueueBarrierMultipleQueues) { for (experimental::detail::node_impl &SuccSuccNode : SuccNode.successors()) { if (GraphImpl.getEventForNode(SuccSuccNode).get() == - &*getSyclObjImpl(Node4Graph)) { + &getSyclObjImpl(Node4Graph)) { ASSERT_EQ(SuccSuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccSuccNode.MSuccessors.size(), 0lu); } else if (GraphImpl.getEventForNode(SuccSuccNode).get() == - &*getSyclObjImpl(Node5Graph)) { + &getSyclObjImpl(Node5Graph)) { ASSERT_EQ(SuccSuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccSuccNode.MSuccessors.size(), 0lu); } else { @@ -132,7 +132,7 @@ TEST_F(CommandGraphTest, EnqueueBarrierWaitList) { Graph.end_recording(Queue); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Check the graph structure // (1) (2) (3) @@ -147,7 +147,7 @@ TEST_F(CommandGraphTest, EnqueueBarrierWaitList) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); if (SuccNode.MCGType == sycl::detail::CGType::Barrier) { ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Barrier)); + &getSyclObjImpl(Barrier)); ASSERT_EQ(SuccNode.MPredecessors.size(), 2lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 2lu); } else { @@ -185,7 +185,7 @@ TEST_F(CommandGraphTest, EnqueueBarrierWaitListMultipleQueues) { Graph.end_recording(); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Check the graph structure // (1) (2) (3) @@ -203,7 +203,7 @@ TEST_F(CommandGraphTest, EnqueueBarrierWaitListMultipleQueues) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); if (SuccNode.MCGType == sycl::detail::CGType::Barrier) { ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Barrier)); + &getSyclObjImpl(Barrier)); ASSERT_EQ(SuccNode.MPredecessors.size(), 2lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 3lu); } else { @@ -245,7 +245,7 @@ TEST_F(CommandGraphTest, EnqueueMultipleBarrier) { Graph.end_recording(Queue); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Check the graph structure // (1) (2) (3) @@ -265,14 +265,14 @@ TEST_F(CommandGraphTest, EnqueueMultipleBarrier) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); if (SuccNode.MCGType == sycl::detail::CGType::Barrier) { ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Barrier1)); + &getSyclObjImpl(Barrier1)); ASSERT_EQ(SuccNode.MPredecessors.size(), 2lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 3lu); for (auto Succ1 : SuccNode.MSuccessors) { auto SuccBarrier1 = Succ1; if (SuccBarrier1->MCGType == sycl::detail::CGType::Barrier) { ASSERT_EQ(GraphImpl.getEventForNode(*SuccBarrier1).get(), - &*getSyclObjImpl(Barrier2)); + &getSyclObjImpl(Barrier2)); ASSERT_EQ(SuccBarrier1->MPredecessors.size(), 3lu); ASSERT_EQ(SuccBarrier1->MSuccessors.size(), 3lu); for (auto Succ2 : SuccBarrier1->MSuccessors) { @@ -284,7 +284,7 @@ TEST_F(CommandGraphTest, EnqueueMultipleBarrier) { } else { // Node 4 or Node 5 if (GraphImpl.getEventForNode(*SuccBarrier1).get() == - &*getSyclObjImpl(Node4Graph)) { + &getSyclObjImpl(Node4Graph)) { // Node 4 ASSERT_EQ(SuccBarrier1->MPredecessors.size(), 1lu); ASSERT_EQ(SuccBarrier1->MSuccessors.size(), 1lu); @@ -324,7 +324,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithPreviousCommand) { // Check the graph structure // (B) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 1lu); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { @@ -358,11 +358,11 @@ TEST_F(CommandGraphTest, InOrderQueuesWithBarrier) { // (1) (2) // | // (B) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 2lu); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { - if (GraphImpl.getEventForNode(Root).get() == &*getSyclObjImpl(Node1)) { + if (GraphImpl.getEventForNode(Root).get() == &getSyclObjImpl(Node1)) { ASSERT_EQ(Root.MSuccessors.size(), 1lu); experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); @@ -371,7 +371,7 @@ TEST_F(CommandGraphTest, InOrderQueuesWithBarrier) { ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); } else if (GraphImpl.getEventForNode(Root).get() == - &*getSyclObjImpl(Node2)) { + &getSyclObjImpl(Node2)) { ASSERT_EQ(Root.MSuccessors.size(), 0lu); } else { ASSERT_TRUE(false && "Unexpected root node"); @@ -403,7 +403,7 @@ TEST_F(CommandGraphTest, InOrderQueuesWithBarrierWaitList) { // (1) (2) // | / // (B) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 2lu); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { @@ -411,7 +411,7 @@ TEST_F(CommandGraphTest, InOrderQueuesWithBarrierWaitList) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(BarrierNode)); + &getSyclObjImpl(BarrierNode)); ASSERT_EQ(SuccNode.MPredecessors.size(), 2lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); @@ -445,28 +445,28 @@ TEST_F(CommandGraphTest, InOrderQueuesWithEmptyBarrierWaitList) { // (1) (2) // | | // (B) (3) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 2lu); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { - if (GraphImpl.getEventForNode(Root).get() == &*getSyclObjImpl(Node1)) { + if (GraphImpl.getEventForNode(Root).get() == &getSyclObjImpl(Node1)) { ASSERT_EQ(Root.MSuccessors.size(), 1lu); experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(BarrierNode)); + &getSyclObjImpl(BarrierNode)); ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); } else if (GraphImpl.getEventForNode(Root).get() == - &*getSyclObjImpl(Node2)) { + &getSyclObjImpl(Node2)) { ASSERT_EQ(Root.MSuccessors.size(), 1lu); experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Node3)); + &getSyclObjImpl(Node3)); ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); @@ -507,14 +507,14 @@ TEST_F(CommandGraphTest, BarrierMixedQueueTypes) { // (B) | // | // (3) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 2lu); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { - if (GraphImpl.getEventForNode(Root).get() == &*getSyclObjImpl(Node1)) { + if (GraphImpl.getEventForNode(Root).get() == &getSyclObjImpl(Node1)) { ASSERT_EQ(Root.MSuccessors.size(), 1lu); } else if (GraphImpl.getEventForNode(Root).get() == - &*getSyclObjImpl(Node2)) { + &getSyclObjImpl(Node2)) { ASSERT_EQ(Root.MSuccessors.size(), 2lu); } else { ASSERT_TRUE(false && "Unexpected root node"); @@ -522,11 +522,11 @@ TEST_F(CommandGraphTest, BarrierMixedQueueTypes) { for (experimental::detail::node_impl &SuccNode : Root.successors()) { if (GraphImpl.getEventForNode(SuccNode).get() == - &*getSyclObjImpl(BarrierNode)) { + &getSyclObjImpl(BarrierNode)) { ASSERT_EQ(SuccNode.MPredecessors.size(), 2lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); } else if (GraphImpl.getEventForNode(SuccNode).get() == - &*getSyclObjImpl(Node3)) { + &getSyclObjImpl(Node3)) { ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); } else { @@ -558,18 +558,17 @@ TEST_F(CommandGraphTest, BarrierBetweenExplicitNodes) { // (B) (1) // | // (2) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 2lu); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { - if (GraphImpl.getEventForNode(Root).get() == - &*getSyclObjImpl(BarrierNode)) { + if (GraphImpl.getEventForNode(Root).get() == &getSyclObjImpl(BarrierNode)) { ASSERT_EQ(Root.MSuccessors.size(), 0lu); - } else if (&Root == &*getSyclObjImpl(Node1)) { + } else if (&Root == &getSyclObjImpl(Node1)) { ASSERT_EQ(Root.MSuccessors.size(), 1lu); experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); - ASSERT_EQ(&SuccNode, &*getSyclObjImpl(Node2)); + ASSERT_EQ(&SuccNode, &getSyclObjImpl(Node2)); } else { ASSERT_TRUE(false); } @@ -613,18 +612,18 @@ TEST_F(CommandGraphTest, BarrierMultipleOOOQueue) { // (B) (5) // | // (6) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 4u); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { auto RootNodeEvent = GraphImpl.getEventForNode(Root); - if ((RootNodeEvent.get() == &*getSyclObjImpl(Node1)) || - (RootNodeEvent.get() == &*getSyclObjImpl(Node2))) { + if ((RootNodeEvent.get() == &getSyclObjImpl(Node1)) || + (RootNodeEvent.get() == &getSyclObjImpl(Node2))) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(BarrierNode)); + &getSyclObjImpl(BarrierNode)); ASSERT_EQ(SuccNode.MPredecessors.size(), 2lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 1lu); @@ -636,13 +635,13 @@ TEST_F(CommandGraphTest, BarrierMultipleOOOQueue) { ASSERT_EQ(SuccSuccNode.MSuccessors.size(), 0lu); ASSERT_EQ(GraphImpl.getEventForNode(SuccSuccNode).get(), - &*getSyclObjImpl(Node6)); - } else if ((RootNodeEvent.get() == &*getSyclObjImpl(Node3)) || - (RootNodeEvent.get() == &*getSyclObjImpl(Node4))) { + &getSyclObjImpl(Node6)); + } else if ((RootNodeEvent.get() == &getSyclObjImpl(Node3)) || + (RootNodeEvent.get() == &getSyclObjImpl(Node4))) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Node5)); + &getSyclObjImpl(Node5)); ASSERT_EQ(SuccNode.MPredecessors.size(), 2lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); @@ -678,22 +677,22 @@ TEST_F(CommandGraphTest, BarrierMultipleInOrderQueue) { // (1) (2) // | | // (B) (3) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 2u); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { auto RootNodeEvent = GraphImpl.getEventForNode(Root); - if (RootNodeEvent.get() == &*getSyclObjImpl(Node1)) { + if (RootNodeEvent.get() == &getSyclObjImpl(Node1)) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(BarrierNode)); + &getSyclObjImpl(BarrierNode)); ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); - } else if (RootNodeEvent.get() == &*getSyclObjImpl(Node2)) { + } else if (RootNodeEvent.get() == &getSyclObjImpl(Node2)) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Node3)); + &getSyclObjImpl(Node3)); ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); @@ -728,22 +727,22 @@ TEST_F(CommandGraphTest, BarrierMultipleMixedOrderQueues) { // (1) (2) // | | // (B) (3) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 2u); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { auto RootNodeEvent = GraphImpl.getEventForNode(Root); - if (RootNodeEvent.get() == &*getSyclObjImpl(Node1)) { + if (RootNodeEvent.get() == &getSyclObjImpl(Node1)) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(BarrierNode)); + &getSyclObjImpl(BarrierNode)); ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); - } else if (RootNodeEvent.get() == &*getSyclObjImpl(Node2)) { + } else if (RootNodeEvent.get() == &getSyclObjImpl(Node2)) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Node3)); + &getSyclObjImpl(Node3)); ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); @@ -772,22 +771,22 @@ TEST_F(CommandGraphTest, BarrierMultipleQueuesMultipleBarriers) { // (1) (2) // | | // (4) (3) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 2u); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { auto RootNodeEvent = GraphImpl.getEventForNode(Root); - if (RootNodeEvent.get() == &*getSyclObjImpl(Barrier1)) { + if (RootNodeEvent.get() == &getSyclObjImpl(Barrier1)) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Barrier4)); + &getSyclObjImpl(Barrier4)); ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); - } else if (RootNodeEvent.get() == &*getSyclObjImpl(Barrier2)) { + } else if (RootNodeEvent.get() == &getSyclObjImpl(Barrier2)) { experimental::detail::node_impl &SuccNode = *Root.MSuccessors.front(); ASSERT_EQ(GraphImpl.getEventForNode(SuccNode).get(), - &*getSyclObjImpl(Barrier3)); + &getSyclObjImpl(Barrier3)); ASSERT_EQ(SuccNode.MPredecessors.size(), 1lu); ASSERT_EQ(SuccNode.MSuccessors.size(), 0lu); @@ -849,17 +848,17 @@ TEST_F(CommandGraphTest, BarrierWithInOrderCommands) { // (5) (6) // \ / // (B5) - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_EQ(GraphImpl.MRoots.size(), 2lu); for (experimental::detail::node_impl &Root : GraphImpl.roots()) { bool EvenPath; ASSERT_EQ(Root.MSuccessors.size(), 1lu); - if (GraphImpl.getEventForNode(Root).get() == &*getSyclObjImpl(Node2)) { + if (GraphImpl.getEventForNode(Root).get() == &getSyclObjImpl(Node2)) { EvenPath = true; } else if (GraphImpl.getEventForNode(Root).get() == - &*getSyclObjImpl(Node1)) { + &getSyclObjImpl(Node1)) { EvenPath = false; } else { ASSERT_TRUE(false); @@ -869,46 +868,46 @@ TEST_F(CommandGraphTest, BarrierWithInOrderCommands) { ASSERT_EQ(Succ1Node.MSuccessors.size(), 1lu); if (EvenPath) { ASSERT_EQ(GraphImpl.getEventForNode(Succ1Node).get(), - &*getSyclObjImpl(Barrier2)); + &getSyclObjImpl(Barrier2)); } else { ASSERT_EQ(GraphImpl.getEventForNode(Succ1Node).get(), - &*getSyclObjImpl(Barrier1)); + &getSyclObjImpl(Barrier1)); } experimental::detail::node_impl &Succ2Node = *Succ1Node.MSuccessors.front(); ASSERT_EQ(Succ2Node.MSuccessors.size(), 1lu); if (EvenPath) { ASSERT_EQ(GraphImpl.getEventForNode(Succ2Node).get(), - &*getSyclObjImpl(Node4)); + &getSyclObjImpl(Node4)); } else { ASSERT_EQ(GraphImpl.getEventForNode(Succ2Node).get(), - &*getSyclObjImpl(Node3)); + &getSyclObjImpl(Node3)); } experimental::detail::node_impl &Succ3Node = *Succ2Node.MSuccessors.front(); ASSERT_EQ(Succ3Node.MSuccessors.size(), 1lu); if (EvenPath) { ASSERT_EQ(GraphImpl.getEventForNode(Succ3Node).get(), - &*getSyclObjImpl(Barrier4)); + &getSyclObjImpl(Barrier4)); } else { ASSERT_EQ(GraphImpl.getEventForNode(Succ3Node).get(), - &*getSyclObjImpl(Barrier3)); + &getSyclObjImpl(Barrier3)); } experimental::detail::node_impl &Succ4Node = *Succ3Node.MSuccessors.front(); ASSERT_EQ(Succ4Node.MSuccessors.size(), 1lu); if (EvenPath) { ASSERT_EQ(GraphImpl.getEventForNode(Succ4Node).get(), - &*getSyclObjImpl(Node6)); + &getSyclObjImpl(Node6)); } else { ASSERT_EQ(GraphImpl.getEventForNode(Succ4Node).get(), - &*getSyclObjImpl(Node5)); + &getSyclObjImpl(Node5)); } experimental::detail::node_impl &Succ5Node = *Succ4Node.MSuccessors.front(); ASSERT_EQ(Succ5Node.MSuccessors.size(), 0lu); ASSERT_EQ(Succ5Node.MPredecessors.size(), 2lu); ASSERT_EQ(GraphImpl.getEventForNode(Succ5Node).get(), - &*getSyclObjImpl(Barrier5)); + &getSyclObjImpl(Barrier5)); } } diff --git a/sycl/unittests/Extensions/CommandGraph/CommandGraph.cpp b/sycl/unittests/Extensions/CommandGraph/CommandGraph.cpp index 8ffd8d0dbe5bd..b20ab420f571a 100644 --- a/sycl/unittests/Extensions/CommandGraph/CommandGraph.cpp +++ b/sycl/unittests/Extensions/CommandGraph/CommandGraph.cpp @@ -58,54 +58,53 @@ TEST_F(CommandGraphTest, OwnerLessGraph) { } TEST_F(CommandGraphTest, AddNode) { - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); ASSERT_TRUE(GraphImpl.MRoots.empty()); auto Node1 = Graph.add( [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); - ASSERT_FALSE(getSyclObjImpl(Node1)->isEmpty()); + ASSERT_FALSE(getSyclObjImpl(Node1).isEmpty()); ASSERT_EQ(GraphImpl.MRoots.size(), 1lu); - ASSERT_EQ(*GraphImpl.MRoots.begin(), &*getSyclObjImpl(Node1)); - ASSERT_TRUE(getSyclObjImpl(Node1)->MSuccessors.empty()); - ASSERT_TRUE(getSyclObjImpl(Node1)->MPredecessors.empty()); + ASSERT_EQ(*GraphImpl.MRoots.begin(), &getSyclObjImpl(Node1)); + ASSERT_TRUE(getSyclObjImpl(Node1).MSuccessors.empty()); + ASSERT_TRUE(getSyclObjImpl(Node1).MPredecessors.empty()); // Add a node which depends on the first auto Node2Deps = experimental::property::node::depends_on(Node1); - ASSERT_EQ(&*getSyclObjImpl(Node2Deps.get_dependencies().front()), - &*getSyclObjImpl(Node1)); + ASSERT_EQ(&getSyclObjImpl(Node2Deps.get_dependencies().front()), + &getSyclObjImpl(Node1)); auto Node2 = Graph.add([&](sycl::handler &cgh) {}, {Node2Deps}); - ASSERT_TRUE(getSyclObjImpl(Node2)->isEmpty()); + ASSERT_TRUE(getSyclObjImpl(Node2).isEmpty()); ASSERT_EQ(GraphImpl.MRoots.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1)->MSuccessors.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1)->MSuccessors.front(), - &*getSyclObjImpl(Node2)); - ASSERT_TRUE(getSyclObjImpl(Node1)->MPredecessors.empty()); - ASSERT_EQ(getSyclObjImpl(Node2)->MPredecessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1).MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1).MSuccessors.front(), &getSyclObjImpl(Node2)); + ASSERT_TRUE(getSyclObjImpl(Node1).MPredecessors.empty()); + ASSERT_EQ(getSyclObjImpl(Node2).MPredecessors.size(), 1lu); // Add a third node which depends on both auto Node3 = Graph.add([&](sycl::handler &cgh) {}, {experimental::property::node::depends_on(Node1, Node2)}); - ASSERT_TRUE(getSyclObjImpl(Node3)->isEmpty()); + ASSERT_TRUE(getSyclObjImpl(Node3).isEmpty()); ASSERT_EQ(GraphImpl.MRoots.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1)->MSuccessors.size(), 2lu); - ASSERT_EQ(getSyclObjImpl(Node2)->MSuccessors.size(), 1lu); - ASSERT_TRUE(getSyclObjImpl(Node1)->MPredecessors.empty()); - ASSERT_EQ(getSyclObjImpl(Node2)->MPredecessors.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node3)->MPredecessors.size(), 2lu); + ASSERT_EQ(getSyclObjImpl(Node1).MSuccessors.size(), 2lu); + ASSERT_EQ(getSyclObjImpl(Node2).MSuccessors.size(), 1lu); + ASSERT_TRUE(getSyclObjImpl(Node1).MPredecessors.empty()); + ASSERT_EQ(getSyclObjImpl(Node2).MPredecessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node3).MPredecessors.size(), 2lu); // Add a fourth node without any dependencies on the others auto Node4 = Graph.add([&](sycl::handler &cgh) {}); - ASSERT_TRUE(getSyclObjImpl(Node4)->isEmpty()); + ASSERT_TRUE(getSyclObjImpl(Node4).isEmpty()); ASSERT_EQ(GraphImpl.MRoots.size(), 2lu); - ASSERT_EQ(getSyclObjImpl(Node1)->MSuccessors.size(), 2lu); - ASSERT_EQ(getSyclObjImpl(Node2)->MSuccessors.size(), 1lu); - ASSERT_TRUE(getSyclObjImpl(Node3)->MSuccessors.empty()); - ASSERT_TRUE(getSyclObjImpl(Node1)->MPredecessors.empty()); - ASSERT_EQ(getSyclObjImpl(Node2)->MPredecessors.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node3)->MPredecessors.size(), 2lu); - ASSERT_TRUE(getSyclObjImpl(Node4)->MPredecessors.empty()); + ASSERT_EQ(getSyclObjImpl(Node1).MSuccessors.size(), 2lu); + ASSERT_EQ(getSyclObjImpl(Node2).MSuccessors.size(), 1lu); + ASSERT_TRUE(getSyclObjImpl(Node3).MSuccessors.empty()); + ASSERT_TRUE(getSyclObjImpl(Node1).MPredecessors.empty()); + ASSERT_EQ(getSyclObjImpl(Node2).MPredecessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node3).MPredecessors.size(), 2lu); + ASSERT_TRUE(getSyclObjImpl(Node4).MPredecessors.empty()); } TEST_F(CommandGraphTest, Finalize) { @@ -130,42 +129,41 @@ TEST_F(CommandGraphTest, Finalize) { auto GraphExec = Graph.finalize(); experimental::detail::exec_graph_impl &GraphExecImpl = - *getSyclObjImpl(GraphExec); + getSyclObjImpl(GraphExec); // The final schedule should contain three nodes in order: 2->1->3 auto Schedule = GraphExecImpl.getSchedule(); ASSERT_EQ(Schedule.size(), 3ul); auto ScheduleIt = Schedule.begin(); - ASSERT_TRUE((*ScheduleIt)->isSimilar(*getSyclObjImpl(Node2))); + ASSERT_TRUE((*ScheduleIt)->isSimilar(getSyclObjImpl(Node2))); ScheduleIt++; - ASSERT_TRUE((*ScheduleIt)->isSimilar(*getSyclObjImpl(Node1))); + ASSERT_TRUE((*ScheduleIt)->isSimilar(getSyclObjImpl(Node1))); ScheduleIt++; - ASSERT_TRUE((*ScheduleIt)->isSimilar(*getSyclObjImpl(Node3))); + ASSERT_TRUE((*ScheduleIt)->isSimilar(getSyclObjImpl(Node3))); ASSERT_EQ(Queue.get_context(), GraphExecImpl.getContext()); } TEST_F(CommandGraphTest, MakeEdge) { - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Add two independent nodes auto Node1 = Graph.add( [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto Node2 = Graph.add([&](sycl::handler &cgh) {}); ASSERT_EQ(GraphImpl.MRoots.size(), 2ul); - ASSERT_TRUE(getSyclObjImpl(Node1)->MSuccessors.empty()); - ASSERT_TRUE(getSyclObjImpl(Node1)->MPredecessors.empty()); - ASSERT_TRUE(getSyclObjImpl(Node2)->MSuccessors.empty()); - ASSERT_TRUE(getSyclObjImpl(Node2)->MPredecessors.empty()); + ASSERT_TRUE(getSyclObjImpl(Node1).MSuccessors.empty()); + ASSERT_TRUE(getSyclObjImpl(Node1).MPredecessors.empty()); + ASSERT_TRUE(getSyclObjImpl(Node2).MSuccessors.empty()); + ASSERT_TRUE(getSyclObjImpl(Node2).MPredecessors.empty()); // Connect nodes and verify order Graph.make_edge(Node1, Node2); ASSERT_EQ(GraphImpl.MRoots.size(), 1ul); - ASSERT_EQ(getSyclObjImpl(Node1)->MSuccessors.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1)->MSuccessors.front(), - &*getSyclObjImpl(Node2)); - ASSERT_TRUE(getSyclObjImpl(Node1)->MPredecessors.empty()); - ASSERT_TRUE(getSyclObjImpl(Node2)->MSuccessors.empty()); - ASSERT_EQ(getSyclObjImpl(Node2)->MPredecessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1).MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1).MSuccessors.front(), &getSyclObjImpl(Node2)); + ASSERT_TRUE(getSyclObjImpl(Node1).MPredecessors.empty()); + ASSERT_TRUE(getSyclObjImpl(Node2).MSuccessors.empty()); + ASSERT_EQ(getSyclObjImpl(Node2).MPredecessors.size(), 1lu); } TEST_F(CommandGraphTest, BeginEndRecording) { @@ -206,7 +204,7 @@ TEST_F(CommandGraphTest, GetCGCopy) { {experimental::property::node::depends_on(Node1)}); // Get copy of CG of Node2 and check equality - experimental::detail::node_impl &Node2Imp = *getSyclObjImpl(Node2); + experimental::detail::node_impl &Node2Imp = getSyclObjImpl(Node2); auto Node2CGCopy = Node2Imp.getCGCopy(); ASSERT_EQ(Node2CGCopy->getType(), Node2Imp.MCGType); ASSERT_EQ(Node2CGCopy->getType(), sycl::detail::CGType::Kernel); @@ -234,7 +232,7 @@ TEST_F(CommandGraphTest, DependencyLeavesKeyword1) { Graph.add([&](sycl::handler &cgh) { /*empty node */ }, {experimental::property::node::depends_on_all_leaves()}); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Check the graph structure // (1) (2) (3) @@ -242,17 +240,17 @@ TEST_F(CommandGraphTest, DependencyLeavesKeyword1) { // \ | / // (E) ASSERT_EQ(GraphImpl.MRoots.size(), 3lu); - experimental::detail::node_impl &EmptyImpl = *getSyclObjImpl(EmptyNode); + experimental::detail::node_impl &EmptyImpl = getSyclObjImpl(EmptyNode); ASSERT_EQ(EmptyImpl.MPredecessors.size(), 3lu); ASSERT_EQ(EmptyImpl.MSuccessors.size(), 0lu); - experimental::detail::node_impl &Node1Impl = *getSyclObjImpl(Node1Graph); + experimental::detail::node_impl &Node1Impl = getSyclObjImpl(Node1Graph); ASSERT_EQ(Node1Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node1Impl.MSuccessors[0], &EmptyImpl); - experimental::detail::node_impl &Node2Impl = *getSyclObjImpl(Node2Graph); + experimental::detail::node_impl &Node2Impl = getSyclObjImpl(Node2Graph); ASSERT_EQ(Node2Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node2Impl.MSuccessors[0], &EmptyImpl); - experimental::detail::node_impl &Node3Impl = *getSyclObjImpl(Node3Graph); + experimental::detail::node_impl &Node3Impl = getSyclObjImpl(Node3Graph); ASSERT_EQ(Node3Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node3Impl.MSuccessors[0], &EmptyImpl); } @@ -272,7 +270,7 @@ TEST_F(CommandGraphTest, DependencyLeavesKeyword2) { Graph.add([&](sycl::handler &cgh) { /*empty node */ }, {experimental::property::node::depends_on_all_leaves()}); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Check the graph structure // (1) (2) (3) @@ -281,20 +279,20 @@ TEST_F(CommandGraphTest, DependencyLeavesKeyword2) { // \| / // (E) ASSERT_EQ(GraphImpl.MRoots.size(), 3lu); - experimental::detail::node_impl &EmptyImpl = *getSyclObjImpl(EmptyNode); + experimental::detail::node_impl &EmptyImpl = getSyclObjImpl(EmptyNode); ASSERT_EQ(EmptyImpl.MPredecessors.size(), 3lu); ASSERT_EQ(EmptyImpl.MSuccessors.size(), 0lu); - experimental::detail::node_impl &Node1Impl = *getSyclObjImpl(Node1Graph); + experimental::detail::node_impl &Node1Impl = getSyclObjImpl(Node1Graph); ASSERT_EQ(Node1Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node1Impl.MSuccessors[0], &EmptyImpl); - experimental::detail::node_impl &Node2Impl = *getSyclObjImpl(Node2Graph); + experimental::detail::node_impl &Node2Impl = getSyclObjImpl(Node2Graph); ASSERT_EQ(Node2Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node2Impl.MSuccessors[0], &EmptyImpl); - experimental::detail::node_impl &Node3Impl = *getSyclObjImpl(Node3Graph); + experimental::detail::node_impl &Node3Impl = getSyclObjImpl(Node3Graph); ASSERT_EQ(Node3Impl.MSuccessors.size(), 1lu); - experimental::detail::node_impl &Node4Impl = *getSyclObjImpl(Node4Graph); + experimental::detail::node_impl &Node4Impl = getSyclObjImpl(Node4Graph); ASSERT_EQ(Node4Impl.MPredecessors.size(), 1lu); ASSERT_EQ(Node4Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node4Impl.MSuccessors[0], &EmptyImpl); @@ -315,7 +313,7 @@ TEST_F(CommandGraphTest, DependencyLeavesKeyword3) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }, {experimental::property::node::depends_on(EmptyNode)}); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Check the graph structure // (1)(2) @@ -324,21 +322,21 @@ TEST_F(CommandGraphTest, DependencyLeavesKeyword3) { // (3) | // (4) ASSERT_EQ(GraphImpl.MRoots.size(), 2lu); - experimental::detail::node_impl &EmptyImpl = *getSyclObjImpl(EmptyNode); + experimental::detail::node_impl &EmptyImpl = getSyclObjImpl(EmptyNode); ASSERT_EQ(EmptyImpl.MPredecessors.size(), 2lu); ASSERT_EQ(EmptyImpl.MSuccessors.size(), 1lu); - experimental::detail::node_impl &Node1Impl = *getSyclObjImpl(Node1Graph); - experimental::detail::node_impl &Node2Impl = *getSyclObjImpl(Node2Graph); + experimental::detail::node_impl &Node1Impl = getSyclObjImpl(Node1Graph); + experimental::detail::node_impl &Node2Impl = getSyclObjImpl(Node2Graph); ASSERT_EQ(Node1Impl.MSuccessors.size(), 2lu); ASSERT_EQ(Node2Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node2Impl.MSuccessors[0], &EmptyImpl); - experimental::detail::node_impl &Node3Impl = *getSyclObjImpl(Node3Graph); + experimental::detail::node_impl &Node3Impl = getSyclObjImpl(Node3Graph); ASSERT_EQ(Node3Impl.MPredecessors.size(), 1lu); ASSERT_EQ(Node3Impl.MPredecessors[0], &Node1Impl); - experimental::detail::node_impl &Node4Impl = *getSyclObjImpl(Node4Graph); + experimental::detail::node_impl &Node4Impl = getSyclObjImpl(Node4Graph); ASSERT_EQ(Node4Impl.MPredecessors.size(), 1lu); ASSERT_EQ(Node4Impl.MPredecessors[0], &EmptyImpl); } @@ -357,7 +355,7 @@ TEST_F(CommandGraphTest, DependencyLeavesKeyword4) { Graph.add([&](sycl::handler &cgh) { /*empty node */ }, {experimental::property::node::depends_on_all_leaves()}); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); // Check the graph structure // (1)(2) @@ -366,19 +364,19 @@ TEST_F(CommandGraphTest, DependencyLeavesKeyword4) { // \ / // (E2) ASSERT_EQ(GraphImpl.MRoots.size(), 3lu); - experimental::detail::node_impl &EmptyImpl = *getSyclObjImpl(EmptyNode); + experimental::detail::node_impl &EmptyImpl = getSyclObjImpl(EmptyNode); ASSERT_EQ(EmptyImpl.MPredecessors.size(), 2lu); ASSERT_EQ(EmptyImpl.MSuccessors.size(), 1lu); - experimental::detail::node_impl &Node1Impl = *getSyclObjImpl(Node1Graph); + experimental::detail::node_impl &Node1Impl = getSyclObjImpl(Node1Graph); ASSERT_EQ(Node1Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node1Impl.MSuccessors[0], &EmptyImpl); - experimental::detail::node_impl &Node2Impl = *getSyclObjImpl(Node2Graph); + experimental::detail::node_impl &Node2Impl = getSyclObjImpl(Node2Graph); ASSERT_EQ(Node2Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node2Impl.MSuccessors[0], &EmptyImpl); - experimental::detail::node_impl &EmptyImpl2 = *getSyclObjImpl(EmptyNode2); - experimental::detail::node_impl &Node3Impl = *getSyclObjImpl(Node3Graph); + experimental::detail::node_impl &EmptyImpl2 = getSyclObjImpl(EmptyNode2); + experimental::detail::node_impl &Node3Impl = getSyclObjImpl(Node3Graph); ASSERT_EQ(Node3Impl.MPredecessors.size(), 0lu); ASSERT_EQ(Node3Impl.MSuccessors.size(), 1lu); ASSERT_EQ(Node3Impl.MSuccessors[0], &EmptyImpl2); @@ -416,7 +414,7 @@ TEST_F(CommandGraphTest, GraphPartitionsMerging) { auto GraphExec = Graph.finalize(); experimental::detail::exec_graph_impl &GraphExecImpl = - *getSyclObjImpl(GraphExec); + getSyclObjImpl(GraphExec); auto PartitionsList = GraphExecImpl.getPartitions(); ASSERT_EQ(PartitionsList.size(), 5ul); ASSERT_FALSE(PartitionsList[0]->MIsHostTask); @@ -472,8 +470,8 @@ TEST_F(CommandGraphTest, FillMemsetNodes) { CGH.fill(Acc, Value); }); - experimental::detail::node_impl &NodeAImpl = *getSyclObjImpl(NodeA); - experimental::detail::node_impl &NodeBImpl = *getSyclObjImpl(NodeB); + experimental::detail::node_impl &NodeAImpl = getSyclObjImpl(NodeA); + experimental::detail::node_impl &NodeBImpl = getSyclObjImpl(NodeB); EXPECT_NE(&NodeAImpl, &NodeBImpl); } @@ -493,12 +491,12 @@ TEST_F(CommandGraphTest, FillMemsetNodes) { auto MemsetNodeB = Graph.add([&](handler &CGH) { CGH.memset(USMPtr, Value, 2); }); - experimental::detail::node_impl &FillNodeAImpl = *getSyclObjImpl(FillNodeA); - experimental::detail::node_impl &FillNodeBImpl = *getSyclObjImpl(FillNodeB); + experimental::detail::node_impl &FillNodeAImpl = getSyclObjImpl(FillNodeA); + experimental::detail::node_impl &FillNodeBImpl = getSyclObjImpl(FillNodeB); experimental::detail::node_impl &MemsetNodeAImpl = - *getSyclObjImpl(MemsetNodeA); + getSyclObjImpl(MemsetNodeA); experimental::detail::node_impl &MemsetNodeBImpl = - *getSyclObjImpl(MemsetNodeB); + getSyclObjImpl(MemsetNodeB); EXPECT_NE(&FillNodeAImpl, &FillNodeBImpl); EXPECT_NE(&MemsetNodeAImpl, &MemsetNodeBImpl); diff --git a/sycl/unittests/Extensions/CommandGraph/Common.hpp b/sycl/unittests/Extensions/CommandGraph/Common.hpp index aa7c59472105e..e15d2fbff09fe 100644 --- a/sycl/unittests/Extensions/CommandGraph/Common.hpp +++ b/sycl/unittests/Extensions/CommandGraph/Common.hpp @@ -26,6 +26,7 @@ using namespace sycl; using namespace sycl::ext::oneapi; using sycl::detail::getSyclObjImpl; +using sycl::detail::getSyclObjImplPtr; // Implement the test friend class forward declared in graph_impl.hpp so tests // can access private members to analyze internal optimizations (partitions, diff --git a/sycl/unittests/Extensions/CommandGraph/Exceptions.cpp b/sycl/unittests/Extensions/CommandGraph/Exceptions.cpp index 1a635a751229c..2e3293f8d295a 100644 --- a/sycl/unittests/Extensions/CommandGraph/Exceptions.cpp +++ b/sycl/unittests/Extensions/CommandGraph/Exceptions.cpp @@ -503,9 +503,9 @@ TEST_F(CommandGraphTest, MakeEdgeErrors) { // state. auto CheckGraphStructure = [&]() { - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); - experimental::detail::node_impl &NodeAImpl = *getSyclObjImpl(NodeA); - experimental::detail::node_impl &NodeBImpl = *getSyclObjImpl(NodeB); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); + experimental::detail::node_impl &NodeAImpl = getSyclObjImpl(NodeA); + experimental::detail::node_impl &NodeBImpl = getSyclObjImpl(NodeB); ASSERT_EQ(GraphImpl.MRoots.size(), 1lu); ASSERT_EQ(*GraphImpl.MRoots.begin(), &NodeAImpl); diff --git a/sycl/unittests/Extensions/CommandGraph/InOrderQueue.cpp b/sycl/unittests/Extensions/CommandGraph/InOrderQueue.cpp index 5e32c7b7a4b6f..173b6b7726d62 100644 --- a/sycl/unittests/Extensions/CommandGraph/InOrderQueue.cpp +++ b/sycl/unittests/Extensions/CommandGraph/InOrderQueue.cpp @@ -23,7 +23,7 @@ TEST_F(CommandGraphTest, InOrderQueue) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode1 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode1, nullptr); ASSERT_TRUE(PtrNode1->MPredecessors.empty()); @@ -31,7 +31,7 @@ TEST_F(CommandGraphTest, InOrderQueue) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode2 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode2, nullptr); ASSERT_NE(PtrNode2, PtrNode1); ASSERT_EQ(PtrNode1->MSuccessors.size(), 1lu); @@ -43,7 +43,7 @@ TEST_F(CommandGraphTest, InOrderQueue) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode3 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode3, nullptr); ASSERT_NE(PtrNode3, PtrNode2); ASSERT_EQ(PtrNode2->MSuccessors.size(), 1lu); @@ -56,7 +56,7 @@ TEST_F(CommandGraphTest, InOrderQueue) { // Finalize main graph and check schedule auto GraphExec = InOrderGraph.finalize(); experimental::detail::exec_graph_impl &GraphExecImpl = - *getSyclObjImpl(GraphExec); + getSyclObjImpl(GraphExec); auto Schedule = GraphExecImpl.getSchedule(); auto ScheduleIt = Schedule.begin(); ASSERT_EQ(Schedule.size(), 3ul); @@ -81,14 +81,14 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmpty) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode1 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode1, nullptr); ASSERT_TRUE(PtrNode1->MPredecessors.empty()); auto Node2Graph = InOrderQueue.submit([&](sycl::handler &cgh) {}); auto PtrNode2 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode2, nullptr); ASSERT_NE(PtrNode2, PtrNode1); ASSERT_EQ(PtrNode1->MSuccessors.size(), 1lu); @@ -100,7 +100,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmpty) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode3 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode3, nullptr); ASSERT_NE(PtrNode3, PtrNode2); ASSERT_EQ(PtrNode2->MSuccessors.size(), 1lu); @@ -114,7 +114,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmpty) { // Note that empty nodes are not scheduled auto GraphExec = InOrderGraph.finalize(); experimental::detail::exec_graph_impl &GraphExecImpl = - *getSyclObjImpl(GraphExec); + getSyclObjImpl(GraphExec); auto Schedule = GraphExecImpl.getSchedule(); auto ScheduleIt = Schedule.begin(); // the schedule list contains all types of nodes (even empty nodes) @@ -138,7 +138,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmptyFirst) { auto Node1Graph = InOrderQueue.submit([&](sycl::handler &cgh) {}); auto PtrNode1 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode1, nullptr); ASSERT_TRUE(PtrNode1->MPredecessors.empty()); @@ -146,7 +146,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmptyFirst) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode2 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode2, nullptr); ASSERT_NE(PtrNode2, PtrNode1); ASSERT_EQ(PtrNode1->MSuccessors.size(), 1lu); @@ -158,7 +158,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmptyFirst) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode3 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode3, nullptr); ASSERT_NE(PtrNode3, PtrNode2); ASSERT_EQ(PtrNode2->MSuccessors.size(), 1lu); @@ -172,7 +172,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmptyFirst) { // Note that empty nodes are not scheduled auto GraphExec = InOrderGraph.finalize(); experimental::detail::exec_graph_impl &GraphExecImpl = - *getSyclObjImpl(GraphExec); + getSyclObjImpl(GraphExec); auto Schedule = GraphExecImpl.getSchedule(); auto ScheduleIt = Schedule.begin(); // the schedule list contains all types of nodes (even empty nodes) @@ -197,7 +197,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmptyLast) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode1 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode1, nullptr); ASSERT_TRUE(PtrNode1->MPredecessors.empty()); @@ -205,7 +205,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmptyLast) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode2 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode2, nullptr); ASSERT_NE(PtrNode2, PtrNode1); ASSERT_EQ(PtrNode1->MSuccessors.size(), 1lu); @@ -216,7 +216,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmptyLast) { auto Node3Graph = InOrderQueue.submit([&](sycl::handler &cgh) {}); auto PtrNode3 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode3, nullptr); ASSERT_NE(PtrNode3, PtrNode2); ASSERT_EQ(PtrNode2->MSuccessors.size(), 1lu); @@ -230,7 +230,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithEmptyLast) { // Note that empty nodes are not scheduled auto GraphExec = InOrderGraph.finalize(); experimental::detail::exec_graph_impl &GraphExecImpl = - *getSyclObjImpl(GraphExec); + getSyclObjImpl(GraphExec); auto Schedule = GraphExecImpl.getSchedule(); auto ScheduleIt = Schedule.begin(); // the schedule list contains all types of nodes (even empty nodes) @@ -259,7 +259,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithPreviousHostTask) { std::lock_guard HostTaskLock(HostTaskMutex); }); }); - sycl::detail::event_impl &EventInitialImpl = *getSyclObjImpl(EventInitial); + sycl::detail::event_impl &EventInitialImpl = getSyclObjImpl(EventInitial); // Record in-order queue with three nodes. InOrderGraph.begin_recording(InOrderQueue); @@ -267,7 +267,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithPreviousHostTask) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode1 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode1, nullptr); ASSERT_TRUE(PtrNode1->MPredecessors.empty()); @@ -275,7 +275,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithPreviousHostTask) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode2 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode2, nullptr); ASSERT_NE(PtrNode2, PtrNode1); ASSERT_EQ(PtrNode1->MSuccessors.size(), 1lu); @@ -287,7 +287,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithPreviousHostTask) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode3 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode3, nullptr); ASSERT_NE(PtrNode3, PtrNode2); ASSERT_EQ(PtrNode2->MSuccessors.size(), 1lu); @@ -300,7 +300,7 @@ TEST_F(CommandGraphTest, InOrderQueueWithPreviousHostTask) { auto EventLast = InOrderQueue.submit( [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); - sycl::detail::event_impl &EventLastImpl = *getSyclObjImpl(EventLast); + sycl::detail::event_impl &EventLastImpl = getSyclObjImpl(EventLast); auto WaitList = EventLastImpl.getWaitList(); Lock.unlock(); // Previous task is a host task. Explicit dependency is needed to enforce the @@ -334,7 +334,7 @@ TEST_F(CommandGraphTest, InOrderQueueHostTaskAndGraph) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode1 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode1, nullptr); ASSERT_TRUE(PtrNode1->MPredecessors.empty()); @@ -342,7 +342,7 @@ TEST_F(CommandGraphTest, InOrderQueueHostTaskAndGraph) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode2 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode2, nullptr); ASSERT_NE(PtrNode2, PtrNode1); ASSERT_EQ(PtrNode1->MSuccessors.size(), 1lu); @@ -354,7 +354,7 @@ TEST_F(CommandGraphTest, InOrderQueueHostTaskAndGraph) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode3 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode3, nullptr); ASSERT_NE(PtrNode3, PtrNode2); ASSERT_EQ(PtrNode2->MSuccessors.size(), 1lu); @@ -373,7 +373,7 @@ TEST_F(CommandGraphTest, InOrderQueueHostTaskAndGraph) { auto EventLast = InOrderQueue.submit( [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); - sycl::detail::event_impl &EventLastImpl = *getSyclObjImpl(EventLast); + sycl::detail::event_impl &EventLastImpl = getSyclObjImpl(EventLast); auto EventLastWaitList = EventLastImpl.getWaitList(); // Previous task is not a host task. Explicit dependency is still needed // to properly handle blocked tasks (the event will be filtered out before @@ -411,7 +411,7 @@ TEST_F(CommandGraphTest, InOrderQueueMemsetAndGraph) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode1 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode1, nullptr); ASSERT_TRUE(PtrNode1->MPredecessors.empty()); @@ -419,7 +419,7 @@ TEST_F(CommandGraphTest, InOrderQueueMemsetAndGraph) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode2 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode2, nullptr); ASSERT_NE(PtrNode2, PtrNode1); ASSERT_EQ(PtrNode1->MSuccessors.size(), 1lu); @@ -431,7 +431,7 @@ TEST_F(CommandGraphTest, InOrderQueueMemsetAndGraph) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode3 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode3, nullptr); ASSERT_NE(PtrNode3, PtrNode2); ASSERT_EQ(PtrNode2->MSuccessors.size(), 1lu); @@ -471,7 +471,7 @@ TEST_F(CommandGraphTest, InOrderQueueMemcpyAndGraph) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode1 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode1, nullptr); ASSERT_TRUE(PtrNode1->MPredecessors.empty()); @@ -479,7 +479,7 @@ TEST_F(CommandGraphTest, InOrderQueueMemcpyAndGraph) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode2 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode2, nullptr); ASSERT_NE(PtrNode2, PtrNode1); ASSERT_EQ(PtrNode1->MSuccessors.size(), 1lu); @@ -491,7 +491,7 @@ TEST_F(CommandGraphTest, InOrderQueueMemcpyAndGraph) { [&](sycl::handler &cgh) { cgh.single_task([]() {}); }); auto PtrNode3 = getSyclObjImpl(InOrderGraph) - ->getLastInorderNode(&*getSyclObjImpl(InOrderQueue)); + .getLastInorderNode(&getSyclObjImpl(InOrderQueue)); ASSERT_NE(PtrNode3, nullptr); ASSERT_NE(PtrNode3, PtrNode2); ASSERT_EQ(PtrNode2->MSuccessors.size(), 1lu); diff --git a/sycl/unittests/Extensions/CommandGraph/LinearGraphOptimization.cpp b/sycl/unittests/Extensions/CommandGraph/LinearGraphOptimization.cpp index 0982582ae919d..51338a33952b9 100644 --- a/sycl/unittests/Extensions/CommandGraph/LinearGraphOptimization.cpp +++ b/sycl/unittests/Extensions/CommandGraph/LinearGraphOptimization.cpp @@ -56,7 +56,7 @@ TEST_F(CommandGraphTest, LinearInOrderQueue) { G.end_recording(InOrderQ); auto Exec = G.finalize(); - auto &Impl = *getSyclObjImpl(Exec); + exec_graph_impl &Impl = getSyclObjImpl(Exec); ValidateLinearExec(Impl, /*InOrderPartitions=*/3); } @@ -71,7 +71,7 @@ TEST_F(CommandGraphTest, LinearOutOfOrderQueue) { G.end_recording(OOOQ); auto Exec = G.finalize(); - auto &Impl = *getSyclObjImpl(Exec); + exec_graph_impl &Impl = getSyclObjImpl(Exec); ValidateLinearExec(Impl, /*InOrderPartitions=*/1); } @@ -103,7 +103,7 @@ TEST_F(CommandGraphTest, NonLinearOutOfOrderQueue) { G.end_recording(Q); auto Exec = G.finalize(); - auto &Impl = *getSyclObjImpl(Exec); + exec_graph_impl &Impl = getSyclObjImpl(Exec); const int NumLinear = GraphImplTest::NumPartitionsInOrder(Impl); const int NumSyncPoints = GraphImplTest::NumSyncPoints(Impl); diff --git a/sycl/unittests/Extensions/CommandGraph/MultiThreaded.cpp b/sycl/unittests/Extensions/CommandGraph/MultiThreaded.cpp index 1a9a9f30af9c9..7395d400bc4f7 100644 --- a/sycl/unittests/Extensions/CommandGraph/MultiThreaded.cpp +++ b/sycl/unittests/Extensions/CommandGraph/MultiThreaded.cpp @@ -128,8 +128,8 @@ TEST_F(MultiThreadGraphTest, BeginEndRecording) { GraphRef.end_recording(MyQueue); } - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); - experimental::detail::graph_impl &GraphRefImpl = *getSyclObjImpl(GraphRef); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphRefImpl = getSyclObjImpl(GraphRef); ASSERT_EQ(GraphImpl.hasSimilarStructure(GraphRefImpl), true); } @@ -158,8 +158,8 @@ TEST_F(MultiThreadGraphTest, ExplicitAddNodes) { addKernels(GraphRef); } - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); - experimental::detail::graph_impl &GraphRefImpl = *getSyclObjImpl(GraphRef); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphRefImpl = getSyclObjImpl(GraphRef); ASSERT_EQ(GraphImpl.hasSimilarStructure(GraphRefImpl), true); } @@ -192,8 +192,8 @@ TEST_F(MultiThreadGraphTest, RecordAddNodes) { } GraphRef.end_recording(QueueRef); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(Graph); - experimental::detail::graph_impl &GraphRefImpl = *getSyclObjImpl(GraphRef); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(Graph); + experimental::detail::graph_impl &GraphRefImpl = getSyclObjImpl(GraphRef); ASSERT_EQ(GraphImpl.hasSimilarStructure(GraphRefImpl), true); } @@ -233,9 +233,9 @@ TEST_F(MultiThreadGraphTest, RecordAddNodesInOrderQueue) { } InOrderGraphRef.end_recording(InOrderQueueRef); - experimental::detail::graph_impl &GraphImpl = *getSyclObjImpl(InOrderGraph); + experimental::detail::graph_impl &GraphImpl = getSyclObjImpl(InOrderGraph); experimental::detail::graph_impl &GraphRefImpl = - *getSyclObjImpl(InOrderGraphRef); + getSyclObjImpl(InOrderGraphRef); ASSERT_EQ(GraphImpl.getNumberOfNodes(), GraphRefImpl.getNumberOfNodes()); // In-order graph must have only a single root @@ -297,9 +297,9 @@ TEST_F(MultiThreadGraphTest, Finalize) { QueueRef.submit( [&](sycl::handler &CGH) { CGH.ext_oneapi_graph(GraphExecRef); }); experimental::detail::exec_graph_impl &GraphExecImpl = - *getSyclObjImpl(GraphsExecMap.find(i)->second); + getSyclObjImpl(GraphsExecMap.find(i)->second); experimental::detail::exec_graph_impl &GraphExecRefImpl = - *getSyclObjImpl(GraphExecRef); + getSyclObjImpl(GraphExecRef); ASSERT_EQ(checkExecGraphSchedule(GraphExecImpl, GraphExecRefImpl), true); } } diff --git a/sycl/unittests/Extensions/CommandGraph/Queries.cpp b/sycl/unittests/Extensions/CommandGraph/Queries.cpp index 6451ec89840e7..ec7c700b01cb5 100644 --- a/sycl/unittests/Extensions/CommandGraph/Queries.cpp +++ b/sycl/unittests/Extensions/CommandGraph/Queries.cpp @@ -89,7 +89,7 @@ TEST_F(CommandGraphTest, GetNodeQueries) { // Check ordering of all nodes is correct for (size_t i = 0; i < GraphNodes.size(); i++) { - ASSERT_EQ(&*getSyclObjImpl(GraphNodes[i]), &*getSyclObjImpl(NodeList[i])); + ASSERT_EQ(&getSyclObjImpl(GraphNodes[i]), &getSyclObjImpl(NodeList[i])); } } diff --git a/sycl/unittests/Extensions/CommandGraph/Subgraph.cpp b/sycl/unittests/Extensions/CommandGraph/Subgraph.cpp index f1e6c0dec0090..51c393afe2757 100644 --- a/sycl/unittests/Extensions/CommandGraph/Subgraph.cpp +++ b/sycl/unittests/Extensions/CommandGraph/Subgraph.cpp @@ -32,37 +32,37 @@ TEST_F(CommandGraphTest, SubGraph) { {experimental::property::node::depends_on(Node2MainGraph)}); // Assert order of the added sub-graph - ASSERT_TRUE(getSyclObjImpl(Node2MainGraph)->MNodeType == + ASSERT_TRUE(getSyclObjImpl(Node2MainGraph).MNodeType == experimental::node_type::subgraph); - ASSERT_EQ(getSyclObjImpl(MainGraph)->MRoots.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1MainGraph)->MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(MainGraph).MRoots.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1MainGraph).MSuccessors.size(), 1lu); // Subgraph nodes are duplicated when inserted to parent graph on // finalization. we thus check the node content only. const bool CompareContentOnly = true; - ASSERT_TRUE(getSyclObjImpl(Node1MainGraph)->MSuccessors.front()->MNodeType == + ASSERT_TRUE(getSyclObjImpl(Node1MainGraph).MSuccessors.front()->MNodeType == experimental::node_type::subgraph); - ASSERT_EQ(getSyclObjImpl(Node2MainGraph)->MSuccessors.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1MainGraph)->MPredecessors.size(), 0lu); - ASSERT_EQ(getSyclObjImpl(Node2MainGraph)->MPredecessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node2MainGraph).MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1MainGraph).MPredecessors.size(), 0lu); + ASSERT_EQ(getSyclObjImpl(Node2MainGraph).MPredecessors.size(), 1lu); // Finalize main graph and check schedule auto MainGraphExec = MainGraph.finalize(); experimental::detail::exec_graph_impl &MainGraphExecImpl = - *getSyclObjImpl(MainGraphExec); + getSyclObjImpl(MainGraphExec); auto Schedule = MainGraphExecImpl.getSchedule(); auto ScheduleIt = Schedule.begin(); // The schedule list must contain 4 nodes: the two nodes from the subgraph are // merged into the main graph in place of the subgraph node. ASSERT_EQ(Schedule.size(), 4ul); - ASSERT_TRUE((*ScheduleIt)->isSimilar(*getSyclObjImpl(Node1MainGraph))); + ASSERT_TRUE((*ScheduleIt)->isSimilar(getSyclObjImpl(Node1MainGraph))); ScheduleIt++; - ASSERT_TRUE((*ScheduleIt) - ->isSimilar(*getSyclObjImpl(Node1Graph), CompareContentOnly)); + ASSERT_TRUE( + (*ScheduleIt)->isSimilar(getSyclObjImpl(Node1Graph), CompareContentOnly)); ScheduleIt++; - ASSERT_TRUE((*ScheduleIt) - ->isSimilar(*getSyclObjImpl(Node2Graph), CompareContentOnly)); + ASSERT_TRUE( + (*ScheduleIt)->isSimilar(getSyclObjImpl(Node2Graph), CompareContentOnly)); ScheduleIt++; - ASSERT_TRUE((*ScheduleIt)->isSimilar(*getSyclObjImpl(Node3MainGraph))); + ASSERT_TRUE((*ScheduleIt)->isSimilar(getSyclObjImpl(Node3MainGraph))); ASSERT_EQ(Queue.get_context(), MainGraphExecImpl.getContext()); } @@ -91,42 +91,42 @@ TEST_F(CommandGraphTest, SubGraphWithEmptyNode) { {experimental::property::node::depends_on(Node2MainGraph)}); // Assert order of the added sub-graph - ASSERT_TRUE(getSyclObjImpl(Node2MainGraph)->MNodeType == + ASSERT_TRUE(getSyclObjImpl(Node2MainGraph).MNodeType == experimental::node_type::subgraph); // Check the structure of the main graph. // 1 root connected to 1 successor (the single root of the subgraph) - ASSERT_EQ(getSyclObjImpl(MainGraph)->MRoots.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1MainGraph)->MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(MainGraph).MRoots.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1MainGraph).MSuccessors.size(), 1lu); // Subgraph nodes are duplicated when inserted to parent graph. // we thus check the node content only. const bool CompareContentOnly = true; - ASSERT_TRUE(getSyclObjImpl(Node1MainGraph)->MSuccessors.front()->MNodeType == + ASSERT_TRUE(getSyclObjImpl(Node1MainGraph).MSuccessors.front()->MNodeType == experimental::node_type::subgraph); - ASSERT_EQ(getSyclObjImpl(Node1MainGraph)->MSuccessors.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node2MainGraph)->MSuccessors.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1MainGraph)->MPredecessors.size(), 0lu); - ASSERT_EQ(getSyclObjImpl(Node2MainGraph)->MPredecessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1MainGraph).MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node2MainGraph).MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1MainGraph).MPredecessors.size(), 0lu); + ASSERT_EQ(getSyclObjImpl(Node2MainGraph).MPredecessors.size(), 1lu); // Finalize main graph and check schedule auto MainGraphExec = MainGraph.finalize(); experimental::detail::exec_graph_impl &MainGraphExecImpl = - *getSyclObjImpl(MainGraphExec); + getSyclObjImpl(MainGraphExec); auto Schedule = MainGraphExecImpl.getSchedule(); auto ScheduleIt = Schedule.begin(); // The schedule list must contain 5 nodes: 2 main graph nodes and 3 subgraph // nodes which have been merged. ASSERT_EQ(Schedule.size(), 5ul); - ASSERT_TRUE((*ScheduleIt)->isSimilar(*getSyclObjImpl(Node1MainGraph))); + ASSERT_TRUE((*ScheduleIt)->isSimilar(getSyclObjImpl(Node1MainGraph))); ScheduleIt++; - ASSERT_TRUE((*ScheduleIt) - ->isSimilar(*getSyclObjImpl(Node1Graph), CompareContentOnly)); + ASSERT_TRUE( + (*ScheduleIt)->isSimilar(getSyclObjImpl(Node1Graph), CompareContentOnly)); ScheduleIt++; ASSERT_TRUE((*ScheduleIt)->isEmpty()); // empty node inside the subgraph ScheduleIt++; - ASSERT_TRUE((*ScheduleIt) - ->isSimilar(*getSyclObjImpl(Node2Graph), CompareContentOnly)); + ASSERT_TRUE( + (*ScheduleIt)->isSimilar(getSyclObjImpl(Node2Graph), CompareContentOnly)); ScheduleIt++; - ASSERT_TRUE((*ScheduleIt)->isSimilar(*getSyclObjImpl(Node3MainGraph))); + ASSERT_TRUE((*ScheduleIt)->isSimilar(getSyclObjImpl(Node3MainGraph))); ASSERT_EQ(Queue.get_context(), MainGraphExecImpl.getContext()); } @@ -155,42 +155,42 @@ TEST_F(CommandGraphTest, SubGraphWithEmptyNodeLast) { {experimental::property::node::depends_on(Node2MainGraph)}); // Assert order of the added sub-graph - ASSERT_TRUE(getSyclObjImpl(Node2MainGraph)->MNodeType == + ASSERT_TRUE(getSyclObjImpl(Node2MainGraph).MNodeType == experimental::node_type::subgraph); // Check the structure of the main graph. // 1 root connected to 1 successor (the single root of the subgraph) - ASSERT_EQ(getSyclObjImpl(MainGraph)->MRoots.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1MainGraph)->MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(MainGraph).MRoots.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1MainGraph).MSuccessors.size(), 1lu); // Subgraph nodes are duplicated when inserted to parent graph. // we thus check the node content only. const bool CompareContentOnly = true; - ASSERT_TRUE(getSyclObjImpl(Node1MainGraph)->MSuccessors.front()->MNodeType == + ASSERT_TRUE(getSyclObjImpl(Node1MainGraph).MSuccessors.front()->MNodeType == experimental::node_type::subgraph); - ASSERT_EQ(getSyclObjImpl(Node1MainGraph)->MSuccessors.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node2MainGraph)->MSuccessors.size(), 1lu); - ASSERT_EQ(getSyclObjImpl(Node1MainGraph)->MPredecessors.size(), 0lu); - ASSERT_EQ(getSyclObjImpl(Node2MainGraph)->MPredecessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1MainGraph).MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node2MainGraph).MSuccessors.size(), 1lu); + ASSERT_EQ(getSyclObjImpl(Node1MainGraph).MPredecessors.size(), 0lu); + ASSERT_EQ(getSyclObjImpl(Node2MainGraph).MPredecessors.size(), 1lu); // Finalize main graph and check schedule auto MainGraphExec = MainGraph.finalize(); experimental::detail::exec_graph_impl &MainGraphExecImpl = - *getSyclObjImpl(MainGraphExec); + getSyclObjImpl(MainGraphExec); auto Schedule = MainGraphExecImpl.getSchedule(); auto ScheduleIt = Schedule.begin(); // The schedule list must contain 5 nodes: 2 main graph nodes and 3 subgraph // nodes which have been merged. ASSERT_EQ(Schedule.size(), 5ul); - ASSERT_TRUE((*ScheduleIt)->isSimilar(*getSyclObjImpl(Node1MainGraph))); + ASSERT_TRUE((*ScheduleIt)->isSimilar(getSyclObjImpl(Node1MainGraph))); ScheduleIt++; - ASSERT_TRUE((*ScheduleIt) - ->isSimilar(*getSyclObjImpl(Node1Graph), CompareContentOnly)); + ASSERT_TRUE( + (*ScheduleIt)->isSimilar(getSyclObjImpl(Node1Graph), CompareContentOnly)); ScheduleIt++; - ASSERT_TRUE((*ScheduleIt) - ->isSimilar(*getSyclObjImpl(Node2Graph), CompareContentOnly)); + ASSERT_TRUE( + (*ScheduleIt)->isSimilar(getSyclObjImpl(Node2Graph), CompareContentOnly)); ScheduleIt++; ASSERT_TRUE((*ScheduleIt)->isEmpty()); // empty node inside the subgraph ScheduleIt++; - ASSERT_TRUE((*ScheduleIt)->isSimilar(*getSyclObjImpl(Node3MainGraph))); + ASSERT_TRUE((*ScheduleIt)->isSimilar(getSyclObjImpl(Node3MainGraph))); ASSERT_EQ(Queue.get_context(), MainGraphExecImpl.getContext()); } @@ -224,7 +224,7 @@ TEST_F(CommandGraphTest, RecordSubGraph) { // Finalize main graph and check schedule auto MainGraphExec = MainGraph.finalize(); experimental::detail::exec_graph_impl &MainGraphExecImpl = - *getSyclObjImpl(MainGraphExec); + getSyclObjImpl(MainGraphExec); auto Schedule = MainGraphExecImpl.getSchedule(); // The schedule list must contain 4 nodes: 2 main graph nodes and 2 subgraph diff --git a/sycl/unittests/Extensions/CommandGraph/TopologicalSort.cpp b/sycl/unittests/Extensions/CommandGraph/TopologicalSort.cpp index 0c9c441bf21ec..b2adaa5efc8df 100644 --- a/sycl/unittests/Extensions/CommandGraph/TopologicalSort.cpp +++ b/sycl/unittests/Extensions/CommandGraph/TopologicalSort.cpp @@ -81,18 +81,18 @@ TEST_F(CommandGraphTest, CheckTopologicalSort) { auto ExecGraph = Graph.finalize(); experimental::detail::exec_graph_impl &ExecGraphImpl = - *getSyclObjImpl(ExecGraph); + getSyclObjImpl(ExecGraph); // Creating an executable graph with finalize copies all the nodes to new // objects. The new nodes will have an ID equal to OldNodeID + NumNodes. This // is implementation dependent but is the only way to test this functionality - size_t Node6ID = getSyclObjImpl(Node6)->getID() + NumNodes; - size_t Node3ID = getSyclObjImpl(Node3)->getID() + NumNodes; - size_t Node0ID = getSyclObjImpl(Node0)->getID() + NumNodes; - size_t Node1ID = getSyclObjImpl(Node1)->getID() + NumNodes; - size_t Node2ID = getSyclObjImpl(Node2)->getID() + NumNodes; - size_t Node5ID = getSyclObjImpl(Node5)->getID() + NumNodes; - size_t Node4ID = getSyclObjImpl(Node4)->getID() + NumNodes; + size_t Node6ID = getSyclObjImpl(Node6).getID() + NumNodes; + size_t Node3ID = getSyclObjImpl(Node3).getID() + NumNodes; + size_t Node0ID = getSyclObjImpl(Node0).getID() + NumNodes; + size_t Node1ID = getSyclObjImpl(Node1).getID() + NumNodes; + size_t Node2ID = getSyclObjImpl(Node2).getID() + NumNodes; + size_t Node5ID = getSyclObjImpl(Node5).getID() + NumNodes; + size_t Node4ID = getSyclObjImpl(Node4).getID() + NumNodes; std::unordered_map mapExecutionIDToTestID = { {Node6ID, 6}, {Node3ID, 3}, {Node0ID, 0}, {Node1ID, 1}, diff --git a/sycl/unittests/Extensions/CompositeDevice.cpp b/sycl/unittests/Extensions/CompositeDevice.cpp index 1951287134caa..c96337c209ae3 100644 --- a/sycl/unittests/Extensions/CompositeDevice.cpp +++ b/sycl/unittests/Extensions/CompositeDevice.cpp @@ -144,7 +144,7 @@ TEST(CompositeDeviceTest, PlatformExtOneAPIGetCompositeDevices) { // We don't expect to see COMPOSITE_DEVICE_1 here, because one of its // components (COMPONENT_DEVICE_D) is not available. ASSERT_EQ(Composites.size(), 1u); - ASSERT_EQ(sycl::detail::getSyclObjImpl(Composites.front())->getHandleRef(), + ASSERT_EQ(sycl::detail::getSyclObjImpl(Composites.front()).getHandleRef(), COMPOSITE_DEVICE_0); } @@ -162,7 +162,7 @@ TEST(CompositeDeviceTest, SYCLExtOneAPIExperimentalGetCompositeDevices) { // We don't expect to see COMPOSITE_DEVICE_1 here, because one of its // components (COMPONENT_DEVICE_D) is not available. ASSERT_EQ(Composites.size(), 1u); - ASSERT_EQ(sycl::detail::getSyclObjImpl(Composites.front())->getHandleRef(), + ASSERT_EQ(sycl::detail::getSyclObjImpl(Composites.front()).getHandleRef(), COMPOSITE_DEVICE_0); } diff --git a/sycl/unittests/Extensions/DeviceGlobal.cpp b/sycl/unittests/Extensions/DeviceGlobal.cpp index 6aa8c32405830..373be0d55ac5f 100644 --- a/sycl/unittests/Extensions/DeviceGlobal.cpp +++ b/sycl/unittests/Extensions/DeviceGlobal.cpp @@ -622,7 +622,7 @@ TEST_F(DeviceGlobalTest, DeviceGlobalImgScopeUseBeforeCopyTo) { // Register the cached program as expected for device global memory operation. using namespace sycl::detail; - context_impl &CtxImpl = *getSyclObjImpl(Q.get_context()); + context_impl &CtxImpl = getSyclObjImpl(Q.get_context()); KernelProgramCache::KernelCacheT &KernelCache = CtxImpl.getKernelProgramCache().acquireKernelsPerProgramCache().get(); ASSERT_EQ(KernelCache.size(), (size_t)1) @@ -652,7 +652,7 @@ TEST_F(DeviceGlobalTest, DeviceGlobalImgScopeUseBeforeMemcpyTo) { // Register the cached program as expected for device global memory operation. using namespace sycl::detail; - context_impl &CtxImpl = *getSyclObjImpl(Q.get_context()); + context_impl &CtxImpl = getSyclObjImpl(Q.get_context()); KernelProgramCache::KernelCacheT &KernelCache = CtxImpl.getKernelProgramCache().acquireKernelsPerProgramCache().get(); ASSERT_EQ(KernelCache.size(), (size_t)1) @@ -682,7 +682,7 @@ TEST_F(DeviceGlobalTest, DeviceGlobalImgScopeUseBeforeCopyFrom) { // Register the cached program as expected for device global memory operation. using namespace sycl::detail; - context_impl &CtxImpl = *getSyclObjImpl(Q.get_context()); + context_impl &CtxImpl = getSyclObjImpl(Q.get_context()); KernelProgramCache::KernelCacheT &KernelCache = CtxImpl.getKernelProgramCache().acquireKernelsPerProgramCache().get(); ASSERT_EQ(KernelCache.size(), (size_t)1) @@ -712,7 +712,7 @@ TEST_F(DeviceGlobalTest, DeviceGlobalImgScopeUseBeforeMemcpyFrom) { // Register the cached program as expected for device global memory operation. using namespace sycl::detail; - context_impl &CtxImpl = *getSyclObjImpl(Q.get_context()); + context_impl &CtxImpl = getSyclObjImpl(Q.get_context()); KernelProgramCache::KernelCacheT &KernelCache = CtxImpl.getKernelProgramCache().acquireKernelsPerProgramCache().get(); ASSERT_EQ(KernelCache.size(), (size_t)1) diff --git a/sycl/unittests/Extensions/GetLastEvent.cpp b/sycl/unittests/Extensions/GetLastEvent.cpp index 889a8f9da036b..053069596ad5e 100644 --- a/sycl/unittests/Extensions/GetLastEvent.cpp +++ b/sycl/unittests/Extensions/GetLastEvent.cpp @@ -51,7 +51,7 @@ TEST(GetLastEventEmptyQueue, CheckEventlessWorkQueue) { sycl::ext::oneapi::experimental::single_task(Q, []() {}); std::optional E = Q.ext_oneapi_get_last_event(); ASSERT_TRUE(E.has_value()); - ur_event_handle_t UREvent = detail::getSyclObjImpl(*E)->getHandle(); + ur_event_handle_t UREvent = detail::getSyclObjImpl(*E).getHandle(); ASSERT_NE(MarkerEventLatest, ur_event_handle_t{nullptr}); ASSERT_EQ(UREvent, MarkerEventLatest); } diff --git a/sycl/unittests/Extensions/USMMemcpy2D.cpp b/sycl/unittests/Extensions/USMMemcpy2D.cpp index bf8b5df0c4793..0a4d1e54d71f0 100644 --- a/sycl/unittests/Extensions/USMMemcpy2D.cpp +++ b/sycl/unittests/Extensions/USMMemcpy2D.cpp @@ -281,7 +281,7 @@ TEST(USMMemcpy2DTest, USMMemops2DSupported) { sycl::platform Plt = sycl::platform(); sycl::queue Q{Plt.get_devices()[0]}; - sycl::detail::queue_impl &QueueImpl = *sycl::detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = sycl::detail::getSyclObjImpl(Q); mock::getCallbacks().set_after_callback( "urContextGetInfo", &after_urContextGetInfo); @@ -382,7 +382,7 @@ TEST(USMMemcpy2DTest, USMFillSupportedOnly) { sycl::platform Plt = sycl::platform(); sycl::queue Q{Plt.get_devices()[0]}; - sycl::detail::queue_impl &QueueImpl = *sycl::detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = sycl::detail::getSyclObjImpl(Q); mock::getCallbacks().set_after_callback( "urContextGetInfo", &after_urContextGetInfo); @@ -428,7 +428,7 @@ TEST(USMMemcpy2DTest, USMMemsetSupportedOnly) { sycl::platform Plt = sycl::platform(); sycl::queue Q{Plt.get_devices()[0]}; - sycl::detail::queue_impl &QueueImpl = *sycl::detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = sycl::detail::getSyclObjImpl(Q); // Enable fill + set, they are implemented with the same entry point in the // backend so supporting one means supporting both. @@ -476,7 +476,7 @@ TEST(USMMemcpy2DTest, USMMemcpySupportedOnly) { sycl::platform Plt = sycl::platform(); sycl::queue Q{Plt.get_devices()[0]}; - sycl::detail::queue_impl &QueueImpl = *sycl::detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = sycl::detail::getSyclObjImpl(Q); mock::getCallbacks().set_after_callback( "urContextGetInfo", &after_urContextGetInfo); diff --git a/sycl/unittests/SYCL2020/KernelBundle.cpp b/sycl/unittests/SYCL2020/KernelBundle.cpp index 52074dbaabeb6..581df21be1917 100644 --- a/sycl/unittests/SYCL2020/KernelBundle.cpp +++ b/sycl/unittests/SYCL2020/KernelBundle.cpp @@ -108,7 +108,7 @@ TEST(KernelBundle, KernelBundleAndItsDevImageStateConsistency) { EXPECT_FALSE(ObjBundle.empty()) << "Expect non-empty obj kernel bundle"; sycl::detail::kernel_bundle_impl &ObjBundleImpl = - *sycl::detail::getSyclObjImpl(ObjBundle); + sycl::detail::getSyclObjImpl(ObjBundle); EXPECT_EQ(ObjBundleImpl.get_bundle_state(), sycl::bundle_state::object) << "Expect object device image in bundle"; @@ -116,7 +116,7 @@ TEST(KernelBundle, KernelBundleAndItsDevImageStateConsistency) { EXPECT_FALSE(LinkBundle.empty()) << "Expect non-empty exec kernel bundle"; sycl::detail::kernel_bundle_impl &LinkBundleImpl = - *sycl::detail::getSyclObjImpl(LinkBundle); + sycl::detail::getSyclObjImpl(LinkBundle); EXPECT_EQ(LinkBundleImpl.get_bundle_state(), sycl::bundle_state::executable) << "Expect executable device image in bundle"; } @@ -394,7 +394,7 @@ TEST(KernelBundle, DescendentDevice) { sycl::platform Plt = sycl::platform(); - UrPlatform = sycl::detail::getSyclObjImpl(Plt)->getHandleRef(); + UrPlatform = sycl::detail::getSyclObjImpl(Plt).getHandleRef(); mock::getCallbacks().set_after_callback("urDeviceGetInfo", &redefinedDeviceGetInfoAfter); @@ -402,7 +402,7 @@ TEST(KernelBundle, DescendentDevice) { &redefinedDevicePartitionAfter); const sycl::device Dev = sycl::platform().get_devices()[0]; - ParentDevice = sycl::detail::getSyclObjImpl(Dev)->getHandleRef(); + ParentDevice = sycl::detail::getSyclObjImpl(Dev).getHandleRef(); sycl::context Ctx{Dev}; sycl::device Subdev = Dev.create_sub_devices( @@ -524,8 +524,8 @@ TEST(KernelBundle, HasKernelForSubDevice) { sycl::platform Plt = sycl::platform(); const sycl::device Dev = Plt.get_devices()[0]; - UrPlatform = sycl::detail::getSyclObjImpl(Plt)->getHandleRef(); - ParentDevice = sycl::detail::getSyclObjImpl(Dev)->getHandleRef(); + UrPlatform = sycl::detail::getSyclObjImpl(Plt).getHandleRef(); + ParentDevice = sycl::detail::getSyclObjImpl(Dev).getHandleRef(); sycl::kernel_bundle Bundle = sycl::get_kernel_bundle( @@ -542,6 +542,6 @@ TEST(KernelBundle, HasKernelForSubDevice) { EXPECT_EQ(std::find(BundleDevs.begin(), BundleDevs.end(), SubDev), BundleDevs.end()) << "Sub-device should not be in the devices of the kernel bundle."; - EXPECT_FALSE(getSyclObjImpl(SubDev)->isRootDevice()); + EXPECT_FALSE(getSyclObjImpl(SubDev).isRootDevice()); EXPECT_TRUE(Bundle.has_kernel(KernelId, SubDev)); } diff --git a/sycl/unittests/SYCL2020/SpecializationConstant.cpp b/sycl/unittests/SYCL2020/SpecializationConstant.cpp index 1ba12741cabca..bf3ff1fe2ddb0 100644 --- a/sycl/unittests/SYCL2020/SpecializationConstant.cpp +++ b/sycl/unittests/SYCL2020/SpecializationConstant.cpp @@ -75,7 +75,7 @@ TEST(SpecializationConstant, DefaultValuesAreSet) { EXPECT_NE(DevImage, KernelBundle.end()); sycl::detail::device_image_impl &DevImageImpl = - *sycl::detail::getSyclObjImpl(*DevImage); + sycl::detail::getSyclObjImpl(*DevImage); const auto &Blob = DevImageImpl.get_spec_const_blob_ref(); int SpecConstVal1 = *reinterpret_cast(Blob.data()); @@ -105,7 +105,7 @@ TEST(SpecializationConstant, DefaultValuesAreOverriden) { EXPECT_NE(DevImage, KernelBundle.end()); sycl::detail::device_image_impl &DevImageImpl = - *sycl::detail::getSyclObjImpl(*DevImage); + sycl::detail::getSyclObjImpl(*DevImage); auto &Blob = DevImageImpl.get_spec_const_blob_ref(); int SpecConstVal1 = *reinterpret_cast(Blob.data()); int SpecConstVal2 = *(reinterpret_cast(Blob.data()) + 1); diff --git a/sycl/unittests/buffer/BufferLocation.cpp b/sycl/unittests/buffer/BufferLocation.cpp index 31ad82faa9bfa..84479a9faeebf 100644 --- a/sycl/unittests/buffer/BufferLocation.cpp +++ b/sycl/unittests/buffer/BufferLocation.cpp @@ -186,7 +186,7 @@ TEST_F(BufferTest, BufferLocationWithAnotherProp) { Acc{Buf, cgh, sycl::write_only, PL}; }) .wait(); - sycl::detail::buffer_impl &BufImpl = *sycl::detail::getSyclObjImpl(Buf); + sycl::detail::buffer_impl &BufImpl = sycl::detail::getSyclObjImpl(Buf); EXPECT_EQ( BufImpl.get_property() .get_buffer_location(), diff --git a/sycl/unittests/buffer/BufferReleaseBase.cpp b/sycl/unittests/buffer/BufferReleaseBase.cpp index 3653793e28f96..411e664118a9a 100644 --- a/sycl/unittests/buffer/BufferReleaseBase.cpp +++ b/sycl/unittests/buffer/BufferReleaseBase.cpp @@ -20,7 +20,7 @@ TEST_F(BufferDestructionCheck, BufferWithSizeOnlyDefault) { sycl::detail::buffer_impl *RawBufferImplPtr = NULL; { sycl::buffer Buf(1); - RawBufferImplPtr = &*sycl::detail::getSyclObjImpl(Buf); + RawBufferImplPtr = &sycl::detail::getSyclObjImpl(Buf); MockCmd = addCommandToBuffer(Buf, Q); } ASSERT_EQ(MockSchedulerPtr->MDeferredMemObjRelease.size(), 1u); @@ -55,7 +55,7 @@ TEST_F(BufferDestructionCheck, BufferWithSizeOnlyNonDefaultAllocator) { sycl::usm_allocator; AllocatorTypeTest allocator(Q); sycl::buffer Buf(1, allocator); - RawBufferImplPtr = &*sycl::detail::getSyclObjImpl(Buf); + RawBufferImplPtr = &sycl::detail::getSyclObjImpl(Buf); MockCmd = addCommandToBuffer(Buf, Q); EXPECT_CALL(*MockCmd, Release).Times(1); } @@ -74,7 +74,7 @@ TEST_F(BufferDestructionCheck, BufferWithSizeOnlyDefaultAllocator) { using AllocatorTypeTest = sycl::buffer_allocator; AllocatorTypeTest allocator; sycl::buffer Buf(1, allocator); - RawBufferImplPtr = &*sycl::detail::getSyclObjImpl(Buf); + RawBufferImplPtr = &sycl::detail::getSyclObjImpl(Buf); MockCmd = addCommandToBuffer(Buf, Q); EXPECT_CALL(*MockCmd, Release).Times(1); } @@ -179,7 +179,7 @@ TEST_F(BufferDestructionCheck, BufferWithIterators) { { std::vector data{3, 4}; sycl::buffer Buf(data.begin(), data.end()); - RawBufferImplPtr = &*sycl::detail::getSyclObjImpl(Buf); + RawBufferImplPtr = &sycl::detail::getSyclObjImpl(Buf); MockCmd = addCommandToBuffer(Buf, Q); EXPECT_CALL(*MockCmd, Release).Times(1); } @@ -210,17 +210,17 @@ TEST_F(BufferDestructionCheck, ReadyToReleaseLogic) { sycl::buffer Buf(1); sycl::detail::Requirement MockReq = getMockRequirement(Buf); sycl::detail::MemObjRecord *Rec = MockSchedulerPtr->getOrInsertMemObjRecord( - &*sycl::detail::getSyclObjImpl(Q), &MockReq); + &sycl::detail::getSyclObjImpl(Q), &MockReq); MockCmdWithReleaseTracking *ReadCmd = nullptr; MockCmdWithReleaseTracking *WriteCmd = nullptr; ReadCmd = - new MockCmdWithReleaseTracking(*sycl::detail::getSyclObjImpl(Q), MockReq); + new MockCmdWithReleaseTracking(sycl::detail::getSyclObjImpl(Q), MockReq); // These dummy handles are automatically cleaned up by the runtime ReadCmd->getEvent()->setHandle(reinterpret_cast( mock::createDummyHandle())); WriteCmd = - new MockCmdWithReleaseTracking(*sycl::detail::getSyclObjImpl(Q), MockReq); + new MockCmdWithReleaseTracking(sycl::detail::getSyclObjImpl(Q), MockReq); WriteCmd->getEvent()->setHandle(reinterpret_cast( mock::createDummyHandle())); ReadCmd->MEnqueueStatus = sycl::detail::EnqueueResultT::SyclEnqueueSuccess; diff --git a/sycl/unittests/buffer/BufferReleaseBase.hpp b/sycl/unittests/buffer/BufferReleaseBase.hpp index 086b3de9b3bb9..f5b162b7044da 100644 --- a/sycl/unittests/buffer/BufferReleaseBase.hpp +++ b/sycl/unittests/buffer/BufferReleaseBase.hpp @@ -54,9 +54,9 @@ class BufferDestructionCheckCommon : public ::testing::Test { MockCmdWithReleaseTracking *addCommandToBuffer(Buffer &Buf, sycl::queue &Q) { sycl::detail::Requirement MockReq = getMockRequirement(Buf); sycl::detail::MemObjRecord *Rec = MockSchedulerPtr->getOrInsertMemObjRecord( - &*sycl::detail::getSyclObjImpl(Q), &MockReq); + &sycl::detail::getSyclObjImpl(Q), &MockReq); MockCmdWithReleaseTracking *MockCmd = new MockCmdWithReleaseTracking( - *sycl::detail::getSyclObjImpl(Q), MockReq); + sycl::detail::getSyclObjImpl(Q), MockReq); std::vector ToEnqueue; MockSchedulerPtr->addNodeToLeaves(Rec, MockCmd, sycl::access::mode::write, ToEnqueue); diff --git a/sycl/unittests/kernel-and-program/Cache.cpp b/sycl/unittests/kernel-and-program/Cache.cpp index 744ac2b618de2..fe355125e8913 100644 --- a/sycl/unittests/kernel-and-program/Cache.cpp +++ b/sycl/unittests/kernel-and-program/Cache.cpp @@ -105,7 +105,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_ProgramSourceNegativeBuild) { // program Prg{Ctx}; // Prg.build_with_source(""); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); EXPECT_EQ(Cache.size(), 0U) << "Expect empty cache for source programs"; @@ -117,7 +117,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_ProgramSourceNegativeBuildWithOpts) { // program Prg{Ctx}; // Prg.build_with_source("", "-g"); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); EXPECT_EQ(Cache.size(), 0U) << "Expect empty cache for source programs"; @@ -131,7 +131,7 @@ TEST_F(KernelAndProgramCacheTest, // Prg.compile_with_source(""); // Prg.link(); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); EXPECT_EQ(Cache.size(), 0U) << "Expect empty cache for source programs"; @@ -146,7 +146,7 @@ TEST_F(KernelAndProgramCacheTest, // Prg.compile_with_source(""); // Prg.link(); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); EXPECT_EQ(Cache.size(), 0U) << "Expect empty cache for source programs"; @@ -161,7 +161,7 @@ TEST_F(KernelAndProgramCacheTest, KernelBundleInputState) { sycl::kernel_bundle KernelBundle1 = sycl::get_kernel_bundle(Ctx, {KernelID1}); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); @@ -178,7 +178,7 @@ TEST_F(KernelAndProgramCacheTest, KernelBundleObjectState) { sycl::kernel_bundle KernelBundle1 = sycl::get_kernel_bundle(Ctx, {KernelID1}); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); @@ -198,7 +198,7 @@ TEST_F(KernelAndProgramCacheTest, KernelBundleExecutableState) { sycl::kernel_bundle KernelBundle2 = sycl::get_kernel_bundle(Ctx, {KernelID2}); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); @@ -228,7 +228,7 @@ TEST_F(KernelAndProgramCacheTest, SpecConstantCacheNegative) { EXPECT_EQ(KernelBundle2.get_specialization_constant(), 70) << "Wrong specialization constant"; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); @@ -251,7 +251,7 @@ TEST_F(KernelAndProgramCacheTest, KernelBundleJoin) { KernelBundles {KernelBundle1, KernelBundle2}; sycl::kernel_bundle KernelBundle3 = sycl::join(KernelBundles); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); @@ -278,7 +278,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_ProgramBuildPositiveBuildOpts) { // Prg4.build_with_kernel_type(); // Prg5.build_with_kernel_type("-a"); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); EXPECT_EQ(Cache.size(), 3U) << "Expect non-empty cache for programs"; @@ -291,7 +291,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_ProgramBuildNegativeCompileOpts) { // Prg.compile_with_kernel_type("-g"); // Prg.link(); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); EXPECT_EQ(Cache.size(), 0U) << "Expect empty cache for programs"; @@ -304,7 +304,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_ProgramBuildNegativeLinkOpts) { // Prg.compile_with_kernel_type(); // Prg.link("-g"); - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); detail::KernelProgramCache::ProgramCache &Cache = CtxImpl.getKernelProgramCache().acquireCachedPrograms().get(); EXPECT_EQ(Cache.size(), 0U) << "Expect empty cache for programs"; @@ -313,7 +313,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_ProgramBuildNegativeLinkOpts) { // Check that kernels built without options are cached. TEST_F(KernelAndProgramCacheTest, DISABLED_KernelPositive) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -329,7 +329,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_KernelPositive) { // Check that kernels built with options are cached. TEST_F(KernelAndProgramCacheTest, DISABLED_KernelPositiveBuildOpts) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -346,7 +346,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_KernelPositiveBuildOpts) { // Check that kernels built with compile options are not cached. TEST_F(KernelAndProgramCacheTest, DISABLED_KernelNegativeCompileOpts) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -363,7 +363,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_KernelNegativeCompileOpts) { // Check that kernels built with link options are not cached. TEST_F(KernelAndProgramCacheTest, DISABLED_KernelNegativeLinkOpts) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -380,7 +380,7 @@ TEST_F(KernelAndProgramCacheTest, DISABLED_KernelNegativeLinkOpts) { // Check that kernels created from source are not cached. TEST_F(KernelAndProgramCacheTest, DISABLED_KernelNegativeSource) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -411,7 +411,7 @@ class MockKernelProgramCache : public detail::KernelProgramCache { // Check that kernels built without options are cached. TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelPositive) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -427,7 +427,7 @@ TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelPositive) { // Check that kernels built with options are cached. TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelPositiveBuildOpts) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -444,7 +444,7 @@ TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelPositiveBuildOpts) { // Check that kernels built with compile options are not cached. TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelNegativeCompileOpts) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -461,7 +461,7 @@ TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelNegativeCompileOpts) { // Check that kernels built with link options are not cached. TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelNegativeLinkOpts) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -479,7 +479,7 @@ TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelNegativeLinkOpts) { // programs. TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelNegativeLinkedProgs) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); @@ -499,7 +499,7 @@ TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelNegativeLinkedProgs) { // Check that kernels created from source are not cached. TEST_F(KernelAndProgramFastCacheTest, DISABLED_KernelNegativeSource) { context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); globalCtx.reset(new TestCtx{CtxImpl.getHandleRef()}); diff --git a/sycl/unittests/kernel-and-program/InMemCacheEviction.cpp b/sycl/unittests/kernel-and-program/InMemCacheEviction.cpp index 7bdb2aa97ebcd..6c938eabb4cba 100644 --- a/sycl/unittests/kernel-and-program/InMemCacheEviction.cpp +++ b/sycl/unittests/kernel-and-program/InMemCacheEviction.cpp @@ -109,7 +109,7 @@ TEST(InMemCacheEvictionTests, TestBasicEvictionAndLRU) { sycl::platform Plt{sycl::platform()}; sycl::context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); queue q(Ctx, default_selector_v); // One program is of 10000 bytes, so 20005 eviction threshold can @@ -161,7 +161,7 @@ TEST(InMemCacheEvictionTests, TestConcurrentEvictionSameQueue) { sycl::platform Plt{sycl::platform()}; context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); queue q(Ctx, default_selector_v); // One program is of 10000 bytes, so 20005 eviction threshold can @@ -196,7 +196,7 @@ TEST(InMemCacheEvictionTests, TestConcurrentEvictionSmallCache) { &redefinedProgramGetInfoAfter); context Ctx{platform()}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); queue q(Ctx, default_selector_v); // One program is of 10000 bytes, so 100 eviction threshold will diff --git a/sycl/unittests/kernel-and-program/KernelInfo.cpp b/sycl/unittests/kernel-and-program/KernelInfo.cpp index b23e7b890b11a..025493e12d7f4 100644 --- a/sycl/unittests/kernel-and-program/KernelInfo.cpp +++ b/sycl/unittests/kernel-and-program/KernelInfo.cpp @@ -38,7 +38,7 @@ static ur_result_t redefinedKernelGetInfo(void *pParams) { << "Unexpected kernel info requested"; auto *Result = reinterpret_cast(*params.ppPropValue); ur_context_handle_t UrContext = - detail::getSyclObjImpl(TestContext->Ctx)->getHandleRef(); + detail::getSyclObjImpl(TestContext->Ctx).getHandleRef(); *Result = UrContext; return UR_RESULT_SUCCESS; } diff --git a/sycl/unittests/kernel-and-program/KernelRelease.cpp b/sycl/unittests/kernel-and-program/KernelRelease.cpp index 17365053fdd61..045d208f5e3cf 100644 --- a/sycl/unittests/kernel-and-program/KernelRelease.cpp +++ b/sycl/unittests/kernel-and-program/KernelRelease.cpp @@ -46,7 +46,7 @@ static ur_result_t redefinedKernelGetInfo(void *pParams) { EXPECT_EQ(*params.ppropName, UR_KERNEL_INFO_CONTEXT) << "Unexpected kernel info requested"; auto *Result = reinterpret_cast(*params.ppPropValue); - auto UrContext = detail::getSyclObjImpl(TestContext->Ctx)->getHandleRef(); + auto UrContext = detail::getSyclObjImpl(TestContext->Ctx).getHandleRef(); *Result = UrContext; return UR_RESULT_SUCCESS; } diff --git a/sycl/unittests/kernel-and-program/MultipleDevsCache.cpp b/sycl/unittests/kernel-and-program/MultipleDevsCache.cpp index 14f8002f8d484..c2172dd65536b 100644 --- a/sycl/unittests/kernel-and-program/MultipleDevsCache.cpp +++ b/sycl/unittests/kernel-and-program/MultipleDevsCache.cpp @@ -152,7 +152,7 @@ TEST_P(MultipleDeviceCacheTest, ProgramRetain) { // on number of device images. This test has one image, but other tests can // create other images. Additional variable is added to control count of // urProgramRetain calls. - detail::kernel_bundle_impl &BundleImpl = *getSyclObjImpl(Bundle); + detail::kernel_bundle_impl &BundleImpl = getSyclObjImpl(Bundle); // Bundle should only contain a single image, specifically the one with // MultipleDevsCacheTestKernel. @@ -162,7 +162,7 @@ TEST_P(MultipleDeviceCacheTest, ProgramRetain) { EXPECT_EQ(RetainCounter, NumRetains) << "Expect " << NumRetains << " piProgramRetain calls"; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Context); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Context); detail::KernelProgramCache::KernelCacheT &KernelCache = CtxImpl.getKernelProgramCache().acquireKernelsPerProgramCache().get(); diff --git a/sycl/unittests/kernel-and-program/OutOfResources.cpp b/sycl/unittests/kernel-and-program/OutOfResources.cpp index 75534205a4b9b..6bfacda3d967f 100644 --- a/sycl/unittests/kernel-and-program/OutOfResources.cpp +++ b/sycl/unittests/kernel-and-program/OutOfResources.cpp @@ -55,7 +55,7 @@ TEST_P(OutOfResourcesTestSuite, urProgramCreate) { sycl::platform Plt{sycl::platform()}; sycl::context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); queue q(Ctx, default_selector_v); int runningTotal = 0; @@ -153,7 +153,7 @@ TEST_P(OutOfResourcesTestSuite, urProgramLink) { sycl::platform Plt{sycl::platform()}; sycl::context Ctx{Plt}; - detail::context_impl &CtxImpl = *detail::getSyclObjImpl(Ctx); + detail::context_impl &CtxImpl = detail::getSyclObjImpl(Ctx); queue q(Ctx, default_selector_v); // Put some programs in the cache q.single_task([] {}); diff --git a/sycl/unittests/kernel-and-program/PersistentDeviceCodeCache.cpp b/sycl/unittests/kernel-and-program/PersistentDeviceCodeCache.cpp index d760b3a748c16..f6b0487cd7d6e 100644 --- a/sycl/unittests/kernel-and-program/PersistentDeviceCodeCache.cpp +++ b/sycl/unittests/kernel-and-program/PersistentDeviceCodeCache.cpp @@ -224,7 +224,7 @@ class PersistentDeviceCodeCache std::to_string(ThreadCount)}; DeviceCodeID = ProgramID; std::string ItemDir = detail::PersistentDeviceCodeCache::getCacheItemPath( - *getSyclObjImpl(Dev), {&Img}, + getSyclObjImpl(Dev), {&Img}, {'S', 'p', 'e', 'c', 'C', 'o', 'n', 's', 't', ProgramID}, BuildOptions); ASSERT_NO_ERROR(llvm::sys::fs::remove_directories(ItemDir)); @@ -286,7 +286,7 @@ TEST_P(PersistentDeviceCodeCache, KeysWithNullTermSymbol) { std::string Key{'1', '\0', '3', '4', '\0'}; std::vector SpecConst(Key.begin(), Key.end()); std::string ItemDir = detail::PersistentDeviceCodeCache::getCacheItemPath( - *getSyclObjImpl(Dev), {&Img}, SpecConst, Key); + getSyclObjImpl(Dev), {&Img}, SpecConst, Key); ASSERT_NO_ERROR(llvm::sys::fs::remove_directories(ItemDir)); detail::PersistentDeviceCodeCache::putItemToDisc({Dev}, {&Img}, SpecConst, @@ -336,7 +336,7 @@ TEST_P(PersistentDeviceCodeCache, MultipleImages) { B->getRawData().EntriesBegin->GetName()) < 0; }); std::string ItemDir = detail::PersistentDeviceCodeCache::getCacheItemPath( - *getSyclObjImpl(Dev), Imgs, {}, BuildOptions); + getSyclObjImpl(Dev), Imgs, {}, BuildOptions); ASSERT_NO_ERROR(llvm::sys::fs::remove_directories(ItemDir)); detail::PersistentDeviceCodeCache::putItemToDisc({Dev}, Imgs, {}, @@ -389,7 +389,7 @@ TEST_P(PersistentDeviceCodeCache, ConcurentReadWriteCacheBigItem) { TEST_P(PersistentDeviceCodeCache, CorruptedCacheFiles) { std::string BuildOptions{"--corrupted-file"}; std::string ItemDir = detail::PersistentDeviceCodeCache::getCacheItemPath( - *getSyclObjImpl(Dev), {&Img}, {}, BuildOptions); + getSyclObjImpl(Dev), {&Img}, {}, BuildOptions); ASSERT_NO_ERROR(llvm::sys::fs::remove_directories(ItemDir)); // Only source file is present @@ -474,7 +474,7 @@ TEST_P(PersistentDeviceCodeCache, CorruptedCacheFiles) { TEST_P(PersistentDeviceCodeCache, LockFile) { std::string BuildOptions{"--obsolete-lock"}; std::string ItemDir = detail::PersistentDeviceCodeCache::getCacheItemPath( - *getSyclObjImpl(Dev), {&Img}, {}, BuildOptions); + getSyclObjImpl(Dev), {&Img}, {}, BuildOptions); ASSERT_NO_ERROR(llvm::sys::fs::remove_directories(ItemDir)); // Create 1st cahe item @@ -524,7 +524,7 @@ TEST_P(PersistentDeviceCodeCache, LockFile) { TEST_P(PersistentDeviceCodeCache, AccessDeniedForCacheDir) { std::string BuildOptions{"--build-options"}; std::string ItemDir = detail::PersistentDeviceCodeCache::getCacheItemPath( - *getSyclObjImpl(Dev), {&Img}, {}, BuildOptions); + getSyclObjImpl(Dev), {&Img}, {}, BuildOptions); ASSERT_NO_ERROR(llvm::sys::fs::remove_directories(ItemDir)); detail::PersistentDeviceCodeCache::putItemToDisc({Dev}, {&Img}, {}, BuildOptions, NativeProg); @@ -580,7 +580,7 @@ TEST_P(PersistentDeviceCodeCache, BasicEviction) { BuildOptions, NativeProg); std::string ItemDir = detail::PersistentDeviceCodeCache::getCacheItemPath( - *getSyclObjImpl(Dev), {&Img}, {}, BuildOptions); + getSyclObjImpl(Dev), {&Img}, {}, BuildOptions); size_t SizeOfOneEntry = (size_t)(detail::getDirectorySize(ItemDir)); detail::PersistentDeviceCodeCache::putItemToDisc({Dev}, {&Img}, {}, diff --git a/sycl/unittests/program_manager/BuildLog.cpp b/sycl/unittests/program_manager/BuildLog.cpp index 7cca8e81e502a..29d68b23cfb14 100644 --- a/sycl/unittests/program_manager/BuildLog.cpp +++ b/sycl/unittests/program_manager/BuildLog.cpp @@ -63,7 +63,7 @@ TEST(BuildLog, OutputNothingOnLevel1) { sycl::context Ctx{Dev}; sycl::queue Queue{Ctx, Dev}; - context_impl &ContextImpl = *getSyclObjImpl(Ctx); + context_impl &ContextImpl = getSyclObjImpl(Ctx); // Make sure no kernels are cached ContextImpl.getKernelProgramCache().reset(); @@ -90,7 +90,7 @@ TEST(BuildLog, OutputLogOnLevel2) { sycl::context Ctx{Dev}; sycl::queue Queue{Ctx, Dev}; - context_impl &ContextImpl = *getSyclObjImpl(Ctx); + context_impl &ContextImpl = getSyclObjImpl(Ctx); // Make sure no kernels are cached ContextImpl.getKernelProgramCache().reset(); diff --git a/sycl/unittests/program_manager/Cleanup.cpp b/sycl/unittests/program_manager/Cleanup.cpp index 083fdf05adc17..35475b2ec5e04 100644 --- a/sycl/unittests/program_manager/Cleanup.cpp +++ b/sycl/unittests/program_manager/Cleanup.cpp @@ -414,14 +414,14 @@ TEST(ImageRemoval, NativePrograms) { const sycl::device Dev = Plt.get_devices()[0]; sycl::queue Queue{Dev}; auto Ctx = Queue.get_context(); - auto ProgramA = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx), - *sycl::detail::getSyclObjImpl(Dev), + auto ProgramA = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx), + sycl::detail::getSyclObjImpl(Dev), generateRefName("A", "Kernel")); - auto ProgramB = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx), - *sycl::detail::getSyclObjImpl(Dev), + auto ProgramB = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx), + sycl::detail::getSyclObjImpl(Dev), generateRefName("B", "Kernel")); - std::ignore = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx), - *sycl::detail::getSyclObjImpl(Dev), + std::ignore = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx), + sycl::detail::getSyclObjImpl(Dev), generateRefName("C", "Kernel")); EXPECT_EQ(PM.getNativePrograms().size(), diff --git a/sycl/unittests/program_manager/DynamicLinking/DynamicLinking.cpp b/sycl/unittests/program_manager/DynamicLinking/DynamicLinking.cpp index 51bf71065f65e..fc720d8de8e26 100644 --- a/sycl/unittests/program_manager/DynamicLinking/DynamicLinking.cpp +++ b/sycl/unittests/program_manager/DynamicLinking/DynamicLinking.cpp @@ -406,7 +406,7 @@ getImage(const sycl::kernel_bundle &KernelBundle, std::find_if(KernelBundle.begin(), KernelBundle.end(), [&](auto Image) { return Image.has_kernel(KernelID); }); EXPECT_NE(It, KernelBundle.end()); - return *sycl::detail::getSyclObjImpl(*It); + return sycl::detail::getSyclObjImpl(*It); } template diff --git a/sycl/unittests/program_manager/SubDevices.cpp b/sycl/unittests/program_manager/SubDevices.cpp index 8c9913f412178..9a4846ad0d3ca 100644 --- a/sycl/unittests/program_manager/SubDevices.cpp +++ b/sycl/unittests/program_manager/SubDevices.cpp @@ -142,9 +142,9 @@ TEST(SubDevices, DISABLED_BuildProgramForSubdevices) { // Create 2 sub-devices and use first platform device as a root device const sycl::device device = Plt.get_devices()[0]; // Initialize root device - rootDevice = sycl::detail::getSyclObjImpl(device)->getHandleRef(); + rootDevice = sycl::detail::getSyclObjImpl(device).getHandleRef(); // Initialize sub-devices - sycl::detail::platform_impl &PltImpl = *sycl::detail::getSyclObjImpl(Plt); + sycl::detail::platform_impl &PltImpl = sycl::detail::getSyclObjImpl(Plt); sycl::detail::device_impl &subDev1 = PltImpl.getOrMakeDeviceImpl(urSubDev1); sycl::detail::device_impl &subDev2 = PltImpl.getOrMakeDeviceImpl(urSubDev2); sycl::context Ctx{ @@ -159,12 +159,12 @@ TEST(SubDevices, DISABLED_BuildProgramForSubdevices) { // Build program via getBuiltPIProgram API sycl::detail::ProgramManager::getInstance().getBuiltURProgram( - *sycl::detail::getSyclObjImpl(Ctx), subDev1, + sycl::detail::getSyclObjImpl(Ctx), subDev1, sycl::detail::KernelInfo::getName()); // This call should re-use built binary from the cache. If urProgramBuild is // called again, the test will fail as second call of redefinedProgramBuild sycl::detail::ProgramManager::getInstance().getBuiltURProgram( - *sycl::detail::getSyclObjImpl(Ctx), subDev2, + sycl::detail::getSyclObjImpl(Ctx), subDev2, sycl::detail::KernelInfo::getName()); } @@ -178,7 +178,7 @@ TEST(SubDevices, BuildProgramForSubSubDevices) { &redefinedProgramBuildExp); sycl::platform Plt = sycl::platform(); sycl::device root = Plt.get_devices()[0]; - sycl::detail::platform_impl &PltImpl = *sycl::detail::getSyclObjImpl(Plt); + sycl::detail::platform_impl &PltImpl = sycl::detail::getSyclObjImpl(Plt); // Initialize sub-sub-devices sycl::detail::device_impl &SubSub1 = PltImpl.getOrMakeDeviceImpl(urSubSubDev1); @@ -188,10 +188,10 @@ TEST(SubDevices, BuildProgramForSubSubDevices) { sycl::context Ctx{root}; buildCallCount = 0; sycl::detail::ProgramManager::getInstance().getBuiltURProgram( - *sycl::detail::getSyclObjImpl(Ctx), SubSub1, + sycl::detail::getSyclObjImpl(Ctx), SubSub1, sycl::detail::KernelInfo::getName()); sycl::detail::ProgramManager::getInstance().getBuiltURProgram( - *sycl::detail::getSyclObjImpl(Ctx), SubSub2, + sycl::detail::getSyclObjImpl(Ctx), SubSub2, sycl::detail::KernelInfo::getName()); // Check that program is built only once. diff --git a/sycl/unittests/program_manager/arg_mask/EliminatedArgMask.cpp b/sycl/unittests/program_manager/arg_mask/EliminatedArgMask.cpp index d2e5d092c1150..11261338ca1a8 100644 --- a/sycl/unittests/program_manager/arg_mask/EliminatedArgMask.cpp +++ b/sycl/unittests/program_manager/arg_mask/EliminatedArgMask.cpp @@ -220,7 +220,7 @@ TEST(EliminatedArgMask, KernelBundleWith2Kernels) { const sycl::detail::KernelArgMask *EliminatedArgMask = getKernelArgMaskFromBundle(KernelBundle, - *sycl::detail::getSyclObjImpl(Queue)); + sycl::detail::getSyclObjImpl(Queue)); assert(EliminatedArgMask && "EliminatedArgMask must be not null"); sycl::detail::KernelArgMask ExpElimArgMask(EAMTestKernelNumArgs); @@ -305,8 +305,8 @@ TEST(EliminatedArgMask, ReuseOfHandleValues) { const sycl::device Dev = Plt.get_devices()[0]; sycl::queue Queue{Dev}; auto Ctx = Queue.get_context(); - ProgBefore = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx), - *sycl::detail::getSyclObjImpl(Dev), Name) + ProgBefore = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx), + sycl::detail::getSyclObjImpl(Dev), Name) .release(); auto Mask = PM.getEliminatedKernelArgMask(ProgBefore, Name); EXPECT_NE(Mask, nullptr); @@ -331,8 +331,8 @@ TEST(EliminatedArgMask, ReuseOfHandleValues) { const sycl::device Dev = Plt.get_devices()[0]; sycl::queue Queue{Dev}; auto Ctx = Queue.get_context(); - ProgAfter = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx), - *sycl::detail::getSyclObjImpl(Dev), Name) + ProgAfter = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx), + sycl::detail::getSyclObjImpl(Dev), Name) .release(); auto Mask = PM.getEliminatedKernelArgMask(ProgAfter, Name); EXPECT_NE(Mask, nullptr); diff --git a/sycl/unittests/queue/DeviceCheck.cpp b/sycl/unittests/queue/DeviceCheck.cpp index 49ff4fd64f79e..6817df695f75c 100644 --- a/sycl/unittests/queue/DeviceCheck.cpp +++ b/sycl/unittests/queue/DeviceCheck.cpp @@ -87,7 +87,7 @@ TEST(QueueDeviceCheck, CheckDeviceRestriction) { &redefinedPlatformGet); sycl::platform Plt = sycl::platform(); - UrPlatform = detail::getSyclObjImpl(Plt)->getHandleRef(); + UrPlatform = detail::getSyclObjImpl(Plt).getHandleRef(); context DefaultCtx = Plt.ext_oneapi_get_default_context(); device Dev = DefaultCtx.get_devices()[0]; @@ -105,7 +105,7 @@ TEST(QueueDeviceCheck, CheckDeviceRestriction) { } // Device is a descendant of a member of the context. { - ParentDevice = detail::getSyclObjImpl(Dev)->getHandleRef(); + ParentDevice = detail::getSyclObjImpl(Dev).getHandleRef(); std::vector Subdevices = Dev.create_sub_devices(2); queue Q{Subdevices[0]}; diff --git a/sycl/unittests/queue/GetProfilingInfo.cpp b/sycl/unittests/queue/GetProfilingInfo.cpp index 31c403844e581..1f7d3bfbd43ea 100644 --- a/sycl/unittests/queue/GetProfilingInfo.cpp +++ b/sycl/unittests/queue/GetProfilingInfo.cpp @@ -287,7 +287,7 @@ TEST(GetProfilingInfo, check_if_now_dead_queue_property_not_set) { } } // The test passes without this, but keep it still, just in case. - sycl::detail::getSyclObjImpl(Ctx)->getKernelProgramCache().reset(); + sycl::detail::getSyclObjImpl(Ctx).getKernelProgramCache().reset(); } bool DeviceTimerCalled; diff --git a/sycl/unittests/queue/Hash.cpp b/sycl/unittests/queue/Hash.cpp index 227b07f01d63d..2ba43d9296079 100644 --- a/sycl/unittests/queue/Hash.cpp +++ b/sycl/unittests/queue/Hash.cpp @@ -9,6 +9,6 @@ using namespace sycl; TEST(QueueHash, QueueHashUsesID) { unittest::UrMock<> Mock; queue Q; - unsigned long long ID = detail::getSyclObjImpl(Q)->getQueueID(); + unsigned long long ID = detail::getSyclObjImpl(Q).getQueueID(); ASSERT_EQ(std::hash{}(ID), std::hash{}(Q)); } diff --git a/sycl/unittests/queue/USM.cpp b/sycl/unittests/queue/USM.cpp index 26518f72a8db9..d2015e933cd7a 100644 --- a/sycl/unittests/queue/USM.cpp +++ b/sycl/unittests/queue/USM.cpp @@ -25,7 +25,7 @@ ur_event_handle_t MEMCPY = nullptr; ur_event_handle_t MEMSET = nullptr; template auto getVal(T obj) { - return detail::getSyclObjImpl(obj)->getHandle(); + return detail::getSyclObjImpl(obj).getHandle(); } ur_result_t redefinedEnqueueEventsWaitAfter(void *pParams) { diff --git a/sycl/unittests/queue/Wait.cpp b/sycl/unittests/queue/Wait.cpp index cd1e60311bfba..f838d7d000d73 100644 --- a/sycl/unittests/queue/Wait.cpp +++ b/sycl/unittests/queue/Wait.cpp @@ -123,7 +123,7 @@ TEST(QueueWait, QueueWaitTest) { event DepEvent = submitTask(Q, Buf); // Manually block the next commands. - detail::event_impl &DepEventImpl = *detail::getSyclObjImpl(DepEvent); + detail::event_impl &DepEventImpl = detail::getSyclObjImpl(DepEvent); auto *Cmd = static_cast(DepEventImpl.getCommand()); Cmd->MIsBlockable = true; Cmd->MEnqueueStatus = detail::EnqueueResultT::SyclEnqueueBlocked; diff --git a/sycl/unittests/scheduler/AccessorDefaultCtor.cpp b/sycl/unittests/scheduler/AccessorDefaultCtor.cpp index 319e442eb6aee..ae9beaa7de1fd 100644 --- a/sycl/unittests/scheduler/AccessorDefaultCtor.cpp +++ b/sycl/unittests/scheduler/AccessorDefaultCtor.cpp @@ -17,7 +17,7 @@ TEST_F(SchedulerTest, AccDefaultCtorDoesntAffectDepGraph) { queue QueueDev(context(Plt), default_selector_v); MockScheduler MS; - detail::queue_impl &QueueDevImpl = *detail::getSyclObjImpl(QueueDev); + detail::queue_impl &QueueDevImpl = detail::getSyclObjImpl(QueueDev); std::vector ToEnqueue; diff --git a/sycl/unittests/scheduler/AllocaLinking.cpp b/sycl/unittests/scheduler/AllocaLinking.cpp index 2c02aed1b896f..cc2d5f80e7909 100644 --- a/sycl/unittests/scheduler/AllocaLinking.cpp +++ b/sycl/unittests/scheduler/AllocaLinking.cpp @@ -50,7 +50,7 @@ TEST_F(SchedulerTest, AllocaLinking) { sycl::queue Q{sycl::platform().get_devices()[0]}; mock::getCallbacks().set_after_callback("urDeviceGetInfo", &redefinedDeviceGetInfoAfter); - sycl::detail::queue_impl &QImpl = *detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QImpl = detail::getSyclObjImpl(Q); MockScheduler MS; // Should not be linked w/o host unified memory or pinned host memory diff --git a/sycl/unittests/scheduler/BarrierDependencies.cpp b/sycl/unittests/scheduler/BarrierDependencies.cpp index 672e6285b9390..7fcb8059ec54a 100644 --- a/sycl/unittests/scheduler/BarrierDependencies.cpp +++ b/sycl/unittests/scheduler/BarrierDependencies.cpp @@ -69,7 +69,7 @@ TEST_F(SchedulerTest, BarrierWithDependsOn) { auto EventA = QueueA.submit([&](sycl::handler &h) { h.ext_oneapi_barrier(); }); - detail::event_impl &EventAImpl = *detail::getSyclObjImpl(EventA); + detail::event_impl &EventAImpl = detail::getSyclObjImpl(EventA); // it means that command is enqueued ASSERT_NE(EventAImpl.getHandle(), nullptr); @@ -82,7 +82,7 @@ TEST_F(SchedulerTest, BarrierWithDependsOn) { h.depends_on(EventA); h.ext_oneapi_barrier(); }); - detail::event_impl &EventBImpl = *detail::getSyclObjImpl(EventB); + detail::event_impl &EventBImpl = detail::getSyclObjImpl(EventB); // it means that command is enqueued ASSERT_NE(EventBImpl.getHandle(), nullptr); @@ -116,8 +116,8 @@ TEST_F(SchedulerTest, BarrierWaitListWithDependsOn) { QueueA.submit([&](sycl::handler &h) { h.ext_oneapi_barrier(); }); auto EventA2 = QueueA.submit([&](sycl::handler &h) { h.ext_oneapi_barrier(); }); - detail::event_impl &EventAImpl = *detail::getSyclObjImpl(EventA); - detail::event_impl &EventA2Impl = *detail::getSyclObjImpl(EventA2); + detail::event_impl &EventAImpl = detail::getSyclObjImpl(EventA); + detail::event_impl &EventA2Impl = detail::getSyclObjImpl(EventA2); // it means that command is enqueued ASSERT_NE(EventAImpl.getHandle(), nullptr); ASSERT_NE(EventA2Impl.getHandle(), nullptr); @@ -131,7 +131,7 @@ TEST_F(SchedulerTest, BarrierWaitListWithDependsOn) { h.depends_on(EventA); h.ext_oneapi_barrier({EventA2}); }); - detail::event_impl &EventBImpl = *detail::getSyclObjImpl(EventB); + detail::event_impl &EventBImpl = detail::getSyclObjImpl(EventB); // it means that command is enqueued ASSERT_NE(EventBImpl.getHandle(), nullptr); diff --git a/sycl/unittests/scheduler/BlockedCommands.cpp b/sycl/unittests/scheduler/BlockedCommands.cpp index 7f2374e14c986..634de55f805f5 100644 --- a/sycl/unittests/scheduler/BlockedCommands.cpp +++ b/sycl/unittests/scheduler/BlockedCommands.cpp @@ -25,7 +25,7 @@ TEST_F(SchedulerTest, DISABLED_BlockedCommands) { sycl::unittest::UrMock<> Mock; sycl::queue Q{sycl::platform().get_devices()[0], MAsyncHandler}; - sycl::detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Q); MockCommand MockCmd(&QueueImpl); MockCmd.MEnqueueStatus = detail::EnqueueResultT::SyclEnqueueBlocked; @@ -65,7 +65,7 @@ TEST_F(SchedulerTest, DISABLED_BlockedCommands) { TEST_F(SchedulerTest, DontEnqueueDepsIfOneOfThemIsBlocked) { sycl::unittest::UrMock<> Mock; sycl::queue Q{sycl::platform().get_devices()[0], MAsyncHandler}; - sycl::detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Q); MockCommand A(&QueueImpl); A.MEnqueueStatus = detail::EnqueueResultT::SyclEnqueueReady; @@ -116,7 +116,7 @@ TEST_F(SchedulerTest, DontEnqueueDepsIfOneOfThemIsBlocked) { TEST_F(SchedulerTest, EnqueueBlockedCommandEarlyExit) { sycl::unittest::UrMock<> Mock; sycl::queue Q{sycl::platform().get_devices()[0], MAsyncHandler}; - sycl::detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Q); MockCommand A(&QueueImpl); A.MEnqueueStatus = detail::EnqueueResultT::SyclEnqueueBlocked; @@ -163,7 +163,7 @@ TEST_F(SchedulerTest, EnqueueBlockedCommandEarlyExit) { TEST_F(SchedulerTest, EnqueueHostDependency) { sycl::unittest::UrMock<> Mock; sycl::queue Q{sycl::platform().get_devices()[0], MAsyncHandler}; - sycl::detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Q); MockCommand A(&QueueImpl); A.MEnqueueStatus = detail::EnqueueResultT::SyclEnqueueReady; diff --git a/sycl/unittests/scheduler/Commands.cpp b/sycl/unittests/scheduler/Commands.cpp index a5b00fa100b32..385378b385d43 100644 --- a/sycl/unittests/scheduler/Commands.cpp +++ b/sycl/unittests/scheduler/Commands.cpp @@ -55,10 +55,10 @@ TEST_F(SchedulerTest, WaitEmptyEventWithBarrier) { &redefineEnqueueEventsWaitWithBarrierExt); queue Queue{Plt.get_devices()[0]}; - detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Queue); + detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Queue); queue_global_context = - detail::getSyclObjImpl(Queue.get_context())->getHandleRef(); + detail::getSyclObjImpl(Queue.get_context()).getHandleRef(); mock::getCallbacks().set_before_callback("urEventGetInfo", &redefineUrEventGetInfo); diff --git a/sycl/unittests/scheduler/CommandsWaitForEvents.cpp b/sycl/unittests/scheduler/CommandsWaitForEvents.cpp index 3e6b60bbaec5a..111f365c0a8c5 100644 --- a/sycl/unittests/scheduler/CommandsWaitForEvents.cpp +++ b/sycl/unittests/scheduler/CommandsWaitForEvents.cpp @@ -34,8 +34,8 @@ struct TestCtx { bool EventCtx2WasWaited = false; TestCtx(queue &Queue1, queue &Queue2) - : Q1(Queue1), Q2(Queue2), Ctx1(*detail::getSyclObjImpl(Q1.get_context())), - Ctx2(*detail::getSyclObjImpl(Q2.get_context())) { + : Q1(Queue1), Q2(Queue2), Ctx1(detail::getSyclObjImpl(Q1.get_context())), + Ctx2(detail::getSyclObjImpl(Q2.get_context())) { EventCtx1 = mock::createDummyHandle(); EventCtx2 = mock::createDummyHandle(); @@ -136,8 +136,7 @@ TEST_F(SchedulerTest, StreamAUXCmdsWait) { sycl::unittest::UrMock<> Mock; sycl::platform Plt = sycl::platform(); sycl::queue Q(Plt.get_devices()[0]); - auto &QueueImpl = - static_cast(*detail::getSyclObjImpl(Q)); + auto &QueueImpl = static_cast(detail::getSyclObjImpl(Q)); ASSERT_TRUE(QueueImpl.MStreamsServiceEvents.empty()) << "No stream service events are expected at the beggining"; @@ -152,7 +151,7 @@ TEST_F(SchedulerTest, StreamAUXCmdsWait) { << "Expected 1 service stream event"; auto &EventImplProxy = - static_cast(*detail::getSyclObjImpl(Event)); + static_cast(detail::getSyclObjImpl(Event)); ASSERT_EQ(EventImplProxy.MWeakPostCompleteEvents.size(), 1u) << "Expected 1 post complete event"; @@ -167,8 +166,7 @@ TEST_F(SchedulerTest, StreamAUXCmdsWait) { sycl::unittest::UrMock<> Mock; sycl::platform Plt = sycl::platform(); sycl::queue Q(Plt.get_devices()[0]); - auto &QueueImpl = - static_cast(*detail::getSyclObjImpl(Q)); + auto &QueueImpl = static_cast(detail::getSyclObjImpl(Q)); mock::getCallbacks().set_before_callback("urEventWait", &urEventsWaitRedefineCheckCalled); diff --git a/sycl/unittests/scheduler/EnqueueWithDependsOnDeps.cpp b/sycl/unittests/scheduler/EnqueueWithDependsOnDeps.cpp index 8f44a46ffbb62..e7e921196b2b2 100644 --- a/sycl/unittests/scheduler/EnqueueWithDependsOnDeps.cpp +++ b/sycl/unittests/scheduler/EnqueueWithDependsOnDeps.cpp @@ -20,7 +20,6 @@ namespace { using namespace sycl; using EventImplPtr = std::shared_ptr; -using sycl::detail::getSyclObjImpl; constexpr auto DisableCleanupName = "SYCL_DISABLE_EXECUTION_GRAPH_CLEANUP"; @@ -46,7 +45,7 @@ class DependsOnTests : public ::testing::Test { GTEST_SKIP(); queue QueueDev(context(Plt), default_selector_v); - QueueDevImpl = getSyclObjImpl(QueueDev); + QueueDevImpl = detail::getSyclObjImpl(QueueDev).shared_from_this(); } void TearDown() {} @@ -327,7 +326,7 @@ TEST_F(DependsOnTests, ShortcutFunctionWithWaitList) { // Mock up an incomplete host task auto HostTaskEvent = Queue.submit([&](sycl::handler &cgh) { cgh.host_task([=]() {}); }); - detail::event_impl &HostTaskEventImpl = *getSyclObjImpl(HostTaskEvent); + detail::event_impl &HostTaskEventImpl = detail::getSyclObjImpl(HostTaskEvent); HostTaskEvent.wait(); auto *Cmd = static_cast(HostTaskEventImpl.getCommand()); ASSERT_NE(Cmd, nullptr); @@ -339,7 +338,8 @@ TEST_F(DependsOnTests, ShortcutFunctionWithWaitList) { cgh.depends_on(HostTaskEvent); cgh.single_task([] {}); }); - detail::event_impl &SingleTaskEventImpl = *getSyclObjImpl(SingleTaskEvent); + detail::event_impl &SingleTaskEventImpl = + detail::getSyclObjImpl(SingleTaskEvent); EXPECT_EQ(SingleTaskEventImpl.getHandle(), nullptr); // make HostTaskEvent completed, so SingleTaskEvent can be enqueued @@ -371,7 +371,7 @@ TEST_F(DependsOnTests, BarrierWithWaitList) { auto HostTaskEvent = Queue.submit([&](sycl::handler &cgh) { cgh.host_task([=]() {}); }); - detail::event_impl &HostTaskEventImpl = *getSyclObjImpl(HostTaskEvent); + detail::event_impl &HostTaskEventImpl = detail::getSyclObjImpl(HostTaskEvent); HostTaskEvent.wait(); auto *Cmd = static_cast(HostTaskEventImpl.getCommand()); ASSERT_NE(Cmd, nullptr); @@ -383,7 +383,8 @@ TEST_F(DependsOnTests, BarrierWithWaitList) { cgh.depends_on(HostTaskEvent); cgh.single_task([] {}); }); - detail::event_impl &SingleTaskEventImpl = *getSyclObjImpl(SingleTaskEvent); + detail::event_impl &SingleTaskEventImpl = + detail::getSyclObjImpl(SingleTaskEvent); EXPECT_EQ(SingleTaskEventImpl.getHandle(), nullptr); HostTaskEventImpl.setComplete(); diff --git a/sycl/unittests/scheduler/FailedCommands.cpp b/sycl/unittests/scheduler/FailedCommands.cpp index 9104c1d9e4a10..7512e7d79be8d 100644 --- a/sycl/unittests/scheduler/FailedCommands.cpp +++ b/sycl/unittests/scheduler/FailedCommands.cpp @@ -18,7 +18,7 @@ TEST_F(SchedulerTest, FailedDependency) { unittest::UrMock<> Mock; platform Plt = sycl::platform(); queue Queue(context(Plt), default_selector_v); - sycl::detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Queue); + sycl::detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Queue); detail::Requirement MockReq = getMockRequirement(); MockCommand MDep(&QueueImpl); diff --git a/sycl/unittests/scheduler/GraphCleanup.cpp b/sycl/unittests/scheduler/GraphCleanup.cpp index 23e7f65e3823e..413e7aa77b381 100644 --- a/sycl/unittests/scheduler/GraphCleanup.cpp +++ b/sycl/unittests/scheduler/GraphCleanup.cpp @@ -159,7 +159,7 @@ static void checkCleanupOnEnqueue(MockScheduler &MS, MS.addCopyBack(&MockReq); verifyCleanup(Record, AllocaCmd, MockCmd, CommandDeleted); - MS.removeRecordForMemObj(&*detail::getSyclObjImpl(Buf)); + MS.removeRecordForMemObj(&detail::getSyclObjImpl(Buf)); } static void checkCleanupOnLeafUpdate( @@ -191,7 +191,7 @@ static void checkCleanupOnLeafUpdate( EXPECT_FALSE(CommandDeleted); SchedulerCall(Record); EXPECT_TRUE(CommandDeleted); - MS.removeRecordForMemObj(&*detail::getSyclObjImpl(Buf)); + MS.removeRecordForMemObj(&detail::getSyclObjImpl(Buf)); } TEST_F(SchedulerTest, PostEnqueueCleanup) { @@ -210,13 +210,13 @@ TEST_F(SchedulerTest, PostEnqueueCleanup) { context Ctx{Plt}; queue Queue{Ctx, default_selector_v}; - detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Queue); + detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Queue); MockScheduler MS; buffer Buf{range<1>(1)}; detail::Requirement MockReq = getMockRequirement(Buf); MockReq.MDims = 1; - MockReq.MSYCLMemObj = &*detail::getSyclObjImpl(Buf); + MockReq.MSYCLMemObj = &detail::getSyclObjImpl(Buf); checkCleanupOnEnqueue(MS, QueueImpl, Buf, MockReq); std::vector ToEnqueue; @@ -278,7 +278,7 @@ TEST_F(SchedulerTest, HostTaskCleanup) { event Event = Queue.submit([&](sycl::handler &cgh) { cgh.host_task([&]() { std::unique_lock Lock{Mutex}; }); }); - detail::event_impl &EventImpl = *detail::getSyclObjImpl(Event); + detail::event_impl &EventImpl = detail::getSyclObjImpl(Event); // Unlike other commands, host task should be kept alive until its // completion. @@ -311,7 +311,7 @@ TEST_F(SchedulerTest, StreamBufferDeallocation) { platform Plt = sycl::platform(); context Ctx{Plt}; queue Queue{Ctx, default_selector_v}; - detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Queue); + detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Queue); MockScheduler *MSPtr = new MockScheduler(); AttachSchedulerWrapper AttachScheduler{MSPtr}; @@ -325,7 +325,7 @@ TEST_F(SchedulerTest, StreamBufferDeallocation) { auto ExecBundle = sycl::build(KernelBundle); MockCGH.use_kernel_bundle(ExecBundle); stream Stream{1, 1, MockCGH}; - MockCGH.addStream(detail::getSyclObjImpl(Stream)); + MockCGH.addStream(detail::getSyclObjImplPtr(Stream)); MockCGH.single_task([] {}); std::unique_ptr CG = MockCGH.finalize(); @@ -373,7 +373,7 @@ TEST_F(SchedulerTest, AuxiliaryResourcesDeallocation) { platform Plt = sycl::platform(); context Ctx{Plt}; queue Queue{Ctx, default_selector_v}; - detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Queue); + detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Queue); MockScheduler *MSPtr = new MockScheduler(); AttachSchedulerWrapper AttachScheduler{MSPtr}; diff --git a/sycl/unittests/scheduler/HostTaskAndBarrier.cpp b/sycl/unittests/scheduler/HostTaskAndBarrier.cpp index 66509107d8967..afd0d05c62270 100644 --- a/sycl/unittests/scheduler/HostTaskAndBarrier.cpp +++ b/sycl/unittests/scheduler/HostTaskAndBarrier.cpp @@ -46,8 +46,8 @@ class BarrierHandlingWithHostTask : public ::testing::Test { sycl::device SyclDev = sycl::detail::select_device(sycl::default_selector_v, SyclContext); QueueDevImpl.reset( - new TestQueueImpl(*sycl::detail::getSyclObjImpl(SyclContext), - *sycl::detail::getSyclObjImpl(SyclDev))); + new TestQueueImpl(sycl::detail::getSyclObjImpl(SyclContext), + sycl::detail::getSyclObjImpl(SyclDev))); MainLock.lock(); } @@ -90,39 +90,36 @@ class BarrierHandlingWithHostTask : public ::testing::Test { EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents.size(), 0u); } - using sycl::detail::event_impl; - using sycl::detail::getSyclObjImpl; - sycl::event BlockedHostTask = AddTask(TestCGType::HOST_TASK); - event_impl &BlockedHostTaskImpl = *getSyclObjImpl(BlockedHostTask); + EventImplPtr BlockedHostTaskImpl = + sycl::detail::getSyclObjImplPtr(BlockedHostTask); Events.push_back(BlockedHostTask); { std::lock_guard Guard(QueueDevImpl->MMutex); EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.LastBarrier, nullptr); EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents.size(), 1u); - EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents[0].get(), - &BlockedHostTaskImpl); + EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents[0], + BlockedHostTaskImpl); } sycl::event BarrierEvent = AddTask(TestCGType::BARRIER); - event_impl &BarrierEventImpl = *getSyclObjImpl(BarrierEvent); + EventImplPtr BarrierEventImpl = + sycl::detail::getSyclObjImplPtr(BarrierEvent); { std::lock_guard Guard(QueueDevImpl->MMutex); - EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.LastBarrier.get(), - &BarrierEventImpl); + EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.LastBarrier, BarrierEventImpl); EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents.size(), 0u); } Events.push_back(BarrierEvent); sycl::event KernelEvent = AddTask(TestCGType::KERNEL_TASK); - event_impl &KernelEventImpl = *getSyclObjImpl(KernelEvent); + EventImplPtr KernelEventImpl = sycl::detail::getSyclObjImplPtr(KernelEvent); { std::lock_guard Guard(QueueDevImpl->MMutex); - EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.LastBarrier.get(), - &BarrierEventImpl); + EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.LastBarrier, BarrierEventImpl); EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents.size(), 1u); - EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents[0].get(), - &KernelEventImpl); + EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents[0], + KernelEventImpl); } Events.push_back(KernelEvent); return Events; @@ -145,20 +142,20 @@ class BarrierHandlingWithHostTask : public ::testing::Test { TEST_F(BarrierHandlingWithHostTask, HostTaskBarrierKernel) { using namespace sycl::detail; sycl::event HTEvent = AddTask(TestCGType::HOST_TASK); - event_impl &HostTaskEventImpl = *getSyclObjImpl(HTEvent); + event_impl &HostTaskEventImpl = getSyclObjImpl(HTEvent); auto HostTaskWaitList = HostTaskEventImpl.getWaitList(); EXPECT_EQ(HostTaskWaitList.size(), 0u); EXPECT_EQ(HostTaskEventImpl.isEnqueued(), true); sycl::event BarrierEvent = AddTask(TestCGType::BARRIER); - event_impl &BarrierEventImpl = *getSyclObjImpl(BarrierEvent); + event_impl &BarrierEventImpl = getSyclObjImpl(BarrierEvent); auto BarrierWaitList = BarrierEventImpl.getWaitList(); ASSERT_EQ(BarrierWaitList.size(), 1u); EXPECT_EQ(BarrierWaitList[0].get(), &HostTaskEventImpl); EXPECT_EQ(BarrierEventImpl.isEnqueued(), false); sycl::event KernelEvent = AddTask(TestCGType::KERNEL_TASK); - event_impl &KernelEventImpl = *getSyclObjImpl(KernelEvent); + event_impl &KernelEventImpl = getSyclObjImpl(KernelEvent); auto KernelWaitList = KernelEventImpl.getWaitList(); ASSERT_EQ(KernelWaitList.size(), 1u); EXPECT_EQ(KernelWaitList[0].get(), &BarrierEventImpl); @@ -171,19 +168,19 @@ TEST_F(BarrierHandlingWithHostTask, HostTaskBarrierKernel) { TEST_F(BarrierHandlingWithHostTask, HostTaskKernelBarrier) { using namespace sycl::detail; sycl::event HTEvent = AddTask(TestCGType::HOST_TASK); - event_impl &HostTaskEventImpl = *getSyclObjImpl(HTEvent); + event_impl &HostTaskEventImpl = getSyclObjImpl(HTEvent); auto HostTaskWaitList = HostTaskEventImpl.getWaitList(); EXPECT_EQ(HostTaskWaitList.size(), 0u); EXPECT_EQ(HostTaskEventImpl.isEnqueued(), true); sycl::event KernelEvent = AddTask(TestCGType::KERNEL_TASK); - event_impl &KernelEventImpl = *getSyclObjImpl(KernelEvent); + event_impl &KernelEventImpl = getSyclObjImpl(KernelEvent); auto KernelWaitList = KernelEventImpl.getWaitList(); ASSERT_EQ(KernelWaitList.size(), 0u); EXPECT_EQ(KernelEventImpl.isEnqueued(), true); sycl::event BarrierEvent = AddTask(TestCGType::BARRIER); - event_impl &BarrierEventImpl = *getSyclObjImpl(BarrierEvent); + event_impl &BarrierEventImpl = getSyclObjImpl(BarrierEvent); auto BarrierWaitList = BarrierEventImpl.getWaitList(); ASSERT_EQ(BarrierWaitList.size(), 1u); EXPECT_EQ(BarrierWaitList[0].get(), &HostTaskEventImpl); @@ -196,20 +193,20 @@ TEST_F(BarrierHandlingWithHostTask, HostTaskKernelBarrier) { TEST_F(BarrierHandlingWithHostTask, BarrierHostTaskKernel) { using namespace sycl::detail; sycl::event BarrierEvent = AddTask(TestCGType::BARRIER); - event_impl &BarrierEventImpl = *getSyclObjImpl(BarrierEvent); + event_impl &BarrierEventImpl = getSyclObjImpl(BarrierEvent); auto BarrierWaitList = BarrierEventImpl.getWaitList(); ASSERT_EQ(BarrierWaitList.size(), 0u); EXPECT_EQ(BarrierEventImpl.isEnqueued(), true); sycl::event HTEvent = AddTask(TestCGType::HOST_TASK); - event_impl &HostTaskEventImpl = *getSyclObjImpl(HTEvent); + event_impl &HostTaskEventImpl = getSyclObjImpl(HTEvent); auto HostTaskWaitList = HostTaskEventImpl.getWaitList(); ASSERT_EQ(HostTaskWaitList.size(), 1u); EXPECT_EQ(HostTaskWaitList[0].get(), &BarrierEventImpl); EXPECT_EQ(HostTaskEventImpl.isEnqueued(), true); sycl::event KernelEvent = AddTask(TestCGType::KERNEL_TASK); - event_impl &KernelEventImpl = *getSyclObjImpl(KernelEvent); + event_impl &KernelEventImpl = getSyclObjImpl(KernelEvent); auto KernelWaitList = KernelEventImpl.getWaitList(); ASSERT_EQ(KernelWaitList.size(), 0u); EXPECT_EQ(KernelEventImpl.isEnqueued(), true); @@ -221,19 +218,19 @@ TEST_F(BarrierHandlingWithHostTask, BarrierHostTaskKernel) { TEST_F(BarrierHandlingWithHostTask, BarrierKernelHostTask) { using namespace sycl::detail; sycl::event BarrierEvent = AddTask(TestCGType::BARRIER); - event_impl &BarrierEventImpl = *getSyclObjImpl(BarrierEvent); + event_impl &BarrierEventImpl = getSyclObjImpl(BarrierEvent); auto BarrierWaitList = BarrierEventImpl.getWaitList(); ASSERT_EQ(BarrierWaitList.size(), 0u); EXPECT_EQ(BarrierEventImpl.isEnqueued(), true); sycl::event KernelEvent = AddTask(TestCGType::KERNEL_TASK); - event_impl &KernelEventImpl = *getSyclObjImpl(KernelEvent); + event_impl &KernelEventImpl = getSyclObjImpl(KernelEvent); auto KernelWaitList = KernelEventImpl.getWaitList(); ASSERT_EQ(KernelWaitList.size(), 0u); EXPECT_EQ(KernelEventImpl.isEnqueued(), true); sycl::event HTEvent = AddTask(TestCGType::HOST_TASK); - event_impl &HostTaskEventImpl = *getSyclObjImpl(HTEvent); + event_impl &HostTaskEventImpl = getSyclObjImpl(HTEvent); auto HostTaskWaitList = HostTaskEventImpl.getWaitList(); ASSERT_EQ(HostTaskWaitList.size(), 1u); EXPECT_EQ(HostTaskWaitList[0].get(), &BarrierEventImpl); @@ -246,19 +243,19 @@ TEST_F(BarrierHandlingWithHostTask, BarrierKernelHostTask) { TEST_F(BarrierHandlingWithHostTask, KernelHostTaskBarrier) { using namespace sycl::detail; sycl::event KernelEvent = AddTask(TestCGType::KERNEL_TASK); - event_impl &KernelEventImpl = *getSyclObjImpl(KernelEvent); + event_impl &KernelEventImpl = getSyclObjImpl(KernelEvent); auto KernelWaitList = KernelEventImpl.getWaitList(); ASSERT_EQ(KernelWaitList.size(), 0u); EXPECT_EQ(KernelEventImpl.isEnqueued(), true); sycl::event HTEvent = AddTask(TestCGType::HOST_TASK); - event_impl &HostTaskEventImpl = *getSyclObjImpl(HTEvent); + event_impl &HostTaskEventImpl = getSyclObjImpl(HTEvent); auto HostTaskWaitList = HostTaskEventImpl.getWaitList(); ASSERT_EQ(HostTaskWaitList.size(), 0u); EXPECT_EQ(HostTaskEventImpl.isEnqueued(), true); sycl::event BarrierEvent = AddTask(TestCGType::BARRIER); - event_impl &BarrierEventImpl = *getSyclObjImpl(BarrierEvent); + event_impl &BarrierEventImpl = getSyclObjImpl(BarrierEvent); auto BarrierWaitList = BarrierEventImpl.getWaitList(); ASSERT_EQ(BarrierWaitList.size(), 1u); EXPECT_EQ(BarrierWaitList[0].get(), &HostTaskEventImpl); @@ -271,19 +268,19 @@ TEST_F(BarrierHandlingWithHostTask, KernelHostTaskBarrier) { TEST_F(BarrierHandlingWithHostTask, KernelBarrierHostTask) { using namespace sycl::detail; sycl::event KernelEvent = AddTask(TestCGType::KERNEL_TASK); - event_impl &KernelEventImpl = *getSyclObjImpl(KernelEvent); + event_impl &KernelEventImpl = getSyclObjImpl(KernelEvent); auto KernelWaitList = KernelEventImpl.getWaitList(); ASSERT_EQ(KernelWaitList.size(), 0u); EXPECT_EQ(KernelEventImpl.isEnqueued(), true); sycl::event BarrierEvent = AddTask(TestCGType::BARRIER); - event_impl &BarrierEventImpl = *getSyclObjImpl(BarrierEvent); + event_impl &BarrierEventImpl = getSyclObjImpl(BarrierEvent); auto BarrierWaitList = BarrierEventImpl.getWaitList(); ASSERT_EQ(BarrierWaitList.size(), 0u); EXPECT_EQ(BarrierEventImpl.isEnqueued(), true); sycl::event HTEvent = AddTask(TestCGType::HOST_TASK); - event_impl &HostTaskEventImpl = *getSyclObjImpl(HTEvent); + event_impl &HostTaskEventImpl = getSyclObjImpl(HTEvent); auto HostTaskWaitList = HostTaskEventImpl.getWaitList(); ASSERT_EQ(HostTaskWaitList.size(), 1u); EXPECT_EQ(HostTaskWaitList[0].get(), &BarrierEventImpl); @@ -296,13 +293,13 @@ TEST_F(BarrierHandlingWithHostTask, KernelBarrierHostTask) { TEST_F(BarrierHandlingWithHostTask, HostTaskUnblockedWaitListBarrierKernel) { using namespace sycl::detail; sycl::event HTEvent = AddTask(TestCGType::HOST_TASK, false); - event_impl &HostTaskEventImpl = *getSyclObjImpl(HTEvent); + event_impl &HostTaskEventImpl = getSyclObjImpl(HTEvent); auto HostTaskWaitList = HostTaskEventImpl.getWaitList(); EXPECT_EQ(HostTaskWaitList.size(), 0u); EXPECT_EQ(HostTaskEventImpl.isEnqueued(), true); sycl::event BlockedHostTask = AddTask(TestCGType::HOST_TASK); - event_impl &BlockedHostTaskImpl = *getSyclObjImpl(BlockedHostTask); + event_impl &BlockedHostTaskImpl = getSyclObjImpl(BlockedHostTask); auto BlockedHostTaskWaitList = BlockedHostTaskImpl.getWaitList(); EXPECT_EQ(BlockedHostTaskWaitList.size(), 0u); EXPECT_EQ(BlockedHostTaskImpl.isEnqueued(), true); @@ -311,7 +308,7 @@ TEST_F(BarrierHandlingWithHostTask, HostTaskUnblockedWaitListBarrierKernel) { std::vector WaitList{HTEvent}; sycl::event BarrierEvent = InsertBarrierWithWaitList(WaitList); - event_impl &BarrierEventImpl = *getSyclObjImpl(BarrierEvent); + event_impl &BarrierEventImpl = getSyclObjImpl(BarrierEvent); auto BarrierWaitList = BarrierEventImpl.getWaitList(); // Events to wait by barrier are stored in a separated vector. Here we are // interested in implicit deps only. @@ -321,7 +318,7 @@ TEST_F(BarrierHandlingWithHostTask, HostTaskUnblockedWaitListBarrierKernel) { EXPECT_EQ(BarrierEventImpl.isEnqueued(), true); sycl::event KernelEvent = AddTask(TestCGType::KERNEL_TASK); - event_impl &KernelEventImpl = *getSyclObjImpl(KernelEvent); + event_impl &KernelEventImpl = getSyclObjImpl(KernelEvent); auto KernelWaitList = KernelEventImpl.getWaitList(); ASSERT_EQ(KernelWaitList.size(), 0u); EXPECT_EQ(KernelEventImpl.isEnqueued(), true); @@ -365,10 +362,10 @@ TEST_F(BarrierHandlingWithHostTask, { std::lock_guard Guard(QueueDevImpl->MMutex); EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.LastBarrier.get(), - &*detail::getSyclObjImpl(SubmittedCmdEvents[1])); + &detail::getSyclObjImpl(SubmittedCmdEvents[1])); ASSERT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents.size(), 1u); EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents[0].get(), - &*detail::getSyclObjImpl(SubmittedCmdEvents[2])); + &detail::getSyclObjImpl(SubmittedCmdEvents[2])); } // Wait or new submission will do cleanup. Checks wait. QueueDevImpl->wait(); @@ -397,10 +394,10 @@ TEST_F(BarrierHandlingWithHostTask, { std::lock_guard Guard(QueueDevImpl->MMutex); EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.LastBarrier.get(), - &*detail::getSyclObjImpl(SubmittedCmdEvents[1])); + &detail::getSyclObjImpl(SubmittedCmdEvents[1])); ASSERT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents.size(), 1u); EXPECT_EQ(QueueDevImpl->MDefaultGraphDeps.UnenqueuedCmdEvents[0].get(), - &*detail::getSyclObjImpl(SubmittedCmdEvents[2])); + &detail::getSyclObjImpl(SubmittedCmdEvents[2])); } // Wait or new submission will do cleanup. Checks new submission. std::ignore = AddTask(TestCGType::KERNEL_TASK); diff --git a/sycl/unittests/scheduler/InOrderQueueDeps.cpp b/sycl/unittests/scheduler/InOrderQueueDeps.cpp index fa33c3a06d9bc..cb14844609986 100644 --- a/sycl/unittests/scheduler/InOrderQueueDeps.cpp +++ b/sycl/unittests/scheduler/InOrderQueueDeps.cpp @@ -59,7 +59,7 @@ TEST_P(SchedulerTest, InOrderQueueDeps) { context Ctx{Plt.get_devices()[0]}; queue InOrderQueue{Ctx, default_selector_v, property::queue::in_order()}; - detail::queue_impl &InOrderQueueImpl = *detail::getSyclObjImpl(InOrderQueue); + detail::queue_impl &InOrderQueueImpl = detail::getSyclObjImpl(InOrderQueue); MockScheduler MS; @@ -121,7 +121,7 @@ TEST_P(SchedulerTest, InOrderQueueIsolatedDeps) { UseShortcutFunction, Q1, []() {}); event E2 = sycl::unittest::single_task_wrapper( UseShortcutFunction, Q2, []() {}); - ExpectedEvent = detail::getSyclObjImpl(E2)->getHandle(); + ExpectedEvent = detail::getSyclObjImpl(E2).getHandle(); Q1.ext_oneapi_submit_barrier({E1, E2}); EXPECT_TRUE(BarrierCalled); } diff --git a/sycl/unittests/scheduler/InOrderQueueSyncCheck.cpp b/sycl/unittests/scheduler/InOrderQueueSyncCheck.cpp index ee305793107da..2cbd90b90caaf 100644 --- a/sycl/unittests/scheduler/InOrderQueueSyncCheck.cpp +++ b/sycl/unittests/scheduler/InOrderQueueSyncCheck.cpp @@ -82,7 +82,7 @@ TEST_F(SchedulerTest, InOrderQueueSyncCheck) { const sycl::device Dev = Plt.get_devices()[0]; auto Queue = std::make_shared( - *sycl::detail::getSyclObjImpl(Dev), sycl::async_handler{}, + sycl::detail::getSyclObjImpl(Dev), sycl::async_handler{}, sycl::property::queue::in_order()); // Check that tasks submitted to an in-order queue implicitly depend_on the diff --git a/sycl/unittests/scheduler/LeafLimit.cpp b/sycl/unittests/scheduler/LeafLimit.cpp index a49e5fa5ec909..563469eae6784 100644 --- a/sycl/unittests/scheduler/LeafLimit.cpp +++ b/sycl/unittests/scheduler/LeafLimit.cpp @@ -30,7 +30,7 @@ inline constexpr auto DisableCleanupName = TEST_F(SchedulerTest, LeafLimit) { sycl::unittest::UrMock<> Mock; sycl::queue Q{sycl::platform().get_devices()[0], MAsyncHandler}; - sycl::detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Q); // All of the mock commands are owned on the test side, prevent post enqueue // cleanup from deleting some of them. @@ -85,6 +85,6 @@ TEST_F(SchedulerTest, LeafLimit) { [&](const detail::DepDesc &DD) { return DD.MDepCommand == OldestLeaf; })); MS.cleanupCommandsForRecord(Rec); auto MemObj = - static_cast(&*detail::getSyclObjImpl(Buf)); + static_cast(&detail::getSyclObjImpl(Buf)); MS.removeRecordForMemObj(MemObj); } diff --git a/sycl/unittests/scheduler/LeafLimitDiffContexts.cpp b/sycl/unittests/scheduler/LeafLimitDiffContexts.cpp index 5811ef0927dfe..67cbab170b725 100644 --- a/sycl/unittests/scheduler/LeafLimitDiffContexts.cpp +++ b/sycl/unittests/scheduler/LeafLimitDiffContexts.cpp @@ -54,16 +54,16 @@ TEST_F(SchedulerTest, LeafLimitDiffContexts) { void InitializeUtils(detail::Requirement &MockReq, MockScheduler &MS) { Rec = - MS.getOrInsertMemObjRecord(&*detail::getSyclObjImpl(Queue), &MockReq); + MS.getOrInsertMemObjRecord(&detail::getSyclObjImpl(Queue), &MockReq); // Creating Alloca on both - device and host contexts (will be created in // real case in insertMemMove for example) It is done to avoid extra // AllocCmd insertion during ConnectCmd insertion std::vector ToEnqueue; AllocaCmd = MS.getOrCreateAllocaForReq( - Rec, &MockReq, &*detail::getSyclObjImpl(Queue), ToEnqueue); + Rec, &MockReq, &detail::getSyclObjImpl(Queue), ToEnqueue); std::ignore = MS.getOrCreateAllocaForReq(Rec, &MockReq, nullptr, ToEnqueue); - DepCmd = std::make_unique(&*detail::getSyclObjImpl(Queue), + DepCmd = std::make_unique(&detail::getSyclObjImpl(Queue), MockReq); } }; @@ -86,7 +86,7 @@ TEST_F(SchedulerTest, LeafLimitDiffContexts) { auto AddLeafWithDeps = [&AddedLeaves, &MockReq, &MS](const QueueRelatedObjects &QueueStuff) { auto NewLeaf = std::make_unique( - &*detail::getSyclObjImpl(QueueStuff.Queue), MockReq); + &detail::getSyclObjImpl(QueueStuff.Queue), MockReq); // Create edges: all soon-to-be leaves are direct users of MockDep std::vector ToCleanUp; (void)NewLeaf->addDep(detail::DepDesc{QueueStuff.DepCmd.get(), &MockReq, diff --git a/sycl/unittests/scheduler/LeavesCollection.cpp b/sycl/unittests/scheduler/LeavesCollection.cpp index 99c06bb5cdcc0..2dd9cbafca842 100644 --- a/sycl/unittests/scheduler/LeavesCollection.cpp +++ b/sycl/unittests/scheduler/LeavesCollection.cpp @@ -65,7 +65,7 @@ TEST_F(LeavesCollectionTest, PushBack) { TimesGenericWasFull = 0; for (size_t Idx = 0; Idx < GenericCmdsCapacity * 2; ++Idx) { - Cmds.push_back(createGenericCommand(*getSyclObjImpl(Q))); + Cmds.push_back(createGenericCommand(getSyclObjImpl(Q))); LE.push_back(Cmds.back().get(), ToEnqueue); } @@ -93,7 +93,7 @@ TEST_F(LeavesCollectionTest, PushBack) { TimesGenericWasFull = 0; for (size_t Idx = 0; Idx < GenericCmdsCapacity * 4; ++Idx) { - auto Cmd = Idx % 2 ? createGenericCommand(*getSyclObjImpl(Q)) + auto Cmd = Idx % 2 ? createGenericCommand(getSyclObjImpl(Q)) : createEmptyCommand(MockReq); Cmds.push_back(Cmd); @@ -133,7 +133,7 @@ TEST_F(LeavesCollectionTest, Remove) { std::vector> Cmds; for (size_t Idx = 0; Idx < GenericCmdsCapacity * 4; ++Idx) { - auto Cmd = Idx % 2 ? createGenericCommand(*getSyclObjImpl(Q)) + auto Cmd = Idx % 2 ? createGenericCommand(getSyclObjImpl(Q)) : createEmptyCommand(MockReq); Cmds.push_back(Cmd); diff --git a/sycl/unittests/scheduler/LinkedAllocaDependencies.cpp b/sycl/unittests/scheduler/LinkedAllocaDependencies.cpp index dc82c9b13139c..dec01516d8c90 100644 --- a/sycl/unittests/scheduler/LinkedAllocaDependencies.cpp +++ b/sycl/unittests/scheduler/LinkedAllocaDependencies.cpp @@ -63,7 +63,7 @@ TEST_F(SchedulerTest, LinkedAllocaDependencies) { // Commands are linked only if the device supports host unified memory. sycl::queue Queue1{Dev}; - sycl::detail::queue_impl &Q1 = *sycl::detail::getSyclObjImpl(Queue1); + sycl::detail::queue_impl &Q1 = sycl::detail::getSyclObjImpl(Queue1); auto AllocaDep = [](sycl::detail::Command *, sycl::detail::Command *, sycl::detail::MemObjRecord *, diff --git a/sycl/unittests/scheduler/MemObjCommandCleanup.cpp b/sycl/unittests/scheduler/MemObjCommandCleanup.cpp index 6cbd581952e83..fb47e13a79af3 100644 --- a/sycl/unittests/scheduler/MemObjCommandCleanup.cpp +++ b/sycl/unittests/scheduler/MemObjCommandCleanup.cpp @@ -18,7 +18,7 @@ using namespace sycl; TEST_F(SchedulerTest, MemObjCommandCleanupAllocaUsers) { sycl::unittest::UrMock<> Mock; sycl::queue Q{sycl::platform().get_devices()[0], MAsyncHandler}; - sycl::detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Q); MockScheduler MS; buffer BufA(range<1>(1)); @@ -49,7 +49,7 @@ TEST_F(SchedulerTest, MemObjCommandCleanupAllocaUsers) { addEdge(MockIndirectUser, MockDirectUser.get(), MockAllocaA); MS.cleanupCommandsForRecord(RecA); - MS.removeRecordForMemObj(&*detail::getSyclObjImpl(BufA)); + MS.removeRecordForMemObj(&detail::getSyclObjImpl(BufA)); // Check that the direct user has been left with the second alloca // as the only dependency, while the indirect user has been cleaned up. @@ -62,7 +62,7 @@ TEST_F(SchedulerTest, MemObjCommandCleanupAllocaUsers) { TEST_F(SchedulerTest, MemObjCommandCleanupAllocaDeps) { sycl::unittest::UrMock<> Mock; sycl::queue Q{sycl::platform().get_devices()[0], MAsyncHandler}; - sycl::detail::queue_impl &QueueImpl = *detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QueueImpl = detail::getSyclObjImpl(Q); MockScheduler MS; buffer Buf(range<1>(1)); @@ -84,7 +84,7 @@ TEST_F(SchedulerTest, MemObjCommandCleanupAllocaDeps) { ASSERT_EQ(DepCmd.MUsers.count(MockAllocaCmd), 1U); MS.cleanupCommandsForRecord(MemObjRec); - MS.removeRecordForMemObj(&*detail::getSyclObjImpl(Buf)); + MS.removeRecordForMemObj(&detail::getSyclObjImpl(Buf)); // Check that DepCmd has its MUsers field cleared. ASSERT_EQ(DepCmd.MUsers.size(), 0U); diff --git a/sycl/unittests/scheduler/NoHostUnifiedMemory.cpp b/sycl/unittests/scheduler/NoHostUnifiedMemory.cpp index 26988bc3c2ee8..db2d50e137aa9 100644 --- a/sycl/unittests/scheduler/NoHostUnifiedMemory.cpp +++ b/sycl/unittests/scheduler/NoHostUnifiedMemory.cpp @@ -86,7 +86,7 @@ TEST_F(SchedulerTest, NoHostUnifiedMemory) { &redefinedMemGetInfoAfter); mock::getCallbacks().set_before_callback("urMemBufferCreateWithNativeHandle", &redefinedMemCreateWithNativeHandle); - sycl::detail::queue_impl &QImpl = *detail::getSyclObjImpl(Q); + sycl::detail::queue_impl &QImpl = detail::getSyclObjImpl(Q); MockScheduler MS; // Check non-host alloca with non-discard access mode @@ -192,7 +192,7 @@ TEST_F(SchedulerTest, NoHostUnifiedMemory) { mock::createDummyHandle(); context InteropContext = Q.get_context(); - InteropUrContext = detail::getSyclObjImpl(InteropContext)->getHandleRef(); + InteropUrContext = detail::getSyclObjImpl(InteropContext).getHandleRef(); auto BufI = std::make_shared( detail::ur::cast(MockInteropBuffer), Q.get_context(), diff --git a/sycl/unittests/scheduler/QueueFlushing.cpp b/sycl/unittests/scheduler/QueueFlushing.cpp index 6f5e1fb4364da..ee8256798655e 100644 --- a/sycl/unittests/scheduler/QueueFlushing.cpp +++ b/sycl/unittests/scheduler/QueueFlushing.cpp @@ -89,9 +89,9 @@ TEST_F(SchedulerTest, QueueFlushing) { context Ctx{Plt}; queue QueueA{Ctx, default_selector_v}; - detail::queue_impl &QueueImplA = *detail::getSyclObjImpl(QueueA); + detail::queue_impl &QueueImplA = detail::getSyclObjImpl(QueueA); queue QueueB{Ctx, default_selector_v}; - detail::queue_impl &QueueImplB = *detail::getSyclObjImpl(QueueB); + detail::queue_impl &QueueImplB = detail::getSyclObjImpl(QueueB); ExpectedDepQueue = QueueImplB.getHandleRef(); int val; @@ -168,7 +168,7 @@ TEST_F(SchedulerTest, QueueFlushing) { std::shared_ptr DepEvent; { queue TempQueue{Ctx, default_selector_v}; - detail::queue_impl &TempQueueImpl = *detail::getSyclObjImpl(TempQueue); + detail::queue_impl &TempQueueImpl = detail::getSyclObjImpl(TempQueue); DepEvent = detail::event_impl::create_device_event(TempQueueImpl); DepEvent->setContextImpl(TempQueueImpl.getContextImpl()); diff --git a/sycl/unittests/scheduler/SchedulerTestUtils.hpp b/sycl/unittests/scheduler/SchedulerTestUtils.hpp index 271237e15f374..2a13726002293 100644 --- a/sycl/unittests/scheduler/SchedulerTestUtils.hpp +++ b/sycl/unittests/scheduler/SchedulerTestUtils.hpp @@ -211,7 +211,7 @@ sycl::detail::Requirement getMockRequirement(const MemObjT &MemObj) { /*AccessRange*/ {0, 0, 0}, /*MemoryRange*/ {0, 0, 0}, /*AccessMode*/ sycl::access::mode::read_write, - /*SYCLMemObj*/ &*sycl::detail::getSyclObjImpl(MemObj), + /*SYCLMemObj*/ &sycl::detail::getSyclObjImpl(MemObj), /*Dims*/ 0, /*ElementSize*/ 0, /*Offset*/ size_t(0)}; diff --git a/sycl/unittests/xpti_trace/QueueIDCheck.cpp b/sycl/unittests/xpti_trace/QueueIDCheck.cpp index d0740436b0a37..b581c286f322e 100644 --- a/sycl/unittests/xpti_trace/QueueIDCheck.cpp +++ b/sycl/unittests/xpti_trace/QueueIDCheck.cpp @@ -87,7 +87,7 @@ TEST_F(QueueID, QueueID_QueueCreationAndDestroy) { std::string Queue1IDSTr; { sycl::queue Q0{Context, sycl::default_selector{}}; - sycl::detail::queue_impl &Queue0Impl = *sycl::detail::getSyclObjImpl(Q0); + sycl::detail::queue_impl &Queue0Impl = sycl::detail::getSyclObjImpl(Q0); Queue0IDSTr = std::to_string(Queue0Impl.getQueueID()); ASSERT_TRUE(queryReceivedNotifications(TraceType, Message)); EXPECT_EQ(TraceType, xpti::trace_queue_create); @@ -97,7 +97,7 @@ TEST_F(QueueID, QueueID_QueueCreationAndDestroy) { std::to_string(size_t(QueueHandle)))); sycl::queue Q1{Context, sycl::default_selector{}}; - sycl::detail::queue_impl &Queue1Impl = *sycl::detail::getSyclObjImpl(Q1); + sycl::detail::queue_impl &Queue1Impl = sycl::detail::getSyclObjImpl(Q1); Queue1IDSTr = std::to_string(Queue1Impl.getQueueID()); ASSERT_TRUE(queryReceivedNotifications(TraceType, Message)); EXPECT_EQ(TraceType, xpti::trace_queue_create); @@ -118,8 +118,8 @@ TEST_F(QueueID, QueueID_QueueCreationAndDestroy) { TEST_F(QueueID, QueueCreationAndKernelWithDeps) { sycl::queue Q0; sycl::queue Q1; - sycl::detail::queue_impl &Queue0Impl = *sycl::detail::getSyclObjImpl(Q0); - sycl::detail::queue_impl &Queue1Impl = *sycl::detail::getSyclObjImpl(Q1); + sycl::detail::queue_impl &Queue0Impl = sycl::detail::getSyclObjImpl(Q0); + sycl::detail::queue_impl &Queue1Impl = sycl::detail::getSyclObjImpl(Q1); sycl::buffer buf(sycl::range<1>(1)); Q1.submit( [&](handler &Cgh) { @@ -138,7 +138,7 @@ TEST_F(QueueID, QueueCreationAndKernelWithDeps) { TEST_F(QueueID, QueueCreationUSMOperations) { sycl::queue Q0; - sycl::detail::queue_impl &Queue0Impl = *sycl::detail::getSyclObjImpl(Q0); + sycl::detail::queue_impl &Queue0Impl = sycl::detail::getSyclObjImpl(Q0); auto QueueIDSTr = std::to_string(Queue0Impl.getQueueID()); unsigned char *AllocSrc = (unsigned char *)sycl::malloc_device(1, Q0); @@ -163,10 +163,10 @@ TEST_F(QueueID, QueueCreationAndKernelNoDeps) { sycl::queue Q0; sycl::queue Q1; - sycl::detail::queue_impl &Queue0Impl = *sycl::detail::getSyclObjImpl(Q0); + sycl::detail::queue_impl &Queue0Impl = sycl::detail::getSyclObjImpl(Q0); auto Queue0IDSTr = std::to_string(Queue0Impl.getQueueID()); - sycl::detail::queue_impl &Queue1Impl = *sycl::detail::getSyclObjImpl(Q1); + sycl::detail::queue_impl &Queue1Impl = sycl::detail::getSyclObjImpl(Q1); auto Queue1IDSTr = std::to_string(Queue1Impl.getQueueID()); Q0.submit(