Skip to content

Commit 35371f6

Browse files
[NFC][SYCL] std::shared_ptr<device_image_impl> cleanups (#19506)
* Avoid unnecessary copies * Use rvalue-reference if param is getting moved from * Remove `DeviceImageImplPtr` type alias (not too many uses remaining, doesn't bring much value anymore) * Inline some temporaries so that explicit `std::move` wouldn't be needed * Switch some sets to use raw `device_image_impl *` ptr * `kernel_impl::getDeviceImage` to return raw reference
1 parent 43ed1f0 commit 35371f6

File tree

11 files changed

+71
-80
lines changed

11 files changed

+71
-80
lines changed

sycl/include/sycl/kernel_bundle.hpp

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -100,13 +100,15 @@ class __SYCL_EXPORT kernel_id : public detail::OwnerLessBase<kernel_id> {
100100

101101
namespace detail {
102102
class device_image_impl;
103-
using DeviceImageImplPtr = std::shared_ptr<device_image_impl>;
104103

105104
// The class is used as a base for device_image for "untemplating" public
106105
// methods.
107106
class __SYCL_EXPORT device_image_plain {
108107
public:
109-
device_image_plain(const detail::DeviceImageImplPtr &Impl)
108+
device_image_plain(const std::shared_ptr<device_image_impl> &Impl)
109+
: impl(Impl) {}
110+
111+
device_image_plain(std::shared_ptr<device_image_impl> &&Impl)
110112
: impl(std::move(Impl)) {}
111113

112114
bool operator==(const device_image_plain &RHS) const {
@@ -124,7 +126,7 @@ class __SYCL_EXPORT device_image_plain {
124126
ur_native_handle_t getNative() const;
125127

126128
protected:
127-
detail::DeviceImageImplPtr impl;
129+
std::shared_ptr<device_image_impl> impl;
128130

129131
template <class Obj>
130132
friend const decltype(Obj::impl) &
@@ -191,7 +193,7 @@ class device_image : public detail::device_image_plain,
191193
#endif // _HAS_STD_BYTE
192194

193195
private:
194-
device_image(detail::DeviceImageImplPtr Impl)
196+
device_image(std::shared_ptr<detail::device_image_impl> Impl)
195197
: device_image_plain(std::move(Impl)) {}
196198

197199
template <class Obj>
@@ -736,7 +738,7 @@ namespace detail {
736738

737739
// Stable selector function type for passing thru library boundaries
738740
using DevImgSelectorImpl =
739-
std::function<bool(const detail::DeviceImageImplPtr &DevImgImpl)>;
741+
std::function<bool(const std::shared_ptr<device_image_impl> &DevImgImpl)>;
740742

741743
// Internal non-template versions of get_kernel_bundle API which is used by
742744
// public onces
@@ -769,7 +771,7 @@ kernel_bundle<State> get_kernel_bundle(const context &Ctx,
769771
std::vector<device> UniqueDevices = detail::removeDuplicateDevices(Devs);
770772

771773
detail::DevImgSelectorImpl SelectorWrapper =
772-
[Selector](const detail::DeviceImageImplPtr &DevImg) {
774+
[Selector](const std::shared_ptr<detail::device_image_impl> &DevImg) {
773775
return Selector(
774776
detail::createSyclObjFromImpl<sycl::device_image<State>>(DevImg));
775777
};

sycl/source/backend.cpp

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -301,13 +301,12 @@ make_kernel_bundle(ur_native_handle_t NativeHandle,
301301
// this by pre-building the device image and extracting kernel info. We can't
302302
// do the same to user images, since they may contain references to undefined
303303
// symbols (e.g. when kernel_bundle is supposed to be joined with another).
304-
auto KernelIDs = std::make_shared<std::vector<kernel_id>>();
305-
auto DevImgImpl = device_image_impl::create(
306-
nullptr, TargetContext, Devices, State, KernelIDs, std::move(UrProgram),
307-
ImageOriginInterop);
308-
device_image_plain DevImg{DevImgImpl};
309-
310-
return kernel_bundle_impl::create(TargetContext, Devices, DevImg);
304+
return kernel_bundle_impl::create(
305+
TargetContext, Devices,
306+
device_image_plain{
307+
device_image_impl::create(nullptr, TargetContext, Devices, State,
308+
std::make_shared<std::vector<kernel_id>>(),
309+
std::move(UrProgram), ImageOriginInterop)});
311310
}
312311

313312
// TODO: Unused. Remove when allowed.

sycl/source/detail/helpers.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -64,12 +64,12 @@ const RTDeviceBinaryImage *retrieveKernelBinary(queue_impl &Queue,
6464
}
6565

6666
if (KernelCG->MSyclKernel != nullptr)
67-
return KernelCG->MSyclKernel->getDeviceImage()->get_bin_image_ref();
67+
return KernelCG->MSyclKernel->getDeviceImage().get_bin_image_ref();
6868

6969
if (auto KernelBundleImpl = KernelCG->getKernelBundle())
7070
if (auto SyclKernelImpl = KernelBundleImpl->tryGetKernel(KernelName))
7171
// Retrieve the device image from the kernel bundle.
72-
return SyclKernelImpl->getDeviceImage()->get_bin_image_ref();
72+
return SyclKernelImpl->getDeviceImage().get_bin_image_ref();
7373

7474
context_impl &ContextImpl = Queue.getContextImpl();
7575
return &detail::ProgramManager::getInstance().getDeviceImage(

sycl/source/detail/kernel_bundle_impl.hpp

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -124,10 +124,10 @@ class kernel_bundle_impl
124124

125125
// Interop constructor
126126
kernel_bundle_impl(context Ctx, devices_range Devs,
127-
device_image_plain &DevImage, private_tag Tag)
127+
device_image_plain &&DevImage, private_tag Tag)
128128
: kernel_bundle_impl(std::move(Ctx), Devs, Tag) {
129129
MDeviceImages.emplace_back(DevImage);
130-
MUniqueDeviceImages.emplace_back(DevImage);
130+
MUniqueDeviceImages.emplace_back(std::move(DevImage));
131131
}
132132

133133
// Matches sycl::build and sycl::compile
@@ -161,11 +161,11 @@ class kernel_bundle_impl
161161
for (const DevImgPlainWithDeps &DevImgWithDeps :
162162
InputBundleImpl.MDeviceImages) {
163163
// Skip images which are not compatible with devices provided
164-
if (std::none_of(get_devices().begin(), get_devices().end(),
165-
[&DevImgWithDeps](device_impl &Dev) {
166-
return getSyclObjImpl(DevImgWithDeps.getMain())
167-
->compatible_with_device(Dev);
168-
}))
164+
if (none_of(get_devices(),
165+
[&MainImg = *getSyclObjImpl(DevImgWithDeps.getMain())](
166+
device_impl &Dev) {
167+
return MainImg.compatible_with_device(Dev);
168+
}))
169169
continue;
170170

171171
switch (TargetState) {
@@ -383,11 +383,11 @@ class kernel_bundle_impl
383383
// ... And link the offline images in separation. (Workaround.)
384384
for (const DevImgPlainWithDeps *DeviceImageWithDeps : OfflineDeviceImages) {
385385
// Skip images which are not compatible with devices provided
386-
if (std::none_of(get_devices().begin(), get_devices().end(),
387-
[DeviceImageWithDeps](device_impl &Dev) {
388-
return getSyclObjImpl(DeviceImageWithDeps->getMain())
389-
->compatible_with_device(Dev);
390-
}))
386+
if (none_of(get_devices(),
387+
[&MainImg = *getSyclObjImpl(DeviceImageWithDeps->getMain())](
388+
device_impl &Dev) {
389+
return MainImg.compatible_with_device(Dev);
390+
}))
391391
continue;
392392

393393
std::vector<device_image_plain> LinkedResults =
@@ -983,8 +983,8 @@ class kernel_bundle_impl
983983
SelectedImage->get_ur_program());
984984

985985
return std::make_shared<kernel_impl>(
986-
Kernel, *detail::getSyclObjImpl(MContext), SelectedImage, *this,
987-
ArgMask, SelectedImage->get_ur_program(), CacheMutex);
986+
Kernel, *detail::getSyclObjImpl(MContext), std::move(SelectedImage),
987+
*this, ArgMask, SelectedImage->get_ur_program(), CacheMutex);
988988
}
989989

990990
std::shared_ptr<kernel_impl>

sycl/source/detail/kernel_impl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ kernel_impl::kernel_impl(ur_kernel_handle_t Kernel, context_impl &Context,
4040
}
4141

4242
kernel_impl::kernel_impl(ur_kernel_handle_t Kernel, context_impl &ContextImpl,
43-
DeviceImageImplPtr DeviceImageImpl,
43+
std::shared_ptr<device_image_impl> &&DeviceImageImpl,
4444
const kernel_bundle_impl &KernelBundleImpl,
4545
const KernelArgMask *ArgMask,
4646
ur_program_handle_t Program, std::mutex *CacheMutex)

sycl/source/detail/kernel_impl.hpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ class kernel_impl {
5050
/// \param ContextImpl is a valid SYCL context
5151
/// \param KernelBundleImpl is a valid instance of kernel_bundle_impl
5252
kernel_impl(ur_kernel_handle_t Kernel, context_impl &ContextImpl,
53-
DeviceImageImplPtr DeviceImageImpl,
53+
std::shared_ptr<device_image_impl> &&DeviceImageImpl,
5454
const kernel_bundle_impl &KernelBundleImpl,
5555
const KernelArgMask *ArgMask, ur_program_handle_t Program,
5656
std::mutex *CacheMutex);
@@ -213,7 +213,7 @@ class kernel_impl {
213213
bool isInteropOrSourceBased() const noexcept;
214214
bool hasSYCLMetadata() const noexcept;
215215

216-
const DeviceImageImplPtr &getDeviceImage() const { return MDeviceImageImpl; }
216+
device_image_impl &getDeviceImage() const { return *MDeviceImageImpl; }
217217

218218
ur_native_handle_t getNative() const {
219219
adapter_impl &Adapter = MContext->getAdapter();
@@ -247,7 +247,7 @@ class kernel_impl {
247247
const std::shared_ptr<context_impl> MContext;
248248
const ur_program_handle_t MProgram = nullptr;
249249
bool MCreatedFromSource = true;
250-
const DeviceImageImplPtr MDeviceImageImpl;
250+
const std::shared_ptr<device_image_impl> MDeviceImageImpl;
251251
const KernelBundleImplPtr MKernelBundleImpl;
252252
bool MIsInterop = false;
253253
mutable std::mutex MNoncacheableEnqueueMutex;

sycl/source/detail/program_manager/program_manager.cpp

Lines changed: 14 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2463,11 +2463,9 @@ device_image_plain ProgramManager::getDeviceImageFromBinaryImage(
24632463
KernelIDs = m_BinImg2KernelIDs[BinImage];
24642464
}
24652465

2466-
DeviceImageImplPtr Impl = device_image_impl::create(
2467-
BinImage, Ctx, Dev, ImgState, KernelIDs, Managed<ur_program_handle_t>{},
2468-
ImageOriginSYCLOffline);
2469-
2470-
return createSyclObjFromImpl<device_image_plain>(std::move(Impl));
2466+
return createSyclObjFromImpl<device_image_plain>(device_image_impl::create(
2467+
BinImage, Ctx, Dev, ImgState, std::move(KernelIDs),
2468+
Managed<ur_program_handle_t>{}, ImageOriginSYCLOffline));
24712469
}
24722470

24732471
std::vector<DevImgPlainWithDeps>
@@ -2622,7 +2620,7 @@ ProgramManager::getSYCLDeviceImagesWithCompatibleState(
26222620
if (ImgInfoPair.second.RequirementCounter == 0)
26232621
continue;
26242622

2625-
DeviceImageImplPtr MainImpl = device_image_impl::create(
2623+
std::shared_ptr<device_image_impl> MainImpl = device_image_impl::create(
26262624
ImgInfoPair.first, Ctx, Devs, ImgInfoPair.second.State,
26272625
ImgInfoPair.second.KernelIDs, Managed<ur_program_handle_t>{},
26282626
ImageOriginSYCLOffline);
@@ -2657,11 +2655,10 @@ ProgramManager::createDependencyImage(const context &Ctx, devices_range Devs,
26572655

26582656
assert(DepState == getBinImageState(DepImage) &&
26592657
"State mismatch between main image and its dependency");
2660-
DeviceImageImplPtr DepImpl = device_image_impl::create(
2661-
DepImage, Ctx, Devs, DepState, std::move(DepKernelIDs),
2662-
Managed<ur_program_handle_t>{}, ImageOriginSYCLOffline);
26632658

2664-
return createSyclObjFromImpl<device_image_plain>(std::move(DepImpl));
2659+
return createSyclObjFromImpl<device_image_plain>(device_image_impl::create(
2660+
DepImage, Ctx, Devs, DepState, std::move(DepKernelIDs),
2661+
Managed<ur_program_handle_t>{}, ImageOriginSYCLOffline));
26652662
}
26662663

26672664
void ProgramManager::bringSYCLDeviceImageToState(
@@ -2830,7 +2827,7 @@ ProgramManager::compile(const DevImgPlainWithDeps &ImgWithDeps,
28302827

28312828
std::optional<detail::KernelCompilerBinaryInfo> RTCInfo =
28322829
InputImpl.getRTCInfo();
2833-
DeviceImageImplPtr ObjectImpl = device_image_impl::create(
2830+
std::shared_ptr<device_image_impl> ObjectImpl = device_image_impl::create(
28342831
InputImpl.get_bin_image_ref(), InputImpl.get_context(), Devs,
28352832
bundle_state::object, InputImpl.get_kernel_ids_ptr(), std::move(Prog),
28362833
InputImpl.get_spec_const_data_ref(),
@@ -3028,16 +3025,14 @@ ProgramManager::link(const std::vector<device_image_plain> &Imgs,
30283025
}
30293026
auto MergedRTCInfo = detail::KernelCompilerBinaryInfo::Merge(RTCInfoPtrs);
30303027

3031-
DeviceImageImplPtr ExecutableImpl = device_image_impl::create(
3028+
// TODO: Make multiple sets of device images organized by devices they are
3029+
// compiled for.
3030+
return {createSyclObjFromImpl<device_image_plain>(device_image_impl::create(
30323031
NewBinImg, Context, Devs, bundle_state::executable, std::move(KernelIDs),
30333032
std::move(LinkedProg), std::move(NewSpecConstMap),
30343033
std::move(NewSpecConstBlob), CombinedOrigins, std::move(MergedRTCInfo),
30353034
std::move(MergedKernelNames), std::move(MergedEliminatedKernelArgMasks),
3036-
std::move(MergedImageStorage));
3037-
3038-
// TODO: Make multiple sets of device images organized by devices they are
3039-
// compiled for.
3040-
return {createSyclObjFromImpl<device_image_plain>(std::move(ExecutableImpl))};
3035+
std::move(MergedImageStorage)))};
30413036
}
30423037

30433038
// The function duplicates most of the code from existing getBuiltPIProgram.
@@ -3111,13 +3106,12 @@ ProgramManager::build(const DevImgPlainWithDeps &DevImgWithDeps,
31113106
}
31123107
auto MergedRTCInfo = detail::KernelCompilerBinaryInfo::Merge(RTCInfoPtrs);
31133108

3114-
DeviceImageImplPtr ExecImpl = device_image_impl::create(
3109+
return createSyclObjFromImpl<device_image_plain>(device_image_impl::create(
31153110
ResultBinImg, Context, Devs, bundle_state::executable,
31163111
std::move(KernelIDs), std::move(ResProgram), std::move(SpecConstMap),
31173112
std::move(SpecConstBlob), CombinedOrigins, std::move(MergedRTCInfo),
31183113
std::move(MergedKernelNames), std::move(MergedEliminatedKernelArgMasks),
3119-
std::move(MergedImageStorage));
3120-
return createSyclObjFromImpl<device_image_plain>(std::move(ExecImpl));
3114+
std::move(MergedImageStorage)));
31213115
}
31223116

31233117
// When caching is enabled, the returned UrKernel will already have

sycl/source/detail/scheduler/commands.cpp

Lines changed: 17 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -2400,10 +2400,9 @@ static void SetArgBasedOnType(
24002400

24012401
static ur_result_t SetKernelParamsAndLaunch(
24022402
queue_impl &Queue, std::vector<ArgDesc> &Args,
2403-
const std::shared_ptr<device_image_impl> &DeviceImageImpl,
2404-
ur_kernel_handle_t Kernel, NDRDescT &NDRDesc,
2405-
std::vector<ur_event_handle_t> &RawEvents, detail::event_impl *OutEventImpl,
2406-
const KernelArgMask *EliminatedArgMask,
2403+
device_image_impl *DeviceImageImpl, ur_kernel_handle_t Kernel,
2404+
NDRDescT &NDRDesc, std::vector<ur_event_handle_t> &RawEvents,
2405+
detail::event_impl *OutEventImpl, const KernelArgMask *EliminatedArgMask,
24072406
const std::function<void *(Requirement *Req)> &getMemAllocationFunc,
24082407
bool IsCooperative, bool KernelUsesClusterLaunch,
24092408
uint32_t WorkGroupMemorySize, const RTDeviceBinaryImage *BinImage,
@@ -2418,8 +2417,7 @@ static ur_result_t SetKernelParamsAndLaunch(
24182417
std::vector<unsigned char> Empty;
24192418
Kernel = Scheduler::getInstance().completeSpecConstMaterialization(
24202419
Queue, BinImage, KernelName,
2421-
DeviceImageImpl.get() ? DeviceImageImpl->get_spec_const_blob_ref()
2422-
: Empty);
2420+
DeviceImageImpl ? DeviceImageImpl->get_spec_const_blob_ref() : Empty);
24232421
}
24242422

24252423
if (KernelFuncPtr && !KernelHasSpecialCaptures) {
@@ -2449,9 +2447,8 @@ static ur_result_t SetKernelParamsAndLaunch(
24492447
} else {
24502448
auto setFunc = [&Adapter, Kernel, &DeviceImageImpl, &getMemAllocationFunc,
24512449
&Queue](detail::ArgDesc &Arg, size_t NextTrueIndex) {
2452-
SetArgBasedOnType(Adapter, Kernel, DeviceImageImpl.get(),
2453-
getMemAllocationFunc, Queue.getContextImpl(), Arg,
2454-
NextTrueIndex);
2450+
SetArgBasedOnType(Adapter, Kernel, DeviceImageImpl, getMemAllocationFunc,
2451+
Queue.getContextImpl(), Arg, NextTrueIndex);
24552452
};
24562453
applyFuncOnFilteredArgs(EliminatedArgMask, Args, setFunc);
24572454
}
@@ -2537,14 +2534,14 @@ static ur_result_t SetKernelParamsAndLaunch(
25372534
return Error;
25382535
}
25392536

2540-
static std::tuple<ur_kernel_handle_t, std::shared_ptr<device_image_impl>,
2537+
static std::tuple<ur_kernel_handle_t, device_image_impl *,
25412538
const KernelArgMask *>
25422539
getCGKernelInfo(const CGExecKernel &CommandGroup, context_impl &ContextImpl,
25432540
device_impl &DeviceImpl,
25442541
std::vector<FastKernelCacheValPtr> &KernelCacheValsToRelease) {
25452542

25462543
ur_kernel_handle_t UrKernel = nullptr;
2547-
std::shared_ptr<device_image_impl> DeviceImageImpl = nullptr;
2544+
device_image_impl *DeviceImageImpl = nullptr;
25482545
const KernelArgMask *EliminatedArgMask = nullptr;
25492546
kernel_bundle_impl *KernelBundleImplPtr = CommandGroup.MKernelBundle.get();
25502547

@@ -2556,7 +2553,7 @@ getCGKernelInfo(const CGExecKernel &CommandGroup, context_impl &ContextImpl,
25562553
CommandGroup.MKernelName)
25572554
: std::shared_ptr<kernel_impl>{nullptr}) {
25582555
UrKernel = SyclKernelImpl->getHandleRef();
2559-
DeviceImageImpl = SyclKernelImpl->getDeviceImage();
2556+
DeviceImageImpl = &SyclKernelImpl->getDeviceImage();
25602557
EliminatedArgMask = SyclKernelImpl->getKernelArgMask();
25612558
} else {
25622559
FastKernelCacheValPtr FastKernelCacheVal =
@@ -2568,8 +2565,7 @@ getCGKernelInfo(const CGExecKernel &CommandGroup, context_impl &ContextImpl,
25682565
// To keep UrKernel valid, we return FastKernelCacheValPtr.
25692566
KernelCacheValsToRelease.push_back(std::move(FastKernelCacheVal));
25702567
}
2571-
return std::make_tuple(UrKernel, std::move(DeviceImageImpl),
2572-
EliminatedArgMask);
2568+
return std::make_tuple(UrKernel, DeviceImageImpl, EliminatedArgMask);
25732569
}
25742570

25752571
ur_result_t enqueueImpCommandBufferKernel(
@@ -2586,7 +2582,7 @@ ur_result_t enqueueImpCommandBufferKernel(
25862582
std::vector<FastKernelCacheValPtr> FastKernelCacheValsToRelease;
25872583

25882584
ur_kernel_handle_t UrKernel = nullptr;
2589-
std::shared_ptr<device_image_impl> DeviceImageImpl = nullptr;
2585+
device_image_impl *DeviceImageImpl = nullptr;
25902586
const KernelArgMask *EliminatedArgMask = nullptr;
25912587

25922588
context_impl &ContextImpl = *sycl::detail::getSyclObjImpl(Ctx);
@@ -2610,10 +2606,10 @@ ur_result_t enqueueImpCommandBufferKernel(
26102606
}
26112607

26122608
adapter_impl &Adapter = ContextImpl.getAdapter();
2613-
auto SetFunc = [&Adapter, &UrKernel, &DeviceImageImpl, &ContextImpl,
2614-
&getMemAllocationFunc](sycl::detail::ArgDesc &Arg,
2615-
size_t NextTrueIndex) {
2616-
sycl::detail::SetArgBasedOnType(Adapter, UrKernel, DeviceImageImpl.get(),
2609+
auto SetFunc = [&Adapter, &UrKernel, &ContextImpl, &getMemAllocationFunc,
2610+
DeviceImageImpl](sycl::detail::ArgDesc &Arg,
2611+
size_t NextTrueIndex) {
2612+
sycl::detail::SetArgBasedOnType(Adapter, UrKernel, DeviceImageImpl,
26172613
getMemAllocationFunc, ContextImpl, Arg,
26182614
NextTrueIndex);
26192615
};
@@ -2695,7 +2691,7 @@ void enqueueImpKernel(
26952691
const KernelArgMask *EliminatedArgMask;
26962692

26972693
std::shared_ptr<kernel_impl> SyclKernelImpl;
2698-
std::shared_ptr<device_image_impl> DeviceImageImpl;
2694+
device_image_impl *DeviceImageImpl = nullptr;
26992695
FastKernelCacheValPtr KernelCacheVal;
27002696

27012697
if (nullptr != MSyclKernel) {
@@ -2717,7 +2713,7 @@ void enqueueImpKernel(
27172713
? KernelBundleImplPtr->tryGetKernel(KernelName)
27182714
: std::shared_ptr<kernel_impl>{nullptr})) {
27192715
Kernel = SyclKernelImpl->getHandleRef();
2720-
DeviceImageImpl = SyclKernelImpl->getDeviceImage();
2716+
DeviceImageImpl = &SyclKernelImpl->getDeviceImage();
27212717

27222718
Program = DeviceImageImpl->get_ur_program();
27232719

sycl/source/kernel_bundle.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,11 +285,10 @@ bool has_kernel_bundle_impl(const context &Ctx, const std::vector<device> &Devs,
285285
std::set<kernel_id, LessByNameComp> CombinedKernelIDs;
286286
for (const DevImgPlainWithDeps &DeviceImageWithDeps : DeviceImagesWithDeps) {
287287
for (const device_image_plain &DeviceImage : DeviceImageWithDeps) {
288-
const std::shared_ptr<device_image_impl> &DeviceImageImpl =
289-
getSyclObjImpl(DeviceImage);
288+
device_image_impl &DeviceImageImpl = *getSyclObjImpl(DeviceImage);
290289

291-
CombinedKernelIDs.insert(DeviceImageImpl->get_kernel_ids().begin(),
292-
DeviceImageImpl->get_kernel_ids().end());
290+
CombinedKernelIDs.insert(DeviceImageImpl.get_kernel_ids().begin(),
291+
DeviceImageImpl.get_kernel_ids().end());
293292
}
294293
}
295294

0 commit comments

Comments
 (0)