看到一个问题:最近做zynq方向,zynq的arm核处理不过来数据,感觉不适合做人工智能,适合做控制的东西。是不是我的想法不对,希望大佬来指导一下?
Zynq应用方向
如果你所说的Zynq是指Zynq 7000系列,其中FPGA部分(PL)资源有限,那么确实不太适合用来进行复杂的人工智能任务。
因此,我同意你的第一个判断,但我觉得你的第二个判断可能过于悲观了。
图像处理方面
尽管性价比不算很高,但Zynq的资源足以进行一些简单的图像处理,或者对某些算法进行加速。虽然不适合处理大规模、复杂的深度学习模型,但对于一些基本的图像处理任务,Zynq的ARM核心可以发挥一定作用。
然而,如果你的应用需求更加注重人工智能的处理能力,那么可能需要考虑更强大的处理器或专用的人工智能硬件加速器。这样可以更好地满足高性能和实时性的需求。
总而言之,根据你的需求和预期,选择合适的硬件平台是非常重要的。对于复杂的人工智能任务,可能需要考虑其他更适合的处理器或硬件平台。但对于一些简单的控制应用和图像处理任务,Zynq仍然是一个有价值的选择。
对于Zynq的ARM核(PS)来说,这些加速可以极大的减轻PS的计算负担,使得本来很弱的ARM核可以进行稍微复杂的计算了。
定制化方面
那么Zynq实际上是可以用来进行一些定制化的开发的,特别是在没有硬件加速的情况下,在规定的功耗和体积下,做出来一些demo或者小规模量产的硬件。
所以在性价比没有要求的场合,Zynq是可以做很多有趣的工作的,而不仅仅是控制。
人工智能方面
但是广义的Zynq还包括Zynq UltraScale+ MPSoC,这系列的FPGA部分(PL)的资源就比较多了,已经足够去进行一下人工智能方面的应用。
甚至可以用高层综合在不涉及HDL的情况下就完成这部分的工作。具有一定的可用性。
专用设备领域
在专用设备领域会有应用,例如大型光通信设备的核心主控。我们公司从单arm转型到zynq7000有三四年了吧,主要使用010 020 030,Ultra还在研究,MP以后可能也会上。
项目上使用zynq主要做控制,其次做路由算法,数据分析。zynq比较好用的地方是可以拓展硬件资源,PL出个网口、SPI、I2C一类的很方便,做主控基本上不会担心资源不够的问题。
数据分析方面
数据分析还没有做过,从路由算法方面讲,zynq的性能大概是普通i5主机的十几分之一左右吧。
用python写的算法在主机上Anaconda环境上跑测试大概10s的话,在zynq的linux下要一百多秒(大概数据,当时测试过记不清了)。
Zynq确实太贵了,不过专用设备不会量产,贵点也能接受吧。
zynq存在的一些问题
核心问题-性价比低
Zynq的核心问题个人认为主要是性价比不高,Zynq太贵了,在大多数嵌入式领域,除非是小批量的定制化产品,价格是十分敏感的,因此这会严重限制Zynq的应用范围。
比如最常用的7020的价格就明显高于带dsp核心的ARM,这让PL提供的加速能力变得性价比很低,更何况DSP的开发难度远远低于HDL。
那么如果实时性能满足的情况下,能用DSP加速,为什么还用PL?
而资源较多的UltraScale+ MPSoC系列这个问题更加严重,价格高的是在是离谱了,特别是现在大量NPU,TPU之类的产品上市后,用UltraScale+ MPSoC做人工智能相关产品的意义就更低了,成本高的过了头,很难找到可用的场合和市场。
次要问题-开发难度大
Zynq的次要问题,开发的难度是在是有点太大了,对于小公司员工不多的情况下,如果不分工,Zynq的开发绝对需要很长时间的学习和经验积累才能胜任,需要了解的东西是在是太多,软件硬件都需要。
就一个AXI就已经能让人抓狂了,PS,PL的开发迥异,复杂的内存管理,时序优化很多情况下还要考虑操作系统之类的问题,这真的难度是太大了。
对于大公司而言,分工是可行的,但协作仍然很麻烦,特别是调试的代价很大。
其他-资源方面
而高层综合(HLS)看起来很好,但资源利用率较低,开发难度仍然很大(不是能跑通就能用)入门快,但真正能掌握产品化技能还是很难的。
至于OpenCL之类的, 暂时还只能算旁门左道,性价比严重有问题。
很多情况下会让昂贵的UltraScale+ MPSoC只能Zynq 7000,因为资源浪费是在太大了。
总结
Xilinx 作为FPGA厂家推出Zynq系列方向是对的,但是他确没有解决核心的性价比问题。所以Zynq一直都是不温不火。
以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !