@@ -1269,43 +1269,35 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
1269
1269
internal_mmd_dispatch.resize (num_board_pkgs);
1270
1270
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " Board MMD is statically linked\n " );
1271
1271
1272
- internal_mmd_dispatch[0 ].library_name = " runtime_static" ;
1273
- internal_mmd_dispatch[0 ].mmd_library = nullptr ;
1274
-
1275
- internal_mmd_dispatch[0 ].aocl_mmd_get_offline_info =
1276
- aocl_mmd_get_offline_info;
1277
-
1278
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_get_offline_info,
1279
- 1 );
1280
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_get_info, 1 );
1281
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_open, 1 );
1282
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_close, 1 );
1283
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ],
1284
- aocl_mmd_set_interrupt_handler, 1 );
1285
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ],
1286
- aocl_mmd_set_device_interrupt_handler, 0 );
1287
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_set_status_handler,
1288
- 1 );
1289
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_yield, 1 );
1290
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_read, 1 );
1291
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_write, 1 );
1292
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_copy, 1 );
1293
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_reprogram, 0 );
1294
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_shared_mem_alloc,
1295
- 0 );
1296
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_shared_mem_free, 0 );
1297
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_hostchannel_create,
1298
- 0 );
1299
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_hostchannel_destroy,
1300
- 0 );
1301
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ],
1302
- aocl_mmd_hostchannel_get_buffer, 0 );
1303
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ],
1304
- aocl_mmd_hostchannel_ack_buffer, 0 );
1305
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_program, 0 );
1306
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_host_alloc, 0 );
1307
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_free, 0 );
1308
- ADD_STATIC_FN_TO_HAL (internal_mmd_dispatch[0 ], aocl_mmd_shared_alloc, 0 );
1272
+ acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[0 ];
1273
+
1274
+ dispatch.library_name = " runtime_static" ;
1275
+ dispatch.mmd_library = nullptr ;
1276
+
1277
+ dispatch.aocl_mmd_get_offline_info = aocl_mmd_get_offline_info;
1278
+
1279
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_get_offline_info, 1 );
1280
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_get_info, 1 );
1281
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_open, 1 );
1282
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_close, 1 );
1283
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_set_interrupt_handler, 1 );
1284
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_set_device_interrupt_handler, 0 );
1285
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_set_status_handler, 1 );
1286
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_yield, 1 );
1287
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_read, 1 );
1288
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_write, 1 );
1289
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_copy, 1 );
1290
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_reprogram, 0 );
1291
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_shared_mem_alloc, 0 );
1292
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_shared_mem_free, 0 );
1293
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_hostchannel_create, 0 );
1294
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_hostchannel_destroy, 0 );
1295
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_hostchannel_get_buffer, 0 );
1296
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_hostchannel_ack_buffer, 0 );
1297
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_program, 0 );
1298
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_host_alloc, 0 );
1299
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_free, 0 );
1300
+ ADD_STATIC_FN_TO_HAL (dispatch, aocl_mmd_shared_alloc, 0 );
1309
1301
} else if (_libraries_to_load) {
1310
1302
for (auto ipass = 0 ; ipass < 2 ; ++ipass) {
1311
1303
cl_bool load_libraries;
@@ -1353,21 +1345,21 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
1353
1345
sys->num_devices = 0 ;
1354
1346
num_physical_devices = 0 ;
1355
1347
for (unsigned iboard = 0 ; iboard < num_board_pkgs; ++iboard) {
1356
- internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info (
1357
- AOCL_MMD_VERSION, sizeof (buf), buf, NULL );
1348
+ acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
1349
+
1350
+ dispatch.aocl_mmd_get_offline_info (AOCL_MMD_VERSION, sizeof (buf), buf,
1351
+ NULL );
1358
1352
buf[sizeof (buf) - 1 ] = 0 ;
1359
- internal_mmd_dispatch[iboard] .mmd_version = atof (buf);
1353
+ dispatch .mmd_version = atof (buf);
1360
1354
min_MMD_version =
1361
- (!MMDVERSION_LESSTHAN (min_MMD_version,
1362
- internal_mmd_dispatch[iboard].mmd_version ))
1363
- ? internal_mmd_dispatch[iboard].mmd_version
1355
+ (!MMDVERSION_LESSTHAN (min_MMD_version, dispatch.mmd_version ))
1356
+ ? dispatch.mmd_version
1364
1357
: min_MMD_version;
1365
1358
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " HAL : Getting info version: %s\n " , buf);
1366
1359
1367
- if (MMDVERSION_LESSTHAN (
1368
- atof (AOCL_MMD_VERSION_STRING),
1369
- internal_mmd_dispatch[iboard].mmd_version ) || // MMD newer than HAL
1370
- MMDVERSION_LESSTHAN (internal_mmd_dispatch[iboard].mmd_version ,
1360
+ if (MMDVERSION_LESSTHAN (atof (AOCL_MMD_VERSION_STRING),
1361
+ dispatch.mmd_version ) || // MMD newer than HAL
1362
+ MMDVERSION_LESSTHAN (dispatch.mmd_version ,
1371
1363
14.0 )) // Before this wasn't forward compatible
1372
1364
{
1373
1365
printf (" Runtime version: %s\n " , AOCL_MMD_VERSION_STRING);
@@ -1381,22 +1373,22 @@ acl_mmd_get_system_definition(acl_system_def_t *sys,
1381
1373
1382
1374
// Dump offline info
1383
1375
if (debug_verbosity > 0 ) {
1384
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1385
- AOCL_MMD_VENDOR_NAME, sizeof (buf), buf, NULL );
1376
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_VENDOR_NAME, sizeof (buf), buf,
1377
+ NULL );
1386
1378
buf[sizeof (buf) - 1 ] = 0 ;
1387
1379
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " HAL : Getting info vendor: %s\n " , buf);
1388
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1389
- AOCL_MMD_NUM_BOARDS, sizeof ( int ), &num_boards, NULL );
1380
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_NUM_BOARDS, sizeof ( int ),
1381
+ &num_boards, NULL );
1390
1382
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " HAL : Getting info num_boards: %d\n " ,
1391
1383
num_boards);
1392
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1393
- AOCL_MMD_BOARD_NAMES, sizeof (buf), buf, NULL );
1384
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_BOARD_NAMES, sizeof (buf), buf,
1385
+ NULL );
1394
1386
buf[sizeof (buf) - 1 ] = 0 ;
1395
1387
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " HAL : Getting info boards: %s\n " , buf);
1396
1388
}
1397
1389
1398
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1399
- AOCL_MMD_BOARD_NAMES, MAX_BOARD_NAMES_LEN, buf, NULL );
1390
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_BOARD_NAMES,
1391
+ MAX_BOARD_NAMES_LEN, buf, NULL );
1400
1392
buf[MAX_BOARD_NAMES_LEN - 1 ] = 0 ;
1401
1393
// Probe the platform devices by going through all the possibilities in the
1402
1394
// semicolon delimited list
@@ -1425,15 +1417,17 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1425
1417
// names might get cached by various routines
1426
1418
1427
1419
for (unsigned iboard = 0 ; iboard < num_board_pkgs; ++iboard) {
1428
- internal_mmd_dispatch[iboard].aocl_mmd_get_offline_info (
1429
- AOCL_MMD_BOARD_NAMES, MAX_BOARD_NAMES_LEN, buf, NULL );
1420
+ acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
1421
+
1422
+ dispatch.aocl_mmd_get_offline_info (AOCL_MMD_BOARD_NAMES,
1423
+ MAX_BOARD_NAMES_LEN, buf, NULL );
1430
1424
buf[MAX_BOARD_NAMES_LEN - 1 ] = 0 ; // ensure it's null terminated
1431
1425
1432
1426
// query for the polling/interrupt mode for each bsp
1433
1427
int uses_yield = 0 ;
1434
- if (!MMDVERSION_LESSTHAN (internal_mmd_dispatch[iboard] .mmd_version , 14.1 )) {
1435
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1436
- AOCL_MMD_USES_YIELD, sizeof ( int ), &uses_yield, NULL );
1428
+ if (!MMDVERSION_LESSTHAN (dispatch .mmd_version , 14.1 )) {
1429
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_USES_YIELD, sizeof ( int ),
1430
+ &uses_yield, NULL );
1437
1431
}
1438
1432
// Probe the platform devices by going through all the possibilities in the
1439
1433
// semicolon delimited list
@@ -1445,8 +1439,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1445
1439
if (devices[idevice] == &(platform->device [physical_device_id])) {
1446
1440
if (devices[idevice]->opened_count == 0 ) {
1447
1441
if (l_try_device (physical_device_id, ptr,
1448
- platform->initial_board_def ,
1449
- &(internal_mmd_dispatch[iboard]))) {
1442
+ platform->initial_board_def , &dispatch)) {
1450
1443
ACL_HAL_DEBUG_MSG_VERBOSE (1 , " Device: %s device is available\n " ,
1451
1444
ptr);
1452
1445
if (uses_yield_ref != -1 && uses_yield != uses_yield_ref) {
@@ -1466,8 +1459,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1466
1459
// Enable yield function. In 14.0 this function was never
1467
1460
// called, in 14.1 it is called only if the offline attribute is
1468
1461
// set.
1469
- if (!MMDVERSION_LESSTHAN (
1470
- internal_mmd_dispatch[iboard].mmd_version , 14.1 )) {
1462
+ if (!MMDVERSION_LESSTHAN (dispatch.mmd_version , 14.1 )) {
1471
1463
((acl_hal_t *)acl_get_hal ())->yield = acl_hal_mmd_yield;
1472
1464
}
1473
1465
}
@@ -1495,9 +1487,10 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1495
1487
physical_device_id = 0 ;
1496
1488
1497
1489
for (unsigned iboard = 0 ; iboard < num_board_pkgs; ++iboard) {
1490
+ acl_mmd_dispatch_t &dispatch = internal_mmd_dispatch[iboard];
1498
1491
1499
- internal_mmd_dispatch[iboard] .aocl_mmd_get_offline_info (
1500
- AOCL_MMD_BOARD_NAMES, MAX_BOARD_NAMES_LEN, buf, NULL );
1492
+ dispatch .aocl_mmd_get_offline_info (AOCL_MMD_BOARD_NAMES,
1493
+ MAX_BOARD_NAMES_LEN, buf, NULL );
1501
1494
buf[MAX_BOARD_NAMES_LEN - 1 ] = 0 ; // ensure it's null terminated
1502
1495
1503
1496
// Probe the platform devices by going through all the possibilities in the
@@ -1515,8 +1508,7 @@ int acl_hal_mmd_try_devices(cl_uint num_devices, const cl_device_id *devices,
1515
1508
for (idevice = 0 ; idevice < num_devices; idevice++) {
1516
1509
if (devices[idevice] == &(platform->device [physical_device_id])) {
1517
1510
if (devices[idevice]->opened_count == 1 ) { // we just opened it
1518
- l_close_device (physical_device_id,
1519
- &(internal_mmd_dispatch[iboard]));
1511
+ l_close_device (physical_device_id, &dispatch);
1520
1512
}
1521
1513
devices[idevice]->opened_count --;
1522
1514
}
0 commit comments