Skip to content

Commit 341d413

Browse files
committed
Fix backward compatibility issue
1 parent 831ae4c commit 341d413

File tree

3 files changed

+43
-23
lines changed

3 files changed

+43
-23
lines changed

sycl/source/detail/kernel_data.cpp

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -103,8 +103,15 @@ static void addArgsForLocalAccessor(detail::LocalAccessorImplHost *LAcc,
103103

104104
void KernelData::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind,
105105
const int Size, const size_t Index,
106-
size_t &IndexShift,
107-
bool IsKernelCreatedFromSource) {
106+
size_t &IndexShift, bool IsKernelCreatedFromSource
107+
#ifndef __INTEL_PREVIEW_BREAKING_CHANGES
108+
,
109+
bool IsESIMD
110+
#endif
111+
) {
112+
#ifdef __INTEL_PREVIEW_BREAKING_CHANGES
113+
bool IsESIMD = isESIMD();
114+
#endif
108115
using detail::kernel_param_kind_t;
109116
size_t GlobalSize = MNDRDesc.GlobalSize[0];
110117
for (size_t I = 1; I < MNDRDesc.Dims; ++I) {
@@ -126,14 +133,14 @@ void KernelData::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind,
126133
detail::Requirement *GBufReq = &*detail::getSyclObjImpl(*GBufBase);
127134
addArgsForGlobalAccessor(GBufReq, Index, IndexShift, Size,
128135
IsKernelCreatedFromSource, GlobalSize, MArgs,
129-
isESIMD());
136+
IsESIMD);
130137
++IndexShift;
131138
detail::AccessorBaseHost *GOffsetBase =
132139
static_cast<detail::AccessorBaseHost *>(&S->GlobalOffset);
133140
detail::Requirement *GOffsetReq = &*detail::getSyclObjImpl(*GOffsetBase);
134141
addArgsForGlobalAccessor(GOffsetReq, Index, IndexShift, Size,
135142
IsKernelCreatedFromSource, GlobalSize, MArgs,
136-
isESIMD());
143+
IsESIMD);
137144
++IndexShift;
138145
detail::AccessorBaseHost *GFlushBase =
139146
static_cast<detail::AccessorBaseHost *>(&S->GlobalFlushBuf);
@@ -152,7 +159,7 @@ void KernelData::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind,
152159
}
153160
addArgsForGlobalAccessor(GFlushReq, Index, IndexShift, Size,
154161
IsKernelCreatedFromSource, GlobalSize, MArgs,
155-
isESIMD());
162+
IsESIMD);
156163
++IndexShift;
157164
addArg(kernel_param_kind_t::kind_std_layout, &S->FlushBufferSize,
158165
sizeof(S->FlushBufferSize), Index + IndexShift);
@@ -170,15 +177,15 @@ void KernelData::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind,
170177
detail::Requirement *AccImpl = static_cast<detail::Requirement *>(Ptr);
171178
addArgsForGlobalAccessor(AccImpl, Index, IndexShift, Size,
172179
IsKernelCreatedFromSource, GlobalSize, MArgs,
173-
isESIMD());
180+
IsESIMD);
174181
break;
175182
}
176183
case access::target::local: {
177184
detail::LocalAccessorImplHost *LAccImpl =
178185
static_cast<detail::LocalAccessorImplHost *>(Ptr);
179186

180187
addArgsForLocalAccessor(LAccImpl, Index, IndexShift,
181-
IsKernelCreatedFromSource, MArgs, isESIMD());
188+
IsKernelCreatedFromSource, MArgs, IsESIMD);
182189
break;
183190
}
184191
case access::target::image:
@@ -221,7 +228,7 @@ void KernelData::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind,
221228

222229
addArgsForLocalAccessor(&DynLocalAccessorImpl->LAccImplHost, Index,
223230
IndexShift, IsKernelCreatedFromSource, MArgs,
224-
isESIMD());
231+
IsESIMD);
225232
break;
226233
}
227234
default: {
@@ -289,7 +296,12 @@ void KernelData::extractArgsAndReqs(bool IsKernelCreatedFromSource) {
289296
const detail::kernel_param_kind_t &Kind = UnPreparedArgs[I].MType;
290297
const int &Size = UnPreparedArgs[I].MSize;
291298
const int Index = UnPreparedArgs[I].MIndex;
292-
processArg(Ptr, Kind, Size, Index, IndexShift, IsKernelCreatedFromSource);
299+
processArg(Ptr, Kind, Size, Index, IndexShift, IsKernelCreatedFromSource
300+
#ifndef __INTEL_PREVIEW_BREAKING_CHANGES
301+
,
302+
isESIMD()
303+
#endif
304+
);
293305
}
294306
}
295307

@@ -341,7 +353,12 @@ void KernelData::extractArgsAndReqsFromLambda() {
341353
}
342354

343355
processArg(Ptr, Kind, Size, I, IndexShift,
344-
/*IsKernelCreatedFromSource=*/false);
356+
/*IsKernelCreatedFromSource=*/false
357+
#ifndef __INTEL_PREVIEW_BREAKING_CHANGES
358+
,
359+
isESIMD()
360+
#endif
361+
);
345362
}
346363
}
347364

sycl/source/detail/kernel_data.hpp

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,7 +169,12 @@ class KernelData {
169169

170170
void processArg(void *Ptr, const detail::kernel_param_kind_t &Kind,
171171
const int Size, const size_t Index, size_t &IndexShift,
172-
bool IsKernelCreatedFromSource);
172+
bool IsKernelCreatedFromSource
173+
#ifndef __INTEL_PREVIEW_BREAKING_CHANGES
174+
,
175+
bool IsESIMD
176+
#endif
177+
);
173178

174179
void extractArgsAndReqs(bool IsKernelCreatedFromSource);
175180

sycl/source/handler.cpp

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -539,8 +539,14 @@ event handler::finalize() {
539539
}
540540

541541
if (type == detail::CGType::Kernel) {
542-
assert(impl->MKernelData.getDeviceKernelInfoPtr() != nullptr &&
543-
"DeviceKernelInfo pointer must be set in handler_impl");
542+
if (impl->MKernelData.getDeviceKernelInfoPtr() == nullptr) {
543+
// Fetch the device kernel info pointer if it hasn't been set (e.g.
544+
// in kernel bundle or free function cases).
545+
impl->MKernelData.setDeviceKernelInfoPtr(
546+
&detail::ProgramManager::getInstance().getOrCreateDeviceKernelInfo(
547+
toKernelNameStrT(MKernelName)));
548+
}
549+
assert(impl->MKernelData.getKernelName() == MKernelName);
544550

545551
// If there were uses of set_specialization_constant build the kernel_bundle
546552
detail::kernel_bundle_impl *KernelBundleImpPtr =
@@ -1049,9 +1055,8 @@ void handler::associateWithHandler(
10491055
void handler::processArg(void *Ptr, const detail::kernel_param_kind_t &Kind,
10501056
const int Size, const size_t Index, size_t &IndexShift,
10511057
bool IsKernelCreatedFromSource, bool IsESIMD) {
1052-
(void)IsESIMD;
10531058
impl->MKernelData.processArg(Ptr, Kind, Size, Index, IndexShift,
1054-
IsKernelCreatedFromSource);
1059+
IsKernelCreatedFromSource, IsESIMD);
10551060
}
10561061
#endif
10571062

@@ -1103,13 +1108,6 @@ void handler::extractArgsAndReqsFromLambda(
11031108
const bool IsKernelCreatedFromSource = false;
11041109
size_t IndexShift = 0;
11051110

1106-
if (impl->MKernelData.getDeviceKernelInfoPtr() == nullptr) {
1107-
impl->MKernelData.setDeviceKernelInfoPtr(
1108-
&detail::ProgramManager::getInstance().getOrCreateDeviceKernelInfo(
1109-
toKernelNameStrT(getKernelName())));
1110-
}
1111-
impl->MKernelData.setESIMD(IsESIMD);
1112-
11131111
for (size_t I = 0; I < ParamDescs.size(); ++I) {
11141112
void *Ptr = LambdaPtr + ParamDescs[I].offset;
11151113
const detail::kernel_param_kind_t &Kind = ParamDescs[I].kind;
@@ -1133,7 +1131,7 @@ void handler::extractArgsAndReqsFromLambda(
11331131
}
11341132
}
11351133
impl->MKernelData.processArg(Ptr, Kind, Size, I, IndexShift,
1136-
IsKernelCreatedFromSource);
1134+
IsKernelCreatedFromSource, IsESIMD);
11371135
}
11381136
}
11391137

0 commit comments

Comments
 (0)