c++ - 通过参数传递 3D 数组,在 C++ 中执行操作并返回
问题描述
我正在尝试传递存储在我的 PYNQ 板直接内存访问中的 3D 数组,执行一个简单的功能并作为输出返回给 DMA。这是我目前拥有的功能:
#include <ap_int.h>
#define BLOCKS 4
#define LENGTH 8
void multiplyArray(volatile ap_uint<32> * input[BLOCKS][LENGTH][LENGTH], volatile ap_uint<32> * output[BLOCKS][LENGTH][LENGTH]){
#pragma HLS INTERFACE axis PORT = input
#pragma HLS INTERFACE axis PORT = output
int x;
int j;
int i;
for(x = 0; x < BLOCKS; x++){
for(j = 0; j < LENGTH; j++){
for(i = 0; i < LENGTH; i++){
output[x][j][i] = input[x][j][i] + 1;
}
}
}
它返回多个错误,包括输入不支持的内存访问,“output[x][j][i] = input[x][j][i] + 1;” 具有读写功能,输入不能设置为轴。对此非常陌生,将不胜感激!
谢谢!
解决方案
简单来说,这部分volatile ap_uint<32> *
需要对应数组项类型。如果数组是 3D 数组类型,ap_uint<32>
那么参数应该是ap_uint<32> input[BLOCKS][LENGTH][LENGTH]
. 例子:
void multiplyArray (ap_uint<32> input [BLOCKS][LENGTH][LENGTH],
ap_uint<32> output [BLOCKS][LENGTH][LENGTH]);
推荐阅读
- c++ - std::string 作为输出参数或返回值
- apache-spark - 如何从 spark UI 中提取所需的信息来触发应用程序?
- android - 如何将托管在 Play 商店的 Android 应用程序从内部测试转移到生产?
- arrays - 如何合并2个数组,其中一个值与另一个值与Ruby中的不同键匹配
- sql - 使用 SQL 一次删除两个物理表并将它们插入以分隔两个临时表
- python - 如何有效地迭代 RDD 或 DataFrames?
- pandas - Python 和 Pandas 的新手,寻求聚合观察的帮助
- mysql - SQL VARCHAR 长度
- python - 如何阻止 blitted 文本在 pygame 中消失?
- javascript - 在多处打印输入值