c++ - 将指针数组传递给 Vivado HLS (SDSoC 2018) 中的函数
问题描述
我正在使用 SDSoC 2018.3 Vivado HLS 加速 C++ 函数。这个函数只需要一个指针数组(在 PS 中使用 sds_alloc 分配)。然后,它遍历这个数组,提取其中的每个元素(这是 DDR 内存的地址),并读取位于该地址中的数据。
这是一个演示该想法的简单函数:
float get_data_from_DDR(float *data_addresses_array[10], unsigned int size)
{
float * address;
float sum = 0;
for(unsigned int i = 0; i< 10; i++)
{
address = data_addresses_array[i];
for(unsigned int j = 0; j<size; j++ ) {
sum += address[j];
}
}
return sum;
}
问题是,如果我将指针数组作为顶级函数的参数传递,SDSoC 会引发错误。
在挖掘了 Vivado 的“ug902”手册后,我发现:
“Vivado HLS 支持指向综合指针的指针,但不支持在顶级接口上使用它们,即作为顶级函数的参数。如果在多个函数中使用指向指针的指针,Vivado HLS 会内联所有使用指向指针的函数。内联多个函数可以增加运行时间。”</p>
我不知道如何解决这个问题。
任何帮助表示赞赏。
解决方案
我不确定有没有办法直接克服这个限制,但也许你可以传递一个偏移量数组,然后将这些偏移量用作放置在 DDR 内存中的数组的索引。
推荐阅读
- javascript - 修改嵌套对象中的值
- java - Spring kafka 在运行时重新创建 Kafka Stream Topology
- c# - C# 获取带有字符串名称的数组?
- vue.js - Nuxt Auth 中间件向用户端点发出空请求
- android - 但是我在 travis 上遇到了一个错误,用于生成 singed apk
- javascript - 我如何使用在 JavaScript 中创建的变量来设置 HTML 中图像的“src”属性?
- javascript - 如何防止标签自行更改?
- reactjs - React JS 安装卡住
- r - 取消嵌套列表并保留名称
- mysql - 我应该使用什么类型的数据(MySQL)?