2019-11-25~2019-12-25

11.25:
当遇到call函数中参数是i64的struct,先替换i64为%struct.MySize,i64相关变量也变为由%struct.MySize构成的instr,再用Functionstruct函数处理。
11.26:
暂用拼接指令处理完毕face_detection。需要重新梳理代码。
11.27:
整理function argument情况种类,解决函数参数为struct、ArrayStruct的形参、指针情况。
11.28:
处理function嵌套和返回值为struct问题,未发现返回值为struct的case。function嵌套的code写完,需例子测试。
11.29:
开会讨论,修正处理移位操作指令方案,先对所有指令建表,在对表中单个变量进行指令替换提取,保证表中信息完全体现CPU内存信息存储。
吴老师讨论结果:
(1)每个指令对应一张表,表内存在i64中存储信息,存str.x也存%1
(2)先造表,把每个表对应的东西表示出来,第二遍再处理表,提取表中的单个变量
(3)表就是将concat出的变量split开
(4)先把trunc等指令全部处理完

12.02 ~ 12.06:
(1)为解决内存拼接问题,拆解为单个指令。构建内存排布Table,创建类MemoryTable为instruction memory做标记,完成bitcast struct value process模块,拼接指令传递至Function case仍存在问题,下周继续debug。

(2)完成内存拼接的指令删除工作,继续支持完善bitcast相关的memcpy、getelementptr、store所有相关情况。

12.09 ~ 12.13:
(1)使用rm_struct代替vivadoo-HLS生成出来的IR,需先使用clang O1得出的IR进行rm_struct,再rm_struct得出的hw.bc进行O3优化。否则直接对c程序进行O3优化,struct难以remove。

(2)修改搭建测试脚本,配置vivado,用两个case测试,对比rm_struct和vivado-HLS两者生成结果。开会。

12.16 ~ 12.20:
(1)对比处理含有struct的C文件legupcase_cpan、legupcase_hls,存在差距。根据上述两者bc文件分析差距原因。
(2)对比经过手动去除struct的hand_hls、hand_cpan综合结果对比,发现仍存在差距。处理步骤,将rm_struct的pass放在clang O1之后处理,再进行OPT O3优化,综合结果更好。
(3)生成rm_struct与vivado和手动拆解struct仿真结果并对比,确定rm_struct优化流程,讨论rm_struct处理的bc不经过O3优化综合出面积结果远大于经过O3优化的原因。
(4)通过bc和scheduling对比,分析latency综合结果不同的原因,掌握根据main_bb_list_final.sch、main_list_final.sch分析bc调度。

12.23 ~ 12.27:
(1)对比分析未经过O3优化的bc,消耗的slice、registers和luts要多,请教同事帮忙分析Verilog文件和对应网表文件,熟悉vivado仿真综合流程。
(2)初步对比发现从Verilog认为reg有冗余,手动删除冗余reg仿真结果不对。从综合结果看carry4的数量差距很大,必然是导致slice差距大的原因之一。
(3)处理memcpy中对数组部分元素做copy情况,思考HLS要做软硬件划分。讨论确定目前struct在IR层面做了分解。
(4)写union的C程序并测试,取数方式较为奇特。报告、算法研讨班讨论。解决未声明为struct type的{i64,i64}case。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值