@@ -379,6 +379,41 @@ TEST_P(urEnqueueKernelLaunchWithUSM, Success) {
379379 }
380380}
381381
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+
382417struct urEnqueueKernelLaunchWithVirtualMemory : uur::urKernelExecutionTest {
383418
384419 void SetUp () override {
0 commit comments