当前位置:  开发笔记 > 前端 > 正文

CUDA与FPGA?

如何解决《CUDA与FPGA?》经验,为你挑选了4个好方法。

我正在开发一种具有大量3D图形计算的产品,在很大程度上是最接近的点和范围搜索.一些硬件优化会很有用.虽然我对此知之甚少,但我的老板(没有软件经验)主张FPGA(因为它可以定制),而我们的初级开发人员则主张GPGPU和CUDA,因为它便宜,热门和开放.虽然我觉得我在这个问题上缺乏判断力,但我相信CUDA也是要走的路,因为我担心灵活性,我们的产品仍然处于强劲发展之中.

所以,重新解释这个问题,是否有理由去使用FPGA?或者有第三种选择吗?



1> flolo..:

我们在FPGA和CUDA之间做了一些比较.如果您能够以SIMD方式真正地制定问题并且可以访问合并的内存,那么CUDA会发光.如果内存访问没有合并(1)或者如果你在不同的线程中有不同的控制流,那么GPU可能会大大降低其性能,并且FPGA可以胜过它.另一件事是当你的操作很小,但你有大量的操作.但是你不能(例如由于同步)没有在一个内核的循环中启动它,那么GPU内核的调用时间超过了计算时间.

此外,FPGA的功能可能会更好(取决于您的应用程序情况,即GPU在其计算时始终更便宜(就瓦特/翻牌而言)).

在幕后,FPGA也有一些缺点:IO可以是一个(我们这里有一个应用程序,我们需要70 GB/s,GPU没问题,但要将这些数据量传输到FPGA中,传统设计所需的引脚数量超过可用数量).另一个缺点是时间和金钱.FPGA比最好的GPU贵得多,而且开发时间非常长.

(1)从不同线程到存储器的同时访问必须是顺序地址.这有时很难实现.


我的原始帖子是从2008年开始的,Virtex6当时不存在(地狱,它甚至在2011年很难获得大量的数量) - 但你是对的,今天6.4 x 10 GB /秒= 64 GB/s是可能的,但是GPGPU也在进行,它们的吞吐量现在> 120 GB/s.
在IO带宽方面,高端FPGA绝对可以胜过GPGPU.一个PCIe Gen2 x16接口提供16*500MByte*0.8(8b/10b数据编码方案)= 6.4GB/sec有效负载.将高端Xilinx Virtex6 FPGA与48个收发器相乘至少10倍

2> biozinc..:

我不久前调查了同样的问题.与曾经参与FPGA工作的人聊天后,这就是我得到的:

FPGA非常适合实时系统,即使1ms的延迟也可能太长.这不适用于您的情况;

FPGA可以非常快速,特别适用于明确定义的数字信号处理应用(例如雷达数据),但好的FPGA甚至比专业的GPGPU更昂贵和专业化;

FPGA的编程非常繁琐.由于要编译的硬件配置组件,可能需要数小时.它似乎更适合电子工程师(通常是那些从事FPGA工作的人)而不是软件开发人员.

如果你能让CUDA为你工作,它可能是目前最好的选择.它肯定比FPGA更灵活.

其他选择包括来自ATI的布鲁克,但直到发生重大事件,它根本不像CUDA那样被采用.之后,仍然有所有传统的HPC选项(x86/PowerPC/Cell集群),但它们都非常昂贵.

希望有所帮助.


"CUDA肯定比FPGA更灵活"是错误的.对于CUDA,您必须以非常具体的方式扭曲和转动算法以享受加速.使用FPGA,您可以随心所欲地执行任务 - 即实现专为您的算法量身定制的专用计算程序.当然,这需要HDL编程knolwedge,因此CUDA确实更容易被软件程序员访问.
FPGA现在可以使用OpenCL进行编程 - https://www.altera.com/products/design-software/embedded-software-developers/opencl/overview.html这应该使FPGA对软件程序员更具吸引力.

3> Martin Becke..:

我会选择CUDA.
我从事图像处理工作,多年来一直在尝试硬件附加组件.首先我们有i860,然后是Transputer,然后是DSP,然后是FPGA和直接编译到硬件.
不可避免地发生的事情是,当硬件板真正被调试和可靠并且代码被移植到它们时 - 常规CPU已经提前击败它们,或者托管机架构发生了变化,我们无法使用旧板,或者董事会的制造商破产了.

通过坚持像CUDA这样的东西,你不会被一个小型的FPGA板专家制造商所束缚.GPU的性能比CPU更快,并且由游戏玩家提供资金.它是一种主流技术,因此可能在未来与多核CPU合并,从而保护您的投资.



4> 小智..:
FPGA的

你需要什么:

学习VHDL/Verilog(相信我你不会)

购买hw进行测试,合成工具许可证

如果你选择一些好的框架(例如:RSoC)

开发设计(可能需要数年)

如果你不这样做:

DMA,hw驱动程序,超昂贵的综合工具

关于公共汽车,记忆映射,hw综合的大量知识

建立hw,购买ip核心

开发设计

例如,带有芯片Xilinx virtex-6的普通FPGA pcie卡的成本超过3000美元

结果:

如果您没有得到政府的报酬,您就没有足够的资金.

GPGPU(CUDA/OpenCL)

你已经有了测试.

与FPGA相比:

一切都记录完好.

一切都很便宜

一切正常

一切都很好地集成到编程语言中

还有GPU云.

结果:

你只需要下载sdk即可开始.


学习OpenCL现在足以为FPGA编程 - https://www.altera.com/products/design-software/embedded-software-developers/opencl/overview.html并且考虑到功率的最重要性以及较低的功率要求FPGA具有类似的性能,现在为许多问题类型提供了一种有吸引力的GPU替代方案.
推荐阅读
我我檬檬我我186
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有