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