Skip to content

Commit 900f0d6

Browse files
[NFC][SYCL] Use raw context_impl & in program_manager (#18877)
Part of the ongoing refactoring to prefer raw ptr/ref for SYCL RT objects by default with explicit `shared_from_this` when lifetimes need to be extended.
1 parent 8f33b32 commit 900f0d6

File tree

10 files changed

+101
-101
lines changed

10 files changed

+101
-101
lines changed

sycl/source/detail/graph_impl.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1545,7 +1545,7 @@ void exec_graph_impl::populateURKernelUpdateStructs(
15451545
EliminatedArgMask = SyclKernelImpl->getKernelArgMask();
15461546
} else {
15471547
BundleObjs = sycl::detail::ProgramManager::getInstance().getOrCreateKernel(
1548-
ContextImpl, DeviceImpl, ExecCG.MKernelName,
1548+
*ContextImpl, DeviceImpl, ExecCG.MKernelName,
15491549
ExecCG.MKernelNameBasedCachePtr);
15501550
UrKernel = BundleObjs->MKernelHandle;
15511551
EliminatedArgMask = BundleObjs->MKernelArgMask;

sycl/source/detail/helpers.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ retrieveKernelBinary(queue_impl &Queue, KernelNameStrRefT KernelName,
6262
auto ContextImpl = Queue.getContextImplPtr();
6363
ur_program_handle_t Program =
6464
detail::ProgramManager::getInstance().createURProgram(
65-
**DeviceImage, ContextImpl, {createSyclObjFromImpl<device>(Dev)});
65+
**DeviceImage, *ContextImpl, {createSyclObjFromImpl<device>(Dev)});
6666
return {*DeviceImage, Program};
6767
}
6868

@@ -82,9 +82,9 @@ retrieveKernelBinary(queue_impl &Queue, KernelNameStrRefT KernelName,
8282
} else {
8383
auto ContextImpl = Queue.getContextImplPtr();
8484
DeviceImage = &detail::ProgramManager::getInstance().getDeviceImage(
85-
KernelName, ContextImpl, &Dev);
85+
KernelName, *ContextImpl, &Dev);
8686
Program = detail::ProgramManager::getInstance().createURProgram(
87-
*DeviceImage, ContextImpl, {createSyclObjFromImpl<device>(Dev)});
87+
*DeviceImage, *ContextImpl, {createSyclObjFromImpl<device>(Dev)});
8888
}
8989
return {DeviceImage, Program};
9090
}

sycl/source/detail/kernel_impl.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,8 +20,8 @@ kernel_impl::kernel_impl(ur_kernel_handle_t Kernel, ContextImplPtr Context,
2020
KernelBundleImplPtr KernelBundleImpl,
2121
const KernelArgMask *ArgMask)
2222
: MKernel(Kernel), MContext(Context),
23-
MProgram(ProgramManager::getInstance().getUrProgramFromUrKernel(Kernel,
24-
Context)),
23+
MProgram(ProgramManager::getInstance().getUrProgramFromUrKernel(
24+
Kernel, *Context)),
2525
MCreatedFromSource(true), MKernelBundleImpl(std::move(KernelBundleImpl)),
2626
MIsInterop(true), MKernelArgMaskPtr{ArgMask} {
2727
ur_context_handle_t UrContext = nullptr;

sycl/source/detail/memory_manager.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1146,7 +1146,7 @@ getOrBuildProgramForDeviceGlobal(queue_impl &Queue,
11461146
auto Context = createSyclObjFromImpl<context>(ContextImpl);
11471147
ProgramManager &PM = ProgramManager::getInstance();
11481148
RTDeviceBinaryImage &Img = PM.getDeviceImage(
1149-
DeviceGlobalEntry->MImages, ContextImpl, getSyclObjImpl(Device).get());
1149+
DeviceGlobalEntry->MImages, *ContextImpl, getSyclObjImpl(Device).get());
11501150
device_image_plain DeviceImage =
11511151
PM.getDeviceImageFromBinaryImage(&Img, Context, Device);
11521152
device_image_plain BuiltImage =

sycl/source/detail/program_manager/program_manager.cpp

Lines changed: 74 additions & 73 deletions
Large diffs are not rendered by default.

sycl/source/detail/program_manager/program_manager.hpp

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -135,15 +135,15 @@ class ProgramManager {
135135
static ProgramManager &getInstance();
136136

137137
RTDeviceBinaryImage &getDeviceImage(KernelNameStrRefT KernelName,
138-
const ContextImplPtr &ContextImpl,
138+
context_impl &ContextImpl,
139139
const device_impl *DeviceImpl);
140140

141141
RTDeviceBinaryImage &getDeviceImage(
142142
const std::unordered_set<RTDeviceBinaryImage *> &ImagesToVerify,
143-
const ContextImplPtr &ContextImpl, const device_impl *DeviceImpl);
143+
context_impl &ContextImpl, const device_impl *DeviceImpl);
144144

145145
ur_program_handle_t createURProgram(const RTDeviceBinaryImage &Img,
146-
const ContextImplPtr &ContextImpl,
146+
context_impl &ContextImpl,
147147
const std::vector<device> &Devices);
148148
/// Creates a UR program using either a cached device code binary if present
149149
/// in the persistent cache or from the supplied device image otherwise.
@@ -167,7 +167,7 @@ class ProgramManager {
167167
std::pair<ur_program_handle_t, bool> getOrCreateURProgram(
168168
const RTDeviceBinaryImage &Img,
169169
const std::vector<const RTDeviceBinaryImage *> &AllImages,
170-
const ContextImplPtr &ContextImpl, const std::vector<device> &Devices,
170+
context_impl &ContextImpl, const std::vector<device> &Devices,
171171
const std::string &CompileAndLinkOptions, SerializedObj SpecConsts);
172172
/// Builds or retrieves from cache a program defining the kernel with given
173173
/// name.
@@ -176,7 +176,7 @@ class ProgramManager {
176176
/// \param Context the context to build the program with
177177
/// \param Device the device for which the program is built
178178
/// \param KernelName the kernel's name
179-
ur_program_handle_t getBuiltURProgram(const ContextImplPtr &ContextImpl,
179+
ur_program_handle_t getBuiltURProgram(context_impl &ContextImpl,
180180
device_impl &DeviceImpl,
181181
KernelNameStrRefT KernelName,
182182
const NDRDescT &NDRDesc = {});
@@ -193,13 +193,12 @@ class ProgramManager {
193193
/// the program should be built with.
194194
ur_program_handle_t
195195
getBuiltURProgram(const BinImgWithDeps &ImgWithDeps,
196-
const ContextImplPtr &ContextImpl,
197-
const std::vector<device> &Devs,
196+
context_impl &ContextImpl, const std::vector<device> &Devs,
198197
const DevImgPlainWithDeps *DevImgWithDeps = nullptr,
199198
const SerializedObj &SpecConsts = {});
200199

201200
FastKernelCacheValPtr
202-
getOrCreateKernel(const ContextImplPtr &ContextImpl, device_impl &DeviceImpl,
201+
getOrCreateKernel(context_impl &ContextImpl, device_impl &DeviceImpl,
203202
KernelNameStrRefT KernelName,
204203
KernelNameBasedCacheT *KernelNameBasedCachePtr,
205204
const NDRDescT &NDRDesc = {});
@@ -214,7 +213,7 @@ class ProgramManager {
214213
const std::vector<unsigned char> &SpecializationConsts);
215214

216215
ur_program_handle_t getUrProgramFromUrKernel(ur_kernel_handle_t Kernel,
217-
const ContextImplPtr &Context);
216+
context_impl &Context);
218217

219218
void addImage(sycl_device_binary RawImg, bool RegisterImgExports = true,
220219
RTDeviceBinaryImage **OutImage = nullptr,
@@ -223,7 +222,7 @@ class ProgramManager {
223222
void removeImages(sycl_device_binaries DeviceImages);
224223
void debugPrintBinaryImages() const;
225224
static std::string getProgramBuildLog(const ur_program_handle_t &Program,
226-
const ContextImplPtr &Context);
225+
context_impl &Context);
227226

228227
uint32_t getDeviceLibReqMask(const RTDeviceBinaryImage &Img);
229228

@@ -394,7 +393,7 @@ class ProgramManager {
394393

395394
using ProgramPtr = std::unique_ptr<std::remove_pointer_t<ur_program_handle_t>,
396395
decltype(&::urProgramRelease)>;
397-
ProgramPtr build(ProgramPtr Program, const ContextImplPtr &Context,
396+
ProgramPtr build(ProgramPtr Program, context_impl &Context,
398397
const std::string &CompileOptions,
399398
const std::string &LinkOptions,
400399
std::vector<ur_device_handle_t> &Devices,

sycl/source/detail/scheduler/commands.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2016,7 +2016,7 @@ void instrumentationAddExtraKernelMetadata(
20162016
// by graph API, when a modifiable graph is finalized.
20172017
FastKernelCacheValPtr FastKernelCacheVal =
20182018
detail::ProgramManager::getInstance().getOrCreateKernel(
2019-
Queue->getContextImplPtr(), Queue->getDeviceImpl(), KernelName,
2019+
*Queue->getContextImplPtr(), Queue->getDeviceImpl(), KernelName,
20202020
KernelNameBasedCachePtr);
20212021
EliminatedArgMask = FastKernelCacheVal->MKernelArgMask;
20222022
}
@@ -2552,7 +2552,7 @@ getCGKernelInfo(const CGExecKernel &CommandGroup, ContextImplPtr ContextImpl,
25522552
} else {
25532553
FastKernelCacheValPtr FastKernelCacheVal =
25542554
sycl::detail::ProgramManager::getInstance().getOrCreateKernel(
2555-
ContextImpl, DeviceImpl, CommandGroup.MKernelName,
2555+
*ContextImpl, DeviceImpl, CommandGroup.MKernelName,
25562556
CommandGroup.MKernelNameBasedCachePtr);
25572557
UrKernel = FastKernelCacheVal->MKernelHandle;
25582558
EliminatedArgMask = FastKernelCacheVal->MKernelArgMask;
@@ -2715,7 +2715,7 @@ void enqueueImpKernel(
27152715
KernelMutex = SyclKernelImpl->getCacheMutex();
27162716
} else {
27172717
KernelCacheVal = detail::ProgramManager::getInstance().getOrCreateKernel(
2718-
ContextImpl, DeviceImpl, KernelName, KernelNameBasedCachePtr, NDRDesc);
2718+
*ContextImpl, DeviceImpl, KernelName, KernelNameBasedCachePtr, NDRDesc);
27192719
Kernel = KernelCacheVal->MKernelHandle;
27202720
KernelMutex = KernelCacheVal->MMutex;
27212721
Program = KernelCacheVal->MProgramHandle;

sycl/unittests/program_manager/Cleanup.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -383,13 +383,13 @@ TEST(ImageRemoval, NativePrograms) {
383383
const sycl::device Dev = Plt.get_devices()[0];
384384
sycl::queue Queue{Dev};
385385
auto Ctx = Queue.get_context();
386-
auto ProgramA = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx),
386+
auto ProgramA = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx),
387387
*sycl::detail::getSyclObjImpl(Dev),
388388
generateRefName("A", "Kernel"));
389-
auto ProgramB = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx),
389+
auto ProgramB = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx),
390390
*sycl::detail::getSyclObjImpl(Dev),
391391
generateRefName("B", "Kernel"));
392-
std::ignore = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx),
392+
std::ignore = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx),
393393
*sycl::detail::getSyclObjImpl(Dev),
394394
generateRefName("C", "Kernel"));
395395

sycl/unittests/program_manager/SubDevices.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,11 @@ TEST(SubDevices, DISABLED_BuildProgramForSubdevices) {
120120

121121
// Build program via getBuiltPIProgram API
122122
sycl::detail::ProgramManager::getInstance().getBuiltURProgram(
123-
sycl::detail::getSyclObjImpl(Ctx), subDev1,
123+
*sycl::detail::getSyclObjImpl(Ctx), subDev1,
124124
sycl::detail::KernelInfo<TestKernel<>>::getName());
125125
// This call should re-use built binary from the cache. If urProgramBuild is
126126
// called again, the test will fail as second call of redefinedProgramBuild
127127
sycl::detail::ProgramManager::getInstance().getBuiltURProgram(
128-
sycl::detail::getSyclObjImpl(Ctx), subDev2,
128+
*sycl::detail::getSyclObjImpl(Ctx), subDev2,
129129
sycl::detail::KernelInfo<TestKernel<>>::getName());
130130
}

sycl/unittests/program_manager/arg_mask/EliminatedArgMask.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ TEST(EliminatedArgMask, ReuseOfHandleValues) {
303303
const sycl::device Dev = Plt.get_devices()[0];
304304
sycl::queue Queue{Dev};
305305
auto Ctx = Queue.get_context();
306-
ProgBefore = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx),
306+
ProgBefore = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx),
307307
*sycl::detail::getSyclObjImpl(Dev), Name);
308308
auto Mask = PM.getEliminatedKernelArgMask(ProgBefore, Name);
309309
EXPECT_NE(Mask, nullptr);
@@ -328,7 +328,7 @@ TEST(EliminatedArgMask, ReuseOfHandleValues) {
328328
const sycl::device Dev = Plt.get_devices()[0];
329329
sycl::queue Queue{Dev};
330330
auto Ctx = Queue.get_context();
331-
ProgAfter = PM.getBuiltURProgram(sycl::detail::getSyclObjImpl(Ctx),
331+
ProgAfter = PM.getBuiltURProgram(*sycl::detail::getSyclObjImpl(Ctx),
332332
*sycl::detail::getSyclObjImpl(Dev), Name);
333333
auto Mask = PM.getEliminatedKernelArgMask(ProgAfter, Name);
334334
EXPECT_NE(Mask, nullptr);

0 commit comments

Comments
 (0)