@@ -378,6 +378,41 @@ TEST_P(urEnqueueKernelLaunchWithUSM, Success) {
378
378
}
379
379
}
380
380
381
+ TEST_P (urEnqueueKernelLaunchWithUSM, WithMemcpy) {
382
+ UUR_KNOWN_FAILURE_ON (uur::LevelZeroV2{});
383
+
384
+ size_t work_dim = 1 ;
385
+ size_t global_offset = 0 ;
386
+ size_t global_size = alloc_size / sizeof (uint32_t );
387
+ uint32_t fill_val = 42 ;
388
+
389
+ ASSERT_SUCCESS (urKernelSetArgPointer (kernel, 0 , nullptr , usmPtr));
390
+ ASSERT_SUCCESS (
391
+ urKernelSetArgValue (kernel, 1 , sizeof (fill_val), nullptr , &fill_val));
392
+
393
+ std::vector<uint32_t > input (global_size, 0 );
394
+ std::vector<uint32_t > data (global_size);
395
+
396
+ ASSERT_SUCCESS (urEnqueueUSMMemcpy (queue, false , usmPtr, input.data (),
397
+ alloc_size, 0 , nullptr , nullptr ));
398
+
399
+ ur_event_handle_t kernel_evt;
400
+ ASSERT_SUCCESS (urEnqueueKernelLaunch (queue, kernel, work_dim, &global_offset,
401
+ &global_size, nullptr , 0 , nullptr ,
402
+ &kernel_evt));
403
+
404
+ ur_event_handle_t memcpy_event;
405
+ ASSERT_SUCCESS (urEnqueueUSMMemcpy (queue, false , data.data (), usmPtr,
406
+ alloc_size, 1 , &kernel_evt, &memcpy_event));
407
+
408
+ ASSERT_SUCCESS (urEventWait (1 , &memcpy_event));
409
+
410
+ // verify fill worked
411
+ for (size_t i = 0 ; i < global_size; i++) {
412
+ ASSERT_EQ (data[i], fill_val);
413
+ }
414
+ }
415
+
381
416
struct urEnqueueKernelLaunchWithVirtualMemory : uur::urKernelExecutionTest {
382
417
383
418
void SetUp () override {
0 commit comments