ERROR: [HLS 200-1715] Encountered problem during source synthesis

工具:Vitis_HLS 2022.2

我尝试用HLS部署一个神经网络时,在HLS Synthesis阶段出现如下信息,且无其他任何报错

ERROR: [HLS 200-1715] Encountered problem during source synthesis

显示综合失败,但仿真是通过的。经检查是权重文件“param.h”的问题。在该文件中一共定义了8个二维weights数组,经排查,将问题定位在weights7weights8两个数组中。

原始文件中数组定义如下:

ap_uint<4> weights7[1][32768] = {{0x4, 0x5, ...}};
ap_uint<8> weights8[1][32768] = {{0x34, 0x56, ...}};

现删除weights8初始化的数据变为:

ap_uint<4> weights7[1][32768] = {{0x4, 0x5, ...}};
ap_uint<4> weights8[1][32768] ;

综合通过。然后删除weights7初始化的数据变为:

ap_uint<4> weights7[1][32768] ;
ap_uint<4> weights8[1][32768] = {{0x34, 0x56, ...}};

综合也通过;但如果都初始化综合就不通过。

 

问题定位:

1. 代码写法问题:

仿真没有问题,删除单独一个数组的初始化数据后(相当于初始化0)也可以通过综合,所以初步排除是代码写法问题

2. Param.h文件太大:

建立新的Param_copy.h文件,将weights6,weights7都移进去,综合仍然不通过,故排除此问题。

3. 服务器问题:

检查内核日志(dmesg)发现OOMK问题

[2983747.260553] Out of memory: Kill process 15738 (clang) score 747 or sacrifice child
[2983747.260558] Killed process 15738 (clang) total-vm:50002884kB, anon-rss:49882444kB, file-rss:0kB, shmem-rss:0kB

同样的问题可参照:Vitis hls huge memory requirements +630GB (xilinx.com)

解决方法:

我的解决方案是减小数组Size,这在我的应用中是允许的

ap_uint<16> weights7[1][8192] = {{0x1234, 0x5678, ...}};
ap_uint<32> weights8[1][8192] = {{0x12345678, 0x12345678, ...}};

 

posted @ 2023-02-15 11:50  Kazu-ki  阅读(381)  评论(0编辑  收藏  举报