@@ -175,9 +175,11 @@ static int MemoryMapCounter = MemoryMapCounterBase;
175
175
static constexpr int PauseWaitOnIdx = KernelLaunchCounterBase + 1 ;
176
176
177
177
// Mock redifinitions
178
- static pi_result redefinedKernelGetGroupInfoAfter (
179
- pi_kernel kernel, pi_device device, pi_kernel_group_info param_name,
180
- size_t param_value_size, void *param_value, size_t *param_value_size_ret) {
178
+ static pi_result redefinedKernelGetGroupInfo (pi_kernel kernel, pi_device device,
179
+ pi_kernel_group_info param_name,
180
+ size_t param_value_size,
181
+ void *param_value,
182
+ size_t *param_value_size_ret) {
181
183
if (param_name == PI_KERNEL_GROUP_INFO_COMPILE_WORK_GROUP_SIZE) {
182
184
if (param_value_size_ret) {
183
185
*param_value_size_ret = 3 * sizeof (size_t );
@@ -192,23 +194,25 @@ static pi_result redefinedKernelGetGroupInfoAfter(
192
194
return PI_SUCCESS;
193
195
}
194
196
195
- static pi_result
196
- redefinedEnqueueKernelLaunchAfter (pi_queue, pi_kernel, pi_uint32 ,
197
- const size_t *, const size_t *,
198
- const size_t *LocalSize, pi_uint32 NDeps ,
199
- const pi_event *Deps, pi_event *RetEvent) {
200
- static pi_event UserKernelEvent = *RetEvent ;
201
- int Val = KernelLaunchCounter++;
197
+ static pi_result redefinedEnqueueKernelLaunch (pi_queue, pi_kernel, pi_uint32,
198
+ const size_t *, const size_t * ,
199
+ const size_t *LocalSize ,
200
+ pi_uint32 N, const pi_event *Deps ,
201
+ pi_event *RetEvent) {
202
+ int *Ret = new int [ 1 ] ;
203
+ *Ret = KernelLaunchCounter++;
202
204
// This output here is to reduce amount of time requried to debug/reproduce a
203
205
// failing test upon feature break
204
- printf (" Enqueued %i\n " , Val );
206
+ printf (" Enqueued %i\n " , *Ret );
205
207
206
- if (PauseWaitOnIdx == Val ) {
208
+ if (PauseWaitOnIdx == *Ret ) {
207
209
// It should be copier kernel. Check if it depends on user's one.
208
- EXPECT_EQ (NDeps, 1U );
209
- EXPECT_EQ (Deps[0 ], UserKernelEvent);
210
+ EXPECT_EQ (N, 1U );
211
+ int EventIdx = reinterpret_cast <int *>(Deps[0 ])[0 ];
212
+ EXPECT_EQ (EventIdx, 0 );
210
213
}
211
214
215
+ *RetEvent = reinterpret_cast <pi_event>(Ret);
212
216
return PI_SUCCESS;
213
217
}
214
218
@@ -239,30 +243,56 @@ static pi_result redefinedEventsWaitNegative(pi_uint32 num_events,
239
243
return PI_SUCCESS;
240
244
}
241
245
242
- static pi_result redefinedEnqueueMemBufferMapAfter (
246
+ static pi_result
247
+ redefinedMemBufferCreate (pi_context context, pi_mem_flags flags, size_t size,
248
+ void *host_ptr, pi_mem *ret_mem,
249
+ const pi_mem_properties *properties = nullptr ) {
250
+ static size_t MemAddrCounter = 1 ;
251
+ *ret_mem = (pi_mem)MemAddrCounter++;
252
+ return PI_SUCCESS;
253
+ }
254
+
255
+ static pi_result redefinedMemRelease (pi_mem mem) { return PI_SUCCESS; }
256
+
257
+ static pi_result redefinedKernelSetArg (pi_kernel kernel, pi_uint32 arg_index,
258
+ size_t arg_size, const void *arg_value) {
259
+ return PI_SUCCESS;
260
+ }
261
+
262
+ static pi_result redefinedEnqueueMemBufferMap (
243
263
pi_queue command_queue, pi_mem buffer, pi_bool blocking_map,
244
264
pi_map_flags map_flags, size_t offset, size_t size,
245
265
pi_uint32 num_events_in_wait_list, const pi_event *event_wait_list,
246
266
pi_event *RetEvent, void **RetMap) {
247
- MemoryMapCounter++;
267
+ int *Ret = new int [1 ];
268
+ *Ret = MemoryMapCounter++;
248
269
// This output here is to reduce amount of time requried to debug/reproduce a
249
270
// failing test upon feature break
250
- printf (" Memory map %i\n " , MemoryMapCounter);
271
+ printf (" Memory map %i\n " , *Ret);
272
+ *RetEvent = reinterpret_cast <pi_event>(Ret);
251
273
252
274
*RetMap = (void *)&ExpectedToOutput;
253
275
254
276
return PI_SUCCESS;
255
277
}
256
278
279
+ static pi_result redefinedExtKernelSetArgMemObj (pi_kernel kernel,
280
+ pi_uint32 arg_index,
281
+ const pi_mem *arg_value) {
282
+ return PI_SUCCESS;
283
+ }
284
+
257
285
static void setupMock (sycl::unittest::PiMock &Mock) {
258
286
using namespace sycl ::detail;
259
- Mock.redefineAfter <PiApiKind::piKernelGetGroupInfo>(
260
- redefinedKernelGetGroupInfoAfter);
261
- Mock.redefineAfter <PiApiKind::piEnqueueKernelLaunch>(
262
- redefinedEnqueueKernelLaunchAfter);
263
- Mock.redefineAfter <PiApiKind::piEnqueueMemBufferMap>(
264
- redefinedEnqueueMemBufferMapAfter);
265
- Mock.redefineBefore <PiApiKind::piEventsWait>(redefinedEventsWaitPositive);
287
+ Mock.redefine <PiApiKind::piKernelGetGroupInfo>(redefinedKernelGetGroupInfo);
288
+ Mock.redefine <PiApiKind::piEnqueueKernelLaunch>(redefinedEnqueueKernelLaunch);
289
+ Mock.redefine <PiApiKind::piMemBufferCreate>(redefinedMemBufferCreate);
290
+ Mock.redefine <PiApiKind::piMemRelease>(redefinedMemRelease);
291
+ Mock.redefine <PiApiKind::piKernelSetArg>(redefinedKernelSetArg);
292
+ Mock.redefine <PiApiKind::piEnqueueMemBufferMap>(redefinedEnqueueMemBufferMap);
293
+ Mock.redefine <PiApiKind::piEventsWait>(redefinedEventsWaitPositive);
294
+ Mock.redefine <PiApiKind::piextKernelSetArgMemObj>(
295
+ redefinedExtKernelSetArgMemObj);
266
296
}
267
297
268
298
namespace TestInteropKernel {
@@ -287,15 +317,12 @@ static pi_result redefinedKernelGetInfo(pi_kernel Kernel,
287
317
}
288
318
289
319
if (PI_KERNEL_INFO_PROGRAM == ParamName) {
290
- pi_program PIProgram = nullptr ;
291
- pi_result Res = mock_piProgramCreate (/* pi_context=*/ 0x0 , /* *il*/ nullptr ,
292
- /* length=*/ 0 , &PIProgram);
293
- assert (PI_SUCCESS == Res);
320
+ cl_program X = (cl_program)1 ;
294
321
295
322
if (ParamValue)
296
- memcpy (ParamValue, &PIProgram , sizeof (PIProgram ));
323
+ memcpy (ParamValue, &X , sizeof (X ));
297
324
if (ParamValueSizeRet)
298
- *ParamValueSizeRet = sizeof (PIProgram );
325
+ *ParamValueSizeRet = sizeof (X );
299
326
300
327
return PI_SUCCESS;
301
328
}
@@ -323,11 +350,13 @@ static pi_result redefinedEnqueueKernelLaunch(pi_queue, pi_kernel, pi_uint32,
323
350
const size_t *LocalSize,
324
351
pi_uint32 N, const pi_event *Deps,
325
352
pi_event *RetEvent) {
326
- int Val = KernelLaunchCounter++;
353
+ int *Ret = new int [1 ];
354
+ *Ret = KernelLaunchCounter++;
327
355
// This output here is to reduce amount of time requried to debug/reproduce a
328
356
// failing test upon feature break
329
- printf (" Enqueued %i\n " , Val );
357
+ printf (" Enqueued %i\n " , *Ret );
330
358
359
+ *RetEvent = reinterpret_cast <pi_event>(Ret);
331
360
return PI_SUCCESS;
332
361
}
333
362
@@ -397,18 +426,21 @@ static void setupMockForInterop(sycl::unittest::PiMock &Mock,
397
426
TestInteropKernel::Device = &Dev;
398
427
TestInteropKernel::Context = &Ctx;
399
428
400
- Mock.redefineAfter <PiApiKind::piKernelGetGroupInfo>(
401
- redefinedKernelGetGroupInfoAfter);
402
- Mock.redefineBefore <PiApiKind::piEnqueueKernelLaunch>(
429
+ Mock.redefine <PiApiKind::piKernelGetGroupInfo>(redefinedKernelGetGroupInfo);
430
+ Mock.redefine <PiApiKind::piEnqueueKernelLaunch>(
403
431
TestInteropKernel::redefinedEnqueueKernelLaunch);
404
- Mock.redefineAfter <PiApiKind::piEnqueueMemBufferMap>(
405
- redefinedEnqueueMemBufferMapAfter);
406
- Mock.redefineBefore <PiApiKind::piEventsWait>(redefinedEventsWaitNegative);
407
- Mock.redefineBefore <PiApiKind::piKernelGetInfo>(
432
+ Mock.redefine <PiApiKind::piMemBufferCreate>(redefinedMemBufferCreate);
433
+ Mock.redefine <PiApiKind::piMemRelease>(redefinedMemRelease);
434
+ Mock.redefine <PiApiKind::piKernelSetArg>(redefinedKernelSetArg);
435
+ Mock.redefine <PiApiKind::piEnqueueMemBufferMap>(redefinedEnqueueMemBufferMap);
436
+ Mock.redefine <PiApiKind::piEventsWait>(redefinedEventsWaitNegative);
437
+ Mock.redefine <PiApiKind::piextKernelSetArgMemObj>(
438
+ redefinedExtKernelSetArgMemObj);
439
+ Mock.redefine <PiApiKind::piKernelGetInfo>(
408
440
TestInteropKernel::redefinedKernelGetInfo);
409
- Mock.redefineBefore <PiApiKind::piProgramGetInfo>(
441
+ Mock.redefine <PiApiKind::piProgramGetInfo>(
410
442
TestInteropKernel::redefinedProgramGetInfo);
411
- Mock.redefineBefore <PiApiKind::piProgramGetBuildInfo>(
443
+ Mock.redefine <PiApiKind::piProgramGetBuildInfo>(
412
444
TestInteropKernel::redefinedProgramGetBuildInfo);
413
445
}
414
446
@@ -549,15 +581,10 @@ TEST(Assert, TestInteropKernelNegative) {
549
581
550
582
sycl::queue Queue{Ctx, Dev};
551
583
552
- pi_kernel PIKernel = nullptr ;
553
-
554
- pi_result Res = mock_piKernelCreate (
555
- /* pi_program=*/ 0x0 , /* kernel_name=*/ " dummy_kernel" , &PIKernel);
556
- assert (PI_SUCCESS == Res);
557
-
584
+ cl_kernel CLKernel = (cl_kernel)(0x01 );
558
585
// TODO use make_kernel. This requires a fix in backend.cpp to get plugin
559
586
// from context instead of free getPlugin to alllow for mocking of its methods
560
- sycl::kernel KInterop ((cl_kernel)PIKernel , Ctx);
587
+ sycl::kernel KInterop (CLKernel , Ctx);
561
588
562
589
Queue.submit ([&](sycl::handler &H) { H.single_task (KInterop); });
563
590
0 commit comments