@@ -1335,28 +1335,6 @@ __urdlllocal ur_result_t UR_APICALL urEnqueueMemUnmap(
1335
1335
return UR_RESULT_SUCCESS;
1336
1336
}
1337
1337
1338
- // /////////////////////////////////////////////////////////////////////////////
1339
- // / @brief Intercept function for urKernelCreate
1340
- __urdlllocal ur_result_t UR_APICALL urKernelCreate (
1341
- ur_program_handle_t hProgram, // /< [in] handle of the program instance
1342
- const char *pKernelName, // /< [in] pointer to null-terminated string.
1343
- ur_kernel_handle_t
1344
- *phKernel // /< [out] pointer to handle of kernel object created.
1345
- ) {
1346
- auto pfnCreate = getContext ()->urDdiTable .Kernel .pfnCreate ;
1347
-
1348
- if (nullptr == pfnCreate) {
1349
- return UR_RESULT_ERROR_UNSUPPORTED_FEATURE;
1350
- }
1351
-
1352
- getContext ()->logger .debug (" ==== urKernelCreate" );
1353
-
1354
- UR_CALL (pfnCreate (hProgram, pKernelName, phKernel));
1355
- UR_CALL (getAsanInterceptor ()->insertKernel (*phKernel));
1356
-
1357
- return UR_RESULT_SUCCESS;
1358
- }
1359
-
1360
1338
// /////////////////////////////////////////////////////////////////////////////
1361
1339
// / @brief Intercept function for urKernelRetain
1362
1340
__urdlllocal ur_result_t UR_APICALL urKernelRetain (
@@ -1372,8 +1350,8 @@ __urdlllocal ur_result_t UR_APICALL urKernelRetain(
1372
1350
1373
1351
UR_CALL (pfnRetain (hKernel));
1374
1352
1375
- auto KernelInfo = getAsanInterceptor ()->getKernelInfo (hKernel);
1376
- KernelInfo-> RefCount ++;
1353
+ auto & KernelInfo = getAsanInterceptor ()->getOrCreateKernelInfo (hKernel);
1354
+ KernelInfo. RefCount ++;
1377
1355
1378
1356
return UR_RESULT_SUCCESS;
1379
1357
}
@@ -1392,9 +1370,9 @@ __urdlllocal ur_result_t urKernelRelease(
1392
1370
getContext ()->logger .debug (" ==== urKernelRelease" );
1393
1371
UR_CALL (pfnRelease (hKernel));
1394
1372
1395
- auto KernelInfo = getAsanInterceptor ()->getKernelInfo (hKernel);
1396
- if (--KernelInfo-> RefCount == 0 ) {
1397
- UR_CALL (getAsanInterceptor ()->eraseKernel (hKernel));
1373
+ auto & KernelInfo = getAsanInterceptor ()->getOrCreateKernelInfo (hKernel);
1374
+ if (--KernelInfo. RefCount == 0 ) {
1375
+ UR_CALL (getAsanInterceptor ()->eraseKernelInfo (hKernel));
1398
1376
}
1399
1377
1400
1378
return UR_RESULT_SUCCESS;
@@ -1423,9 +1401,9 @@ __urdlllocal ur_result_t UR_APICALL urKernelSetArgValue(
1423
1401
if (argSize == sizeof (ur_mem_handle_t ) &&
1424
1402
(MemBuffer = getAsanInterceptor ()->getMemBuffer (
1425
1403
*ur_cast<const ur_mem_handle_t *>(pArgValue)))) {
1426
- auto KernelInfo = getAsanInterceptor ()->getKernelInfo (hKernel);
1427
- std::scoped_lock<ur_shared_mutex> Guard (KernelInfo-> Mutex );
1428
- KernelInfo-> BufferArgs [argIndex] = std::move (MemBuffer);
1404
+ auto & KernelInfo = getAsanInterceptor ()->getOrCreateKernelInfo (hKernel);
1405
+ std::scoped_lock<ur_shared_mutex> Guard (KernelInfo. Mutex );
1406
+ KernelInfo. BufferArgs [argIndex] = std::move (MemBuffer);
1429
1407
} else {
1430
1408
UR_CALL (
1431
1409
pfnSetArgValue (hKernel, argIndex, argSize, pProperties, pArgValue));
@@ -1453,9 +1431,9 @@ __urdlllocal ur_result_t UR_APICALL urKernelSetArgMemObj(
1453
1431
1454
1432
std::shared_ptr<MemBuffer> MemBuffer;
1455
1433
if ((MemBuffer = getAsanInterceptor ()->getMemBuffer (hArgValue))) {
1456
- auto KernelInfo = getAsanInterceptor ()->getKernelInfo (hKernel);
1457
- std::scoped_lock<ur_shared_mutex> Guard (KernelInfo-> Mutex );
1458
- KernelInfo-> BufferArgs [argIndex] = std::move (MemBuffer);
1434
+ auto & KernelInfo = getAsanInterceptor ()->getOrCreateKernelInfo (hKernel);
1435
+ std::scoped_lock<ur_shared_mutex> Guard (KernelInfo. Mutex );
1436
+ KernelInfo. BufferArgs [argIndex] = std::move (MemBuffer);
1459
1437
} else {
1460
1438
UR_CALL (pfnSetArgMemObj (hKernel, argIndex, pProperties, hArgValue));
1461
1439
}
@@ -1484,12 +1462,12 @@ __urdlllocal ur_result_t UR_APICALL urKernelSetArgLocal(
1484
1462
argSize);
1485
1463
1486
1464
{
1487
- auto KI = getAsanInterceptor ()->getKernelInfo (hKernel);
1488
- std::scoped_lock<ur_shared_mutex> Guard (KI-> Mutex );
1465
+ auto & KI = getAsanInterceptor ()->getOrCreateKernelInfo (hKernel);
1466
+ std::scoped_lock<ur_shared_mutex> Guard (KI. Mutex );
1489
1467
// TODO: get local variable alignment
1490
1468
auto argSizeWithRZ = GetSizeAndRedzoneSizeForLocal (
1491
1469
argSize, ASAN_SHADOW_GRANULARITY, ASAN_SHADOW_GRANULARITY);
1492
- KI-> LocalArgs [argIndex] = LocalArgsInfo{argSize, argSizeWithRZ};
1470
+ KI. LocalArgs [argIndex] = LocalArgsInfo{argSize, argSizeWithRZ};
1493
1471
argSize = argSizeWithRZ;
1494
1472
}
1495
1473
@@ -1522,9 +1500,9 @@ __urdlllocal ur_result_t UR_APICALL urKernelSetArgPointer(
1522
1500
1523
1501
std::shared_ptr<KernelInfo> KI;
1524
1502
if (getAsanInterceptor ()->getOptions ().DetectKernelArguments ) {
1525
- auto KI = getAsanInterceptor ()->getKernelInfo (hKernel);
1526
- std::scoped_lock<ur_shared_mutex> Guard (KI-> Mutex );
1527
- KI-> PointerArgs [argIndex] = {pArgValue, GetCurrentBacktrace ()};
1503
+ auto & KI = getAsanInterceptor ()->getOrCreateKernelInfo (hKernel);
1504
+ std::scoped_lock<ur_shared_mutex> Guard (KI. Mutex );
1505
+ KI. PointerArgs [argIndex] = {pArgValue, GetCurrentBacktrace ()};
1528
1506
}
1529
1507
1530
1508
ur_result_t result =
@@ -1708,7 +1686,6 @@ __urdlllocal ur_result_t UR_APICALL urGetKernelProcAddrTable(
1708
1686
1709
1687
ur_result_t result = UR_RESULT_SUCCESS;
1710
1688
1711
- pDdiTable->pfnCreate = ur_sanitizer_layer::asan::urKernelCreate;
1712
1689
pDdiTable->pfnRetain = ur_sanitizer_layer::asan::urKernelRetain;
1713
1690
pDdiTable->pfnRelease = ur_sanitizer_layer::asan::urKernelRelease;
1714
1691
pDdiTable->pfnSetArgValue = ur_sanitizer_layer::asan::urKernelSetArgValue;
0 commit comments