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