Skip to content

Commit b985c0d

Browse files
[NFCI][SYCL] Simplify retrieveKernelBinary
Not sure if side effects of `createURProgram` were necessary and even if they were, don't know if I'm removing them or just delaying till the next access of some cache.
1 parent 19d83d5 commit b985c0d

File tree

4 files changed

+20
-35
lines changed

4 files changed

+20
-35
lines changed

sycl/source/detail/helpers.cpp

Lines changed: 17 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -36,9 +36,9 @@ markBufferAsInternal(const std::shared_ptr<buffer_impl> &BufImpl) {
3636
BufImpl->markAsInternal();
3737
}
3838

39-
std::tuple<const RTDeviceBinaryImage *, ur_program_handle_t>
40-
retrieveKernelBinary(queue_impl &Queue, KernelNameStrRefT KernelName,
41-
CGExecKernel *KernelCG) {
39+
const RTDeviceBinaryImage *retrieveKernelBinary(queue_impl &Queue,
40+
KernelNameStrRefT KernelName,
41+
CGExecKernel *KernelCG) {
4242
device_impl &Dev = Queue.getDeviceImpl();
4343
bool isNvidia = Dev.getBackend() == backend::ext_oneapi_cuda;
4444
bool isHIP = Dev.getBackend() == backend::ext_oneapi_hip;
@@ -55,36 +55,22 @@ retrieveKernelBinary(queue_impl &Queue, KernelNameStrRefT KernelName,
5555
return DI->getFormat() == SYCL_DEVICE_BINARY_TYPE_LLVMIR_BITCODE &&
5656
DI->getRawData().DeviceTargetSpec == TargetSpec;
5757
});
58-
if (DeviceImage == DeviceImages.end()) {
59-
return {nullptr, nullptr};
60-
}
61-
context_impl &ContextImpl = Queue.getContextImpl();
62-
ur_program_handle_t Program =
63-
detail::ProgramManager::getInstance().createURProgram(
64-
**DeviceImage, ContextImpl, {createSyclObjFromImpl<device>(Dev)});
65-
return {*DeviceImage, Program};
58+
assert(DeviceImage != DeviceImages.end() &&
59+
"Failed to obtain a binary image.");
60+
return *DeviceImage;
6661
}
6762

68-
const RTDeviceBinaryImage *DeviceImage = nullptr;
69-
ur_program_handle_t Program = nullptr;
70-
auto KernelBundleImpl = KernelCG->getKernelBundle();
71-
if (KernelCG->MSyclKernel != nullptr) {
72-
DeviceImage = KernelCG->MSyclKernel->getDeviceImage()->get_bin_image_ref();
73-
Program = KernelCG->MSyclKernel->getDeviceImage()->get_ur_program_ref();
74-
} else if (auto SyclKernelImpl =
75-
KernelBundleImpl ? KernelBundleImpl->tryGetKernel(KernelName)
76-
: std::shared_ptr<kernel_impl>{nullptr}) {
77-
// Retrieve the device image from the kernel bundle.
78-
DeviceImage = SyclKernelImpl->getDeviceImage()->get_bin_image_ref();
79-
Program = SyclKernelImpl->getDeviceImage()->get_ur_program_ref();
80-
} else {
81-
context_impl &ContextImpl = Queue.getContextImpl();
82-
DeviceImage = &detail::ProgramManager::getInstance().getDeviceImage(
83-
KernelName, ContextImpl, Dev);
84-
Program = detail::ProgramManager::getInstance().createURProgram(
85-
*DeviceImage, ContextImpl, {createSyclObjFromImpl<device>(Dev)});
86-
}
87-
return {DeviceImage, Program};
63+
if (KernelCG->MSyclKernel != nullptr)
64+
return KernelCG->MSyclKernel->getDeviceImage()->get_bin_image_ref();
65+
66+
if (auto KernelBundleImpl = KernelCG->getKernelBundle())
67+
if (KernelBundleImpl->tryGetKernel(KernelName))
68+
// Retrieve the device image from the kernel bundle.
69+
return SyclKernelImpl->getDeviceImage()->get_bin_image_ref();
70+
71+
context_impl &ContextImpl = Queue.getContextImpl();
72+
return &detail::ProgramManager::getInstance().getDeviceImage(
73+
KernelName, ContextImpl, Dev);
8874
}
8975

9076
} // namespace detail

sycl/source/detail/helpers.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ class RTDeviceBinaryImage;
2727
void waitEvents(std::vector<sycl::event> DepEvents);
2828
#endif
2929

30-
std::tuple<const RTDeviceBinaryImage *, ur_program_handle_t>
30+
const RTDeviceBinaryImage *
3131
retrieveKernelBinary(queue_impl &Queue, KernelNameStrRefT KernelName,
3232
CGExecKernel *CGKernel = nullptr);
3333
} // namespace detail

sycl/source/detail/scheduler/commands.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3258,8 +3258,7 @@ ur_result_t ExecCGCommand::enqueueImpQueue() {
32583258

32593259
const RTDeviceBinaryImage *BinImage = nullptr;
32603260
if (detail::SYCLConfig<detail::SYCL_JIT_AMDGCN_PTX_KERNELS>::get()) {
3261-
std::tie(BinImage, std::ignore) =
3262-
retrieveKernelBinary(*MQueue, KernelName);
3261+
BinImage = retrieveKernelBinary(*MQueue, KernelName);
32633262
assert(BinImage && "Failed to obtain a binary image.");
32643263
}
32653264
enqueueImpKernel(

sycl/source/handler.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -597,7 +597,7 @@ event handler::finalize() {
597597
#endif
598598
const detail::RTDeviceBinaryImage *BinImage = nullptr;
599599
if (detail::SYCLConfig<detail::SYCL_JIT_AMDGCN_PTX_KERNELS>::get()) {
600-
std::tie(BinImage, std::ignore) = detail::retrieveKernelBinary(
600+
BinImage = detail::retrieveKernelBinary(
601601
impl->get_queue(), toKernelNameStrT(MKernelName));
602602
assert(BinImage && "Failed to obtain a binary image.");
603603
}

0 commit comments

Comments
 (0)