@@ -545,24 +545,61 @@ ur_result_t ur_queue_immediate_in_order_t::enqueueUSMPrefetch(
545
545
const void *pMem, size_t size, ur_usm_migration_flags_t flags,
546
546
uint32_t numEventsInWaitList, const ur_event_handle_t *phEventWaitList,
547
547
ur_event_handle_t *phEvent) {
548
- std::ignore = pMem;
549
- std::ignore = size;
550
548
std::ignore = flags;
551
- std::ignore = numEventsInWaitList;
552
- std::ignore = phEventWaitList;
553
- std::ignore = phEvent;
554
- return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
549
+
550
+ std::scoped_lock<ur_shared_mutex> Lock (this ->Mutex );
551
+
552
+ auto handler = getCommandListHandlerForCompute ();
553
+ auto signalEvent = getSignalEvent (handler, phEvent);
554
+
555
+ auto [pWaitEvents, numWaitEvents] =
556
+ getWaitListView (phEventWaitList, numEventsInWaitList, handler);
557
+
558
+ if (pWaitEvents) {
559
+ ZE2UR_CALL (zeCommandListAppendBarrier, (handler->commandList .get (), nullptr ,
560
+ numWaitEvents, pWaitEvents));
561
+ }
562
+ // TODO: figure out how to translate "flags"
563
+ ZE2UR_CALL (zeCommandListAppendMemoryPrefetch,
564
+ (handler->commandList .get (), pMem, size));
565
+ ZE2UR_CALL (zeCommandListAppendSignalEvent,
566
+ (handler->commandList .get (), signalEvent));
567
+
568
+ lastHandler = handler;
569
+
570
+ return UR_RESULT_SUCCESS;
555
571
}
556
572
557
573
ur_result_t
558
574
ur_queue_immediate_in_order_t::enqueueUSMAdvise (const void *pMem, size_t size,
559
575
ur_usm_advice_flags_t advice,
560
576
ur_event_handle_t *phEvent) {
561
- std::ignore = pMem;
562
- std::ignore = size;
563
- std::ignore = advice;
564
- std::ignore = phEvent;
565
- return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
577
+ std::ignore = flags;
578
+
579
+ auto zeAdvice = ur_cast<ze_memory_advice_t >(advice);
580
+
581
+ std::scoped_lock<ur_shared_mutex> Lock (this ->Mutex );
582
+
583
+ auto handler = getCommandListHandlerForCompute ();
584
+ auto signalEvent = getSignalEvent (handler, phEvent);
585
+
586
+ auto [pWaitEvents, numWaitEvents] = getWaitListView (nullptr , 0 , handler);
587
+
588
+ if (pWaitEvents) {
589
+ ZE2UR_CALL (zeCommandListAppendBarrier, (handler->commandList .get (), nullptr ,
590
+ numWaitEvents, pWaitEvents));
591
+ }
592
+
593
+ // TODO: figure out how to translate "flags"
594
+ ZE2UR_CALL (zeCommandListAppendMemAdvise,
595
+ (handler->commandList .get (), this ->hDevice ->ZeDevice , pMem, size,
596
+ zeAdvice));
597
+ ZE2UR_CALL (zeCommandListAppendSignalEvent,
598
+ (handler->commandList .get (), signalEvent));
599
+
600
+ lastHandler = handler;
601
+
602
+ return UR_RESULT_SUCCESS;
566
603
}
567
604
568
605
ur_result_t ur_queue_immediate_in_order_t::enqueueUSMFill2D (
0 commit comments