@@ -736,24 +736,28 @@ ur_result_t urEnqueueMemBufferWrite(
736
736
if (auto MemBuffer = getMsanInterceptor ()->getMemBuffer (hBuffer)) {
737
737
ur_device_handle_t Device = GetDevice (hQueue);
738
738
char *pDst = nullptr ;
739
- ur_event_handle_t Events[2 ];
739
+ std::vector<ur_event_handle_t > Events;
740
+ ur_event_handle_t Event{};
740
741
UR_CALL (MemBuffer->getHandle (Device, pDst));
741
742
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy (
742
743
hQueue, blockingWrite, pDst + offset, pSrc, size,
743
- numEventsInWaitList, phEventWaitList, &Events[0 ]));
744
+ numEventsInWaitList, phEventWaitList, &Event));
745
+ Events.push_back (Event);
744
746
745
747
// Update shadow memory
746
748
std::shared_ptr<DeviceInfo> DeviceInfo =
747
749
getMsanInterceptor ()->getDeviceInfo (Device);
748
750
const char Val = 0 ;
749
751
uptr ShadowAddr = DeviceInfo->Shadow ->MemToShadow ((uptr)pDst + offset);
752
+ Event = nullptr ;
750
753
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMFill (
751
754
hQueue, (void *)ShadowAddr, 1 , &Val, size, numEventsInWaitList,
752
- phEventWaitList, &Events[1 ]));
755
+ phEventWaitList, &Event));
756
+ Events.push_back (Event);
753
757
754
758
if (phEvent) {
755
759
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
756
- hQueue, 2 , Events, phEvent));
760
+ hQueue, Events. size () , Events. data () , phEvent));
757
761
}
758
762
} else {
759
763
UR_CALL (pfnMemBufferWrite (hQueue, hBuffer, blockingWrite, offset, size,
@@ -922,23 +926,27 @@ ur_result_t urEnqueueMemBufferCopy(
922
926
char *DstHandle = nullptr ;
923
927
UR_CALL (DstBuffer->getHandle (Device, DstHandle));
924
928
925
- ur_event_handle_t Events[2 ];
929
+ std::vector<ur_event_handle_t > Events;
930
+ ur_event_handle_t Event{};
926
931
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy (
927
932
hQueue, false , DstHandle + dstOffset, SrcHandle + srcOffset, size,
928
- numEventsInWaitList, phEventWaitList, &Events[0 ]));
933
+ numEventsInWaitList, phEventWaitList, &Event));
934
+ Events.push_back (Event);
929
935
930
936
// Update shadow memory
931
937
uptr DstShadowAddr =
932
938
DeviceInfo->Shadow ->MemToShadow ((uptr)DstHandle + dstOffset);
933
939
uptr SrcShadowAddr =
934
940
DeviceInfo->Shadow ->MemToShadow ((uptr)SrcHandle + srcOffset);
941
+ Event = nullptr ;
935
942
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy (
936
943
hQueue, false , (void *)DstShadowAddr, (void *)SrcShadowAddr, size,
937
- numEventsInWaitList, phEventWaitList, &Events[1 ]));
944
+ numEventsInWaitList, phEventWaitList, &Event));
945
+ Events.push_back (Event);
938
946
939
947
if (phEvent) {
940
948
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
941
- hQueue, 2 , Events, phEvent));
949
+ hQueue, Events. size () , Events. data () , phEvent));
942
950
}
943
951
} else {
944
952
UR_CALL (pfnMemBufferCopy (hQueue, hBufferSrc, hBufferDst, srcOffset,
@@ -1038,26 +1046,30 @@ ur_result_t urEnqueueMemBufferFill(
1038
1046
1039
1047
if (auto MemBuffer = getMsanInterceptor ()->getMemBuffer (hBuffer)) {
1040
1048
char *Handle = nullptr ;
1041
- ur_event_handle_t Events[2 ];
1049
+ std::vector<ur_event_handle_t > Events;
1050
+ ur_event_handle_t Event{};
1042
1051
ur_device_handle_t Device = GetDevice (hQueue);
1043
1052
UR_CALL (MemBuffer->getHandle (Device, Handle));
1044
1053
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMFill (
1045
1054
hQueue, Handle + offset, patternSize, pPattern, size,
1046
- numEventsInWaitList, phEventWaitList, &Events[0 ]));
1055
+ numEventsInWaitList, phEventWaitList, &Event));
1056
+ Events.push_back (Event);
1047
1057
1048
1058
// Update shadow memory
1049
1059
std::shared_ptr<DeviceInfo> DeviceInfo =
1050
1060
getMsanInterceptor ()->getDeviceInfo (Device);
1051
1061
const char Val = 0 ;
1052
1062
uptr ShadowAddr =
1053
1063
DeviceInfo->Shadow ->MemToShadow ((uptr)Handle + offset);
1064
+ Event = nullptr ;
1054
1065
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMFill (
1055
1066
hQueue, (void *)ShadowAddr, 1 , &Val, size, numEventsInWaitList,
1056
- phEventWaitList, &Events[1 ]));
1067
+ phEventWaitList, &Event));
1068
+ Events.push_back (Event);
1057
1069
1058
1070
if (phEvent) {
1059
1071
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1060
- hQueue, 2 , Events, phEvent));
1072
+ hQueue, Events. size () , Events. data () , phEvent));
1061
1073
}
1062
1074
} else {
1063
1075
UR_CALL (pfnMemBufferFill (hQueue, hBuffer, pPattern, patternSize, offset,
@@ -1324,9 +1336,11 @@ ur_result_t UR_APICALL urEnqueueUSMFill(
1324
1336
auto pfnUSMFill = getContext ()->urDdiTable .Enqueue .pfnUSMFill ;
1325
1337
getContext ()->logger .debug (" ==== urEnqueueUSMFill" );
1326
1338
1327
- ur_event_handle_t hEvents[2 ] = {};
1339
+ std::vector<ur_event_handle_t > Events;
1340
+ ur_event_handle_t Event{};
1328
1341
UR_CALL (pfnUSMFill (hQueue, pMem, patternSize, pPattern, size,
1329
- numEventsInWaitList, phEventWaitList, &hEvents[0 ]));
1342
+ numEventsInWaitList, phEventWaitList, &Event));
1343
+ Events.push_back (Event);
1330
1344
1331
1345
const auto Mem = (uptr)pMem;
1332
1346
auto MemInfoItOp = getMsanInterceptor ()->findAllocInfoByAddress (Mem);
@@ -1337,13 +1351,15 @@ ur_result_t UR_APICALL urEnqueueUSMFill(
1337
1351
getMsanInterceptor ()->getDeviceInfo (MemInfo->Device );
1338
1352
const auto MemShadow = DeviceInfo->Shadow ->MemToShadow (Mem);
1339
1353
1354
+ Event = nullptr ;
1340
1355
UR_CALL (EnqueueUSMBlockingSet (hQueue, (void *)MemShadow, 0 , size, 0 ,
1341
- nullptr , &hEvents[1 ]));
1356
+ nullptr , &Event));
1357
+ Events.push_back (Event);
1342
1358
}
1343
1359
1344
1360
if (phEvent) {
1345
1361
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1346
- hQueue, 2 , hEvents , phEvent));
1362
+ hQueue, Events. size (), Events. data () , phEvent));
1347
1363
}
1348
1364
1349
1365
return UR_RESULT_SUCCESS;
@@ -1373,9 +1389,11 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy(
1373
1389
auto pfnUSMMemcpy = getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy ;
1374
1390
getContext ()->logger .debug (" ==== pfnUSMMemcpy" );
1375
1391
1376
- ur_event_handle_t hEvents[2 ] = {};
1392
+ std::vector<ur_event_handle_t > Events;
1393
+ ur_event_handle_t Event{};
1377
1394
UR_CALL (pfnUSMMemcpy (hQueue, blocking, pDst, pSrc, size,
1378
- numEventsInWaitList, phEventWaitList, &hEvents[0 ]));
1395
+ numEventsInWaitList, phEventWaitList, &Event));
1396
+ Events.push_back (Event);
1379
1397
1380
1398
const auto Src = (uptr)pSrc, Dst = (uptr)pDst;
1381
1399
auto SrcInfoItOp = getMsanInterceptor ()->findAllocInfoByAddress (Src);
@@ -1390,22 +1408,26 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy(
1390
1408
const auto SrcShadow = DeviceInfo->Shadow ->MemToShadow (Src);
1391
1409
const auto DstShadow = DeviceInfo->Shadow ->MemToShadow (Dst);
1392
1410
1411
+ Event = nullptr ;
1393
1412
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);
1395
1415
} else if (DstInfoItOp) {
1396
1416
auto DstInfo = (*DstInfoItOp)->second ;
1397
1417
1398
1418
const auto &DeviceInfo =
1399
1419
getMsanInterceptor ()->getDeviceInfo (DstInfo->Device );
1400
1420
auto DstShadow = DeviceInfo->Shadow ->MemToShadow (Dst);
1401
1421
1422
+ Event = nullptr ;
1402
1423
UR_CALL (EnqueueUSMBlockingSet (hQueue, (void *)DstShadow, 0 , size, 0 ,
1403
- nullptr , &hEvents[1 ]));
1424
+ nullptr , &Event));
1425
+ Events.push_back (Event);
1404
1426
}
1405
1427
1406
1428
if (phEvent) {
1407
1429
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1408
- hQueue, 2 , hEvents , phEvent));
1430
+ hQueue, Events. size (), Events. data () , phEvent));
1409
1431
}
1410
1432
1411
1433
return UR_RESULT_SUCCESS;
@@ -1441,10 +1463,11 @@ ur_result_t UR_APICALL urEnqueueUSMFill2D(
1441
1463
auto pfnUSMFill2D = getContext ()->urDdiTable .Enqueue .pfnUSMFill2D ;
1442
1464
getContext ()->logger .debug (" ==== urEnqueueUSMFill2D" );
1443
1465
1444
- ur_event_handle_t hEvents[2 ] = {};
1466
+ std::vector<ur_event_handle_t > Events;
1467
+ ur_event_handle_t Event{};
1445
1468
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 );
1448
1471
1449
1472
const auto Mem = (uptr)pMem;
1450
1473
auto MemInfoItOp = getMsanInterceptor ()->findAllocInfoByAddress (Mem);
@@ -1456,13 +1479,15 @@ ur_result_t UR_APICALL urEnqueueUSMFill2D(
1456
1479
const auto MemShadow = DeviceInfo->Shadow ->MemToShadow (Mem);
1457
1480
1458
1481
const char Pattern = 0 ;
1482
+ Event = nullptr ;
1459
1483
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);
1461
1486
}
1462
1487
1463
1488
if (phEvent) {
1464
1489
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1465
- hQueue, 2 , hEvents , phEvent));
1490
+ hQueue, Events. size (), Events. data () , phEvent));
1466
1491
}
1467
1492
1468
1493
return UR_RESULT_SUCCESS;
@@ -1497,10 +1522,12 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy2D(
1497
1522
auto pfnUSMMemcpy2D = getContext ()->urDdiTable .Enqueue .pfnUSMMemcpy2D ;
1498
1523
getContext ()->logger .debug (" ==== pfnUSMMemcpy2D" );
1499
1524
1500
- ur_event_handle_t hEvents[2 ] = {};
1525
+ std::vector<ur_event_handle_t > Events;
1526
+ ur_event_handle_t Event{};
1501
1527
UR_CALL (pfnUSMMemcpy2D (hQueue, blocking, pDst, dstPitch, pSrc, srcPitch,
1502
1528
width, height, numEventsInWaitList, phEventWaitList,
1503
- &hEvents[0 ]));
1529
+ &Event));
1530
+ Events.push_back (Event);
1504
1531
1505
1532
const auto Src = (uptr)pSrc, Dst = (uptr)pDst;
1506
1533
auto SrcInfoItOp = getMsanInterceptor ()->findAllocInfoByAddress (Src);
@@ -1515,9 +1542,11 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy2D(
1515
1542
const auto SrcShadow = DeviceInfo->Shadow ->MemToShadow (Src);
1516
1543
const auto DstShadow = DeviceInfo->Shadow ->MemToShadow (Dst);
1517
1544
1545
+ Event = nullptr ;
1518
1546
UR_CALL (pfnUSMMemcpy2D (hQueue, blocking, (void *)DstShadow, dstPitch,
1519
1547
(void *)SrcShadow, srcPitch, width, height, 0 ,
1520
- nullptr , &hEvents[1 ]));
1548
+ nullptr , &Event));
1549
+ Events.push_back (Event);
1521
1550
} else if (DstInfoItOp) {
1522
1551
auto DstInfo = (*DstInfoItOp)->second ;
1523
1552
@@ -1526,14 +1555,16 @@ ur_result_t UR_APICALL urEnqueueUSMMemcpy2D(
1526
1555
const auto DstShadow = DeviceInfo->Shadow ->MemToShadow (Dst);
1527
1556
1528
1557
const char Pattern = 0 ;
1558
+ Event = nullptr ;
1529
1559
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnUSMFill2D (
1530
1560
hQueue, (void *)DstShadow, dstPitch, 1 , &Pattern, width, height, 0 ,
1531
- nullptr , &hEvents[1 ]));
1561
+ nullptr , &Event));
1562
+ Events.push_back (Event);
1532
1563
}
1533
1564
1534
1565
if (phEvent) {
1535
1566
UR_CALL (getContext ()->urDdiTable .Enqueue .pfnEventsWait (
1536
- hQueue, 2 , hEvents , phEvent));
1567
+ hQueue, Events. size (), Events. data () , phEvent));
1537
1568
}
1538
1569
1539
1570
return UR_RESULT_SUCCESS;
0 commit comments