深入理解FPGA加速原理——不是随便写个C代码去HLS一下就能加速的

本文探讨了FPGA加速原理,指出无意义的数据读写操作浪费资源,强调理解并行计算的重要性。通过对比GPU,阐述了FPGA在片上内存和实时流水线运算方面的优势,解释了如何利用FPGA实现高效计算,并举例说明无需HLS即可编写卷积代码。
摘要由CSDN通过智能技术生成

深入理解FPGA加速原理——不是随便写个C代码去HLS一下就能加速的

不要写代码做无意义的操作

写这篇文章的起因是前段时间有人在网上问了我一个HLS的问题,他写的C代码HLS时报错,问我是咋回事。可惜的是由于我水平低,没玩过HLS,所以我也不知道是咋回事。不过我扫了一眼他的代码,再加上他的介绍,我看出来他的代码是干了下面这样一件事情:

                                    

他的FPGADDR里存了一副较宽的图像,这副图像是三张图片拼接起来从HDMI接口传进来存到DDR里的。FPGA要做的事情大概是要再把这3幅图像拆开分别做些仿射变换之后再拼成一副尺寸不同的大图像。他写的要HLS的代码所做的事情就是把存在一起的拼接图像从DDR中读出来再分开存入DDR中,他说这是为了下一步好做双缓存。

 

我了解到这个就觉得这个把图像从DDR里读出来再换个地址存进去,然后啥计算都没有进行,这个操作完全没有任何意义啊!然后我就跟他说,你干嘛要这样弄,你要想把图像分开来存,你把从HDMI存进DDR那个地方的代码改一下,在那时直接分开存不就可以了。但他可能没写过verilog代码,不知道还可以这样改,所以我说的话估计他也没听懂。

 

要知道上述这种把数据从DDR中读出来啥都没干又换个地址存进去的操作是完全没有意义的。要达到这个目的在最初存进DDR的时候每到1/32/3行的时候改一下地址就行了。把数据从DDR里读出来又写进去,完全是在浪费DDR的带宽,浪费功耗。最关键的是浪费了时间。假如这个项目是要做VR显示的加速,VR不就是要尽可能的低延时么?就算DDR带宽足够你浪费,功耗你也不在乎,但这一读一写徒增的很多延时你也不思忖一下?

 

要想加速得先学一下并行计算原理

 

所以不论你是想用FPGA还是

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值