@@ -736,24 +736,28 @@ ur_result_t urEnqueueMemBufferWrite(
736736 if (auto MemBuffer = getMsanInterceptor ()->getMemBuffer (hBuffer)) {
737737 ur_device_handle_t Device = GetDevice (hQueue);
738738 char *pDst = nullptr ;
739- ur_event_handle_t Events[2 ];
739+ std::vector<ur_event_handle_t > Events;
740+ ur_event_handle_t Event{};
740741 UR_CALL (MemBuffer->getHandle (Device, pDst));
741742 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy (
742743 hQueue, blockingWrite, pDst + offset, pSrc, size,
743- numEventsInWaitList, phEventWaitList, &Events[0 ]));
744+ numEventsInWaitList, phEventWaitList, &Event));
745+ Events.push_back (Event);
744746
745747 // Update shadow memory
746748 std::shared_ptr<DeviceInfo> DeviceInfo =
747749 getMsanInterceptor ()->getDeviceInfo (Device);
748750 const char Val = 0 ;
749751 uptr ShadowAddr = DeviceInfo->Shadow ->MemToShadow ((uptr)pDst + offset);
752+ Event = nullptr ;
750753 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMFill (
751754 hQueue, (void *)ShadowAddr, 1 , &Val, size, numEventsInWaitList,
752- phEventWaitList, &Events[1 ]));
755+ phEventWaitList, &Event));
756+ Events.push_back (Event);
753757
754758 if (phEvent) {
755759 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
756- hQueue, 2 , Events, phEvent));
760+ hQueue, Events. size () , Events. data () , phEvent));
757761 }
758762 } else {
759763 UR_CALL (pfnMemBufferWrite (hQueue, hBuffer, blockingWrite, offset, size,
@@ -922,23 +926,27 @@ ur_result_t urEnqueueMemBufferCopy(
922926 char *DstHandle = nullptr ;
923927 UR_CALL (DstBuffer->getHandle (Device, DstHandle));
924928
925- ur_event_handle_t Events[2 ];
929+ std::vector<ur_event_handle_t > Events;
930+ ur_event_handle_t Event{};
926931 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy (
927932 hQueue, false , DstHandle + dstOffset, SrcHandle + srcOffset, size,
928- numEventsInWaitList, phEventWaitList, &Events[0 ]));
933+ numEventsInWaitList, phEventWaitList, &Event));
934+ Events.push_back (Event);
929935
930936 // Update shadow memory
931937 uptr DstShadowAddr =
932938 DeviceInfo->Shadow ->MemToShadow ((uptr)DstHandle + dstOffset);
933939 uptr SrcShadowAddr =
934940 DeviceInfo->Shadow ->MemToShadow ((uptr)SrcHandle + srcOffset);
941+ Event = nullptr ;
935942 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy (
936943 hQueue, false , (void *)DstShadowAddr, (void *)SrcShadowAddr, size,
937- numEventsInWaitList, phEventWaitList, &Events[1 ]));
944+ numEventsInWaitList, phEventWaitList, &Event));
945+ Events.push_back (Event);
938946
939947 if (phEvent) {
940948 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
941- hQueue, 2 , Events, phEvent));
949+ hQueue, Events. size () , Events. data () , phEvent));
942950 }
943951 } else {
944952 UR_CALL (pfnMemBufferCopy (hQueue, hBufferSrc, hBufferDst, srcOffset,
@@ -1038,26 +1046,30 @@ ur_result_t urEnqueueMemBufferFill(
10381046
10391047 if (auto MemBuffer = getMsanInterceptor ()->getMemBuffer (hBuffer)) {
10401048 char *Handle = nullptr ;
1041- ur_event_handle_t Events[2 ];
1049+ std::vector<ur_event_handle_t > Events;
1050+ ur_event_handle_t Event{};
10421051 ur_device_handle_t Device = GetDevice (hQueue);
10431052 UR_CALL (MemBuffer->getHandle (Device, Handle));
10441053 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMFill (
10451054 hQueue, Handle + offset, patternSize, pPattern, size,
1046- numEventsInWaitList, phEventWaitList, &Events[0 ]));
1055+ numEventsInWaitList, phEventWaitList, &Event));
1056+ Events.push_back (Event);
10471057
10481058 // Update shadow memory
10491059 std::shared_ptr<DeviceInfo> DeviceInfo =
10501060 getMsanInterceptor ()->getDeviceInfo (Device);
10511061 const char Val = 0 ;
10521062 uptr ShadowAddr =
10531063 DeviceInfo->Shadow ->MemToShadow ((uptr)Handle + offset);
1064+ Event = nullptr ;
10541065 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMFill (
10551066 hQueue, (void *)ShadowAddr, 1 , &Val, size, numEventsInWaitList,
1056- phEventWaitList, &Events[1 ]));
1067+ phEventWaitList, &Event));
1068+ Events.push_back (Event);
10571069
10581070 if (phEvent) {
10591071 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1060- hQueue, 2 , Events, phEvent));
1072+ hQueue, Events. size () , Events. data () , phEvent));
10611073 }
10621074 } else {
10631075 UR_CALL (pfnMemBufferFill (hQueue, hBuffer, pPattern, patternSize, offset,
@@ -1324,9 +1336,11 @@ ur_result_t UR_APICALL urEnqueueUSMFill(
13241336 auto pfnUSMFill = getContext ()->urDdiTable .Enqueue .pfnUSMFill ;
13251337 getContext ()->logger .debug (" ==== urEnqueueUSMFill" );
13261338
1327- ur_event_handle_t hEvents[2 ] = {};
1339+ std::vector<ur_event_handle_t > Events;
1340+ ur_event_handle_t Event{};
13281341 UR_CALL (pfnUSMFill (hQueue, pMem, patternSize, pPattern, size,
1329- numEventsInWaitList, phEventWaitList, &hEvents[0 ]));
1342+ numEventsInWaitList, phEventWaitList, &Event));
1343+ Events.push_back (Event);
13301344
13311345 const auto Mem = (uptr)pMem;
13321346 auto MemInfoItOp = getMsanInterceptor ()->findAllocInfoByAddress (Mem);
@@ -1337,13 +1351,15 @@ ur_result_t UR_APICALL urEnqueueUSMFill(
13371351 getMsanInterceptor ()->getDeviceInfo (MemInfo->Device );
13381352 const auto MemShadow = DeviceInfo->Shadow ->MemToShadow (Mem);
13391353
1354+ Event = nullptr ;
13401355 UR_CALL (EnqueueUSMBlockingSet (hQueue, (void *)MemShadow, 0 , size, 0 ,
1341- nullptr , &hEvents[1 ]));
1356+ nullptr , &Event));
1357+ Events.push_back (Event);
13421358 }
13431359
13441360 if (phEvent) {
13451361 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1346- hQueue, 2 , hEvents , phEvent));
1362+ hQueue, Events. size (), Events. data () , phEvent));
13471363 }
13481364
13491365 return UR_RESULT_SUCCESS;
@@ -1373,9 +1389,11 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy(
13731389 auto pfnUSMMemcpy = getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy ;
13741390 getContext ()->logger .debug (" ==== pfnUSMMemcpy" );
13751391
1376- ur_event_handle_t hEvents[2 ] = {};
1392+ std::vector<ur_event_handle_t > Events;
1393+ ur_event_handle_t Event{};
13771394 UR_CALL (pfnUSMMemcpy (hQueue, blocking, pDst, pSrc, size,
1378- numEventsInWaitList, phEventWaitList, &hEvents[0 ]));
1395+ numEventsInWaitList, phEventWaitList, &Event));
1396+ Events.push_back (Event);
13791397
13801398 const auto Src = (uptr)pSrc, Dst = (uptr)pDst;
13811399 auto SrcInfoItOp = getMsanInterceptor ()->findAllocInfoByAddress (Src);
@@ -1390,22 +1408,26 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy(
13901408 const auto SrcShadow = DeviceInfo->Shadow ->MemToShadow (Src);
13911409 const auto DstShadow = DeviceInfo->Shadow ->MemToShadow (Dst);
13921410
1411+ Event = nullptr ;
13931412 UR_CALL (pfnUSMMemcpy (hQueue, blocking, (void *)DstShadow,
1394- (void *)SrcShadow, size, 0 , nullptr , &hEvents[1 ]));
1413+ (void *)SrcShadow, size, 0 , nullptr , &Event));
1414+ Events.push_back (Event);
13951415 } else if (DstInfoItOp) {
13961416 auto DstInfo = (*DstInfoItOp)->second ;
13971417
13981418 const auto &DeviceInfo =
13991419 getMsanInterceptor ()->getDeviceInfo (DstInfo->Device );
14001420 auto DstShadow = DeviceInfo->Shadow ->MemToShadow (Dst);
14011421
1422+ Event = nullptr ;
14021423 UR_CALL (EnqueueUSMBlockingSet (hQueue, (void *)DstShadow, 0 , size, 0 ,
1403- nullptr , &hEvents[1 ]));
1424+ nullptr , &Event));
1425+ Events.push_back (Event);
14041426 }
14051427
14061428 if (phEvent) {
14071429 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1408- hQueue, 2 , hEvents , phEvent));
1430+ hQueue, Events. size (), Events. data () , phEvent));
14091431 }
14101432
14111433 return UR_RESULT_SUCCESS;
@@ -1441,10 +1463,11 @@ ur_result_t UR_APICALL urEnqueueUSMFill2D(
14411463 auto pfnUSMFill2D = getContext ()->urDdiTable .Enqueue .pfnUSMFill2D ;
14421464 getContext ()->logger .debug (" ==== urEnqueueUSMFill2D" );
14431465
1444- ur_event_handle_t hEvents[2 ] = {};
1466+ std::vector<ur_event_handle_t > Events;
1467+ ur_event_handle_t Event{};
14451468 UR_CALL (pfnUSMFill2D (hQueue, pMem, pitch, patternSize, pPattern, width,
1446- height, numEventsInWaitList, phEventWaitList,
1447- &hEvents[ 0 ]) );
1469+ height, numEventsInWaitList, phEventWaitList, &Event));
1470+ Events. push_back (Event );
14481471
14491472 const auto Mem = (uptr)pMem;
14501473 auto MemInfoItOp = getMsanInterceptor ()->findAllocInfoByAddress (Mem);
@@ -1456,13 +1479,15 @@ ur_result_t UR_APICALL urEnqueueUSMFill2D(
14561479 const auto MemShadow = DeviceInfo->Shadow ->MemToShadow (Mem);
14571480
14581481 const char Pattern = 0 ;
1482+ Event = nullptr ;
14591483 UR_CALL (pfnUSMFill2D (hQueue, (void *)MemShadow, pitch, 1 , &Pattern,
1460- width, height, 0 , nullptr , &hEvents[1 ]));
1484+ width, height, 0 , nullptr , &Event));
1485+ Events.push_back (Event);
14611486 }
14621487
14631488 if (phEvent) {
14641489 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1465- hQueue, 2 , hEvents , phEvent));
1490+ hQueue, Events. size (), Events. data () , phEvent));
14661491 }
14671492
14681493 return UR_RESULT_SUCCESS;
@@ -1497,10 +1522,12 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy2D(
14971522 auto pfnUSMMemcpy2D = getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy2D ;
14981523 getContext ()->logger .debug (" ==== pfnUSMMemcpy2D" );
14991524
1500- ur_event_handle_t hEvents[2 ] = {};
1525+ std::vector<ur_event_handle_t > Events;
1526+ ur_event_handle_t Event{};
15011527 UR_CALL (pfnUSMMemcpy2D (hQueue, blocking, pDst, dstPitch, pSrc, srcPitch,
15021528 width, height, numEventsInWaitList, phEventWaitList,
1503- &hEvents[0 ]));
1529+ &Event));
1530+ Events.push_back (Event);
15041531
15051532 const auto Src = (uptr)pSrc, Dst = (uptr)pDst;
15061533 auto SrcInfoItOp = getMsanInterceptor ()->findAllocInfoByAddress (Src);
@@ -1515,9 +1542,11 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy2D(
15151542 const auto SrcShadow = DeviceInfo->Shadow ->MemToShadow (Src);
15161543 const auto DstShadow = DeviceInfo->Shadow ->MemToShadow (Dst);
15171544
1545+ Event = nullptr ;
15181546 UR_CALL (pfnUSMMemcpy2D (hQueue, blocking, (void *)DstShadow, dstPitch,
15191547 (void *)SrcShadow, srcPitch, width, height, 0 ,
1520- nullptr , &hEvents[1 ]));
1548+ nullptr , &Event));
1549+ Events.push_back (Event);
15211550 } else if (DstInfoItOp) {
15221551 auto DstInfo = (*DstInfoItOp)->second ;
15231552
@@ -1526,14 +1555,16 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy2D(
15261555 const auto DstShadow = DeviceInfo->Shadow ->MemToShadow (Dst);
15271556
15281557 const char Pattern = 0 ;
1558+ Event = nullptr ;
15291559 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMFill2D (
15301560 hQueue, (void *)DstShadow, dstPitch, 1 , &Pattern, width, height, 0 ,
1531- nullptr , &hEvents[1 ]));
1561+ nullptr , &Event));
1562+ Events.push_back (Event);
15321563 }
15331564
15341565 if (phEvent) {
15351566 UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1536- hQueue, 2 , hEvents , phEvent));
1567+ hQueue, Events. size (), Events. data () , phEvent));
15371568 }
15381569
15391570 return UR_RESULT_SUCCESS;
0 commit comments