Skip to content

Commit 2f4db1e

Browse files
committed
kernel_if: pass streaming control signal names to simulator
For the case of streaming control kernels in IP authoring, when passing the start and done signals to the simulator MMD, instead of the kernel interface name, pass the full signal names from the auto-discovery string. Before this change, the runtime would pass the kernel name, e.g., `_ZTSZ4mainE4MyIP` without the prefix including the kernel index in case of multiple kernels. After this change, the runtime passes the full signal names, e.g., `k0_ZTSZ4mainE4MyIP_streaming_start` including the kernel index prefix and the streaming control signal suffix. This amends #103 Signed-off-by: Peter Colberg <peter.colberg@intel.com>
1 parent 6a9fa7d commit 2f4db1e

File tree

4 files changed

+16
-15
lines changed

4 files changed

+16
-15
lines changed

include/acl_hal.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -241,9 +241,9 @@ typedef struct {
241241
mem_properties_t *properties, int *error);
242242

243243
void (*simulation_streaming_kernel_start)(unsigned int physical_device_id,
244-
const std::string &kernel_name);
244+
const std::string &signal_name);
245245
void (*simulation_streaming_kernel_done)(unsigned int physical_device_id,
246-
const std::string &kernel_name,
246+
const std::string &signal_name,
247247
unsigned int &finish_counter);
248248
} acl_hal_t;
249249

include/acl_hal_mmd.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -139,7 +139,7 @@ typedef struct {
139139

140140
// Submits streaming kernel control start signal to simulator.
141141
void (*aocl_mmd_simulation_streaming_kernel_start)(
142-
int handle, const std::string &kernel_name);
142+
int handle, const std::string &signal_name);
143143

144144
// Queries streaming kernel control done signal from simulator.
145145
// Returns non-negative number of finished kernels invocations.
@@ -148,7 +148,7 @@ typedef struct {
148148
// invocations that finish *while* this function is invoked are properly
149149
// accounted and returned in a subsequent invocation of this function.
150150
void (*aocl_mmd_simulation_streaming_kernel_done)(
151-
int handle, const std::string &kernel_name, unsigned int &finish_counter);
151+
int handle, const std::string &signal_name, unsigned int &finish_counter);
152152
} acl_mmd_dispatch_t;
153153

154154
typedef struct {

include/acl_kernel_if.h

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,8 @@ typedef struct {
3939
acl_kernel_if_addr_range *accel_perf_mon;
4040
unsigned int *accel_num_printfs;
4141

42-
std::vector<std::optional<std::string>> streaming_control_kernel_names;
42+
std::vector<std::optional<acl_streaming_kernel_control_info>>
43+
streaming_control_signal_names;
4344

4445
// Track potential hangs
4546
time_ns last_kern_update;

src/acl_kernel_if.cpp

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -949,14 +949,14 @@ int acl_kernel_if_update(const acl_device_def_autodiscovery_t &devdef,
949949
}
950950
}
951951

952-
kern->streaming_control_kernel_names.clear();
953-
kern->streaming_control_kernel_names.reserve(devdef.accel.size());
952+
kern->streaming_control_signal_names.clear();
953+
kern->streaming_control_signal_names.reserve(devdef.accel.size());
954954
for (const auto &accel : devdef.accel) {
955-
std::optional<std::string> kernel_name;
955+
std::optional<acl_streaming_kernel_control_info> signal_names;
956956
if (accel.streaming_control_info_available) {
957-
kernel_name = accel.iface.name;
957+
signal_names = accel.streaming_control_info;
958958
}
959-
kern->streaming_control_kernel_names.emplace_back(kernel_name);
959+
kern->streaming_control_signal_names.emplace_back(signal_names);
960960
}
961961
}
962962

@@ -1266,10 +1266,10 @@ void acl_kernel_if_launch_kernel_on_custom_sof(
12661266
}
12671267
kern->accel_queue_front[accel_id] = next_launch_index;
12681268

1269-
if (kern->streaming_control_kernel_names[accel_id]) {
1269+
if (kern->streaming_control_signal_names[accel_id]) {
12701270
acl_get_hal()->simulation_streaming_kernel_start(
12711271
kern->physical_device_id,
1272-
*kern->streaming_control_kernel_names[accel_id]);
1272+
kern->streaming_control_signal_names[accel_id]->start);
12731273
return;
12741274
}
12751275

@@ -1510,10 +1510,10 @@ void acl_kernel_if_update_status(acl_kernel_if *kern) {
15101510
unsigned int finish_counter = 0;
15111511
unsigned int printf_size = 0;
15121512

1513-
if (kern->streaming_control_kernel_names[accel_id]) {
1513+
if (kern->streaming_control_signal_names[accel_id]) {
15141514
acl_get_hal()->simulation_streaming_kernel_done(
15151515
kern->physical_device_id,
1516-
*kern->streaming_control_kernel_names[accel_id], finish_counter);
1516+
kern->streaming_control_signal_names[accel_id]->done, finish_counter);
15171517
} else {
15181518
acl_kernel_if_update_status_query(kern, accel_id, activation_id,
15191519
finish_counter, printf_size);
@@ -1531,7 +1531,7 @@ void acl_kernel_if_update_status(acl_kernel_if *kern) {
15311531
// Tell the host library this job is done
15321532
kern->accel_job_ids[accel_id][next_queue_back] = -1;
15331533

1534-
if (!kern->streaming_control_kernel_names[accel_id]) {
1534+
if (!kern->streaming_control_signal_names[accel_id]) {
15351535
acl_kernel_if_update_status_finish(kern, accel_id, activation_id,
15361536
printf_size);
15371537
}

0 commit comments

Comments
 (0)