@@ -247,11 +247,6 @@ static size_t num_board_pkgs;
247
247
static unsigned num_physical_devices = 0 ;
248
248
static double min_MMD_version = DBL_MAX;
249
249
250
- // Interfaces
251
- static int kernel_interface = -1 ;
252
- static int pll_interface = -1 ;
253
- static int memory_interface = -1 ;
254
-
255
250
static acl_bsp_io bsp_io_kern[ACL_MAX_DEVICE];
256
251
static acl_bsp_io bsp_io_pll[ACL_MAX_DEVICE];
257
252
static acl_kernel_if kern[ACL_MAX_DEVICE];
@@ -1159,6 +1154,9 @@ static int l_try_device(unsigned int physical_device_id, const char *name,
1159
1154
}
1160
1155
1161
1156
// Get interfaces - for now assume one kernel, one pll and one memory
1157
+ int kernel_interface = -1 ;
1158
+ int pll_interface = -1 ;
1159
+ int memory_interface = -1 ;
1162
1160
ACL_HAL_DEBUG_MSG_VERBOSE (1 ,
1163
1161
" HAL : Getting interfaces via aocl_mmd_get_info\n " );
1164
1162
device->mmd_dispatch ->aocl_mmd_get_info (device->handle ,
@@ -1182,22 +1180,23 @@ static int l_try_device(unsigned int physical_device_id, const char *name,
1182
1180
printf (" Error mmd_get_info: handles for kernel, pll, and memory must be "
1183
1181
" unique and greater than 0\n " );
1184
1182
}
1183
+ device->mmd_ifaces .kernel_interface = kernel_interface;
1184
+ device->mmd_ifaces .pll_interface = pll_interface;
1185
+ device->mmd_ifaces .memory_interface = memory_interface;
1186
+
1185
1187
device->mmd_dispatch ->aocl_mmd_set_status_handler (
1186
1188
device->handle , acl_hal_mmd_status_handler, NULL );
1187
1189
1188
1190
kern[physical_device_id].physical_device_id = physical_device_id;
1189
1191
1190
- bsp_io_kern[physical_device_id].debug_verbosity = debug_verbosity;
1191
-
1192
1192
// Initialize PLL
1193
1193
if (pll_interface >= 0 ) {
1194
1194
bsp_io_pll[physical_device_id].device_info = device;
1195
1195
bsp_io_pll[physical_device_id].read = acl_pll_read;
1196
1196
bsp_io_pll[physical_device_id].write = acl_pll_write;
1197
1197
bsp_io_pll[physical_device_id].get_time_ns = acl_bsp_get_timestamp;
1198
1198
bsp_io_pll[physical_device_id].printf = printf;
1199
- bsp_io_pll[physical_device_id].debug_verbosity =
1200
- bsp_io_kern[physical_device_id].debug_verbosity ;
1199
+ bsp_io_pll[physical_device_id].debug_verbosity = debug_verbosity;
1201
1200
info_assert (acl_pll_init (&pll[physical_device_id],
1202
1201
bsp_io_pll[physical_device_id], " " ) == 0 ,
1203
1202
" Failed to read PLL config" );
@@ -1215,6 +1214,7 @@ static int l_try_device(unsigned int physical_device_id, const char *name,
1215
1214
bsp_io_kern[physical_device_id].write = acl_kernel_if_write;
1216
1215
bsp_io_kern[physical_device_id].get_time_ns = acl_bsp_get_timestamp;
1217
1216
bsp_io_kern[physical_device_id].printf = printf;
1217
+ bsp_io_kern[physical_device_id].debug_verbosity = debug_verbosity;
1218
1218
1219
1219
info_assert (acl_kernel_if_init (&kern[physical_device_id],
1220
1220
bsp_io_kern[physical_device_id], sys) == 0 ,
@@ -1892,7 +1892,7 @@ int acl_hal_mmd_program_device(unsigned int physical_device_id,
1892
1892
device_info[physical_device_id].mmd_dispatch ->aocl_mmd_set_status_handler (
1893
1893
device_info[physical_device_id].handle , acl_hal_mmd_status_handler, NULL );
1894
1894
acl_kernel_if_update (devdef->autodiscovery_def , &kern[physical_device_id]);
1895
- if (pll_interface >= 0 ) {
1895
+ if (device_info[physical_device_id]. mmd_ifaces . pll_interface >= 0 ) {
1896
1896
if (acl_pkg_section_exists (binary, ACL_PKG_SECTION_PLL_CONFIG,
1897
1897
&pll_config_len)) {
1898
1898
info_assert (acl_pll_init (&pll[physical_device_id],
@@ -2099,7 +2099,8 @@ void acl_hal_mmd_copy_hostmem_to_globalmem(cl_event event, const void *src,
2099
2099
2100
2100
s = device_info[physical_device_id].mmd_dispatch ->aocl_mmd_write (
2101
2101
device_info[physical_device_id].handle , (aocl_mmd_op_t )event, size, src,
2102
- memory_interface, (size_t )ACL_STRIP_PHYSICAL_ID (dest));
2102
+ device_info[physical_device_id].mmd_ifaces .memory_interface ,
2103
+ (size_t )ACL_STRIP_PHYSICAL_ID (dest));
2103
2104
assert (s == 0 && " mmd read/write failed" );
2104
2105
}
2105
2106
@@ -2122,7 +2123,8 @@ void acl_hal_mmd_copy_globalmem_to_hostmem(cl_event event, const void *src,
2122
2123
2123
2124
s = device_info[physical_device_id].mmd_dispatch ->aocl_mmd_read (
2124
2125
device_info[physical_device_id].handle , (aocl_mmd_op_t )event, size, dest,
2125
- memory_interface, (size_t )ACL_STRIP_PHYSICAL_ID (src));
2126
+ device_info[physical_device_id].mmd_ifaces .memory_interface ,
2127
+ (size_t )ACL_STRIP_PHYSICAL_ID (src));
2126
2128
assert (s == 0 && " mmd read/write failed" );
2127
2129
}
2128
2130
@@ -2150,7 +2152,8 @@ void acl_hal_mmd_copy_globalmem_to_globalmem(cl_event event, const void *src,
2150
2152
// Let the MMD provider do the intra-device copy.
2151
2153
s = device_info[physical_device_id_src].mmd_dispatch ->aocl_mmd_copy (
2152
2154
device_info[physical_device_id_src].handle , (aocl_mmd_op_t )event, size,
2153
- memory_interface, (size_t )ACL_STRIP_PHYSICAL_ID (src),
2155
+ device_info[physical_device_id_src].mmd_ifaces .memory_interface ,
2156
+ (size_t )ACL_STRIP_PHYSICAL_ID (src),
2154
2157
(size_t )ACL_STRIP_PHYSICAL_ID (dest));
2155
2158
} else {
2156
2159
// Copy from device to device via host memory.
@@ -2174,7 +2177,9 @@ void acl_hal_mmd_copy_globalmem_to_globalmem(cl_event event, const void *src,
2174
2177
// Read the initial block into data[0]
2175
2178
s = device_info[physical_device_id_src].mmd_dispatch ->aocl_mmd_read (
2176
2179
device_info[physical_device_id_src].handle , NULL , transfer_size,
2177
- &data[0 ][0 ], memory_interface, (size_t )ACL_STRIP_PHYSICAL_ID (src));
2180
+ &data[0 ][0 ],
2181
+ device_info[physical_device_id_src].mmd_ifaces .memory_interface ,
2182
+ (size_t )ACL_STRIP_PHYSICAL_ID (src));
2178
2183
src = (const char *)src + transfer_size;
2179
2184
size -= transfer_size;
2180
2185
@@ -2198,13 +2203,15 @@ void acl_hal_mmd_copy_globalmem_to_globalmem(cl_event event, const void *src,
2198
2203
2199
2204
device_info[physical_device_id_dst].mmd_dispatch ->aocl_mmd_write (
2200
2205
device_info[physical_device_id_dst].handle , &dst_dev_done,
2201
- transfer_size, &data[buffer][0 ], memory_interface,
2206
+ transfer_size, &data[buffer][0 ],
2207
+ device_info[physical_device_id_dst].mmd_ifaces .memory_interface ,
2202
2208
(size_t )ACL_STRIP_PHYSICAL_ID (dest));
2203
2209
2204
2210
if (transfer_size_next)
2205
2211
device_info[physical_device_id_src].mmd_dispatch ->aocl_mmd_read (
2206
2212
device_info[physical_device_id_src].handle , &src_dev_done,
2207
- transfer_size_next, &data[1 - buffer][0 ], memory_interface,
2213
+ transfer_size_next, &data[1 - buffer][0 ],
2214
+ device_info[physical_device_id_src].mmd_ifaces .memory_interface ,
2208
2215
(size_t )ACL_STRIP_PHYSICAL_ID (src));
2209
2216
else
2210
2217
src_dev_done = 1 ;
@@ -2787,7 +2794,7 @@ static size_t acl_kernel_if_read(acl_bsp_io *io, dev_addr_t src, char *dest,
2787
2794
size, (size_t )src, (size_t )dest);
2788
2795
return io->device_info ->mmd_dispatch ->aocl_mmd_read (
2789
2796
io->device_info ->handle , NULL , size, (void *)dest,
2790
- kernel_interface, (size_t )src) == 0
2797
+ io-> device_info -> mmd_ifaces . kernel_interface , (size_t )src) == 0
2791
2798
? size
2792
2799
: 0 ;
2793
2800
}
@@ -2800,7 +2807,7 @@ static size_t acl_kernel_if_write(acl_bsp_io *io, dev_addr_t dest,
2800
2807
size, (size_t )src, (size_t )dest);
2801
2808
return io->device_info ->mmd_dispatch ->aocl_mmd_write (
2802
2809
io->device_info ->handle , NULL , size, (const void *)src,
2803
- kernel_interface, (size_t )dest) == 0
2810
+ io-> device_info -> mmd_ifaces . kernel_interface , (size_t )dest) == 0
2804
2811
? size
2805
2812
: 0 ;
2806
2813
}
@@ -2812,8 +2819,8 @@ static size_t acl_pll_read(acl_bsp_io *io, dev_addr_t src, char *dest,
2812
2819
ACL_HAL_DEBUG_MSG_VERBOSE (5 , " HAL Reading from PLL: %zu bytes %zx -> %zx\n " ,
2813
2820
size, (size_t )src, (size_t )dest);
2814
2821
return io->device_info ->mmd_dispatch ->aocl_mmd_read (
2815
- io->device_info ->handle , NULL , size, (void *)dest, pll_interface,
2816
- (size_t )src) == 0
2822
+ io->device_info ->handle , NULL , size, (void *)dest,
2823
+ io-> device_info -> mmd_ifaces . pll_interface , (size_t )src) == 0
2817
2824
? size
2818
2825
: 0 ;
2819
2826
}
@@ -2826,7 +2833,7 @@ static size_t acl_pll_write(acl_bsp_io *io, dev_addr_t dest, const char *src,
2826
2833
size, (size_t )src, (size_t )dest);
2827
2834
return io->device_info ->mmd_dispatch ->aocl_mmd_write (
2828
2835
io->device_info ->handle , NULL , size, (const void *)src,
2829
- pll_interface, (size_t )dest) == 0
2836
+ io-> device_info -> mmd_ifaces . pll_interface , (size_t )dest) == 0
2830
2837
? size
2831
2838
: 0 ;
2832
2839
}
@@ -3079,14 +3086,16 @@ size_t acl_hal_mmd_read_csr(unsigned int physical_device_id, uintptr_t offset,
3079
3086
void *ptr, size_t size) {
3080
3087
return device_info[physical_device_id].mmd_dispatch ->aocl_mmd_read (
3081
3088
device_info[physical_device_id].handle , NULL , size, (void *)ptr,
3082
- kernel_interface, (size_t )offset);
3089
+ device_info[physical_device_id].mmd_ifaces .kernel_interface ,
3090
+ (size_t )offset);
3083
3091
}
3084
3092
3085
3093
size_t acl_hal_mmd_write_csr (unsigned int physical_device_id, uintptr_t offset,
3086
3094
const void *ptr, size_t size) {
3087
3095
return device_info[physical_device_id].mmd_dispatch ->aocl_mmd_write (
3088
3096
device_info[physical_device_id].handle , NULL , size, (const void *)ptr,
3089
- kernel_interface, (size_t )offset);
3097
+ device_info[physical_device_id].mmd_ifaces .kernel_interface ,
3098
+ (size_t )offset);
3090
3099
}
3091
3100
3092
3101
void acl_hal_mmd_simulation_streaming_kernel_start (
0 commit comments