改进算法与高级合成

一种常用技术的新方向。

受欢迎程度

今天大多数计算机算法是在通用计算机高级语言开发的。但总有一天他们可能会部署在嵌入式系统的开发,验证和验证的算法是在python这样的语言,Java, c++,甚至像MatLab数值框架。

这是我们的目标高级合成(HLS),它的目标是解决系统设计中的一个基本问题。基本思想是允许硬件设计师构建和验证硬件,以更好的控制优化设计的体系结构,描述的设计在一个更高的水平抽象虽然该工具实现了RTL。它也有可能使用HLS改善今天的算法,硬件上运行。

最终的描述将在硬件描述语言(HDL)寄存器传输级(RTL)。与其说这是HLS的算法,将受到影响。它的实现算法。

“HLS允许探索多种体系结构的迅速,并支持创建不同的实现一个算法没有大量的编码和没有破坏的风险算法或需要大量的验证和调试,”Russell Klein说,HLS平台项目负责人导师,西门子业务

有时HLS看到的结果反馈到算法中。克莱恩说,他最近做的一个语音识别系统的原始TensorFlow算法,定义的数据科学家,呼吁光谱数据的特征映射在99 x 40浮点数的数组。“那工作好当算法的软件实现。但在硬件设计更高效的(和产生更精确的结果)使用一个数组,是128 x 32句定点数字。这是一个相当简单的例子,但是它展示了在实现阶段发现的细节可以反馈算法开发人员,使他们修改算法产生一个更好的实现在硬件。”

改进算法
改进算法通常并不等同于HLS,和术语可以意味着许多不同的事情。然而,这是这项技术的下一个可能的方向之一。

“在最基本的层面上从技术的角度来看,你可以有一个算法,和高级合成你很快可以得到区域,电力、性能、拥堵,”戴夫Pursley说,产品管理总监节奏。“你甚至可以得到反馈前端设计师通过把它流得很快,并且可以帮助决定micro-architectural变化——有多少状态,数据路径应该多大,等等。如果你延长一点,你也可以做一些更像算法探索。这将是在DSP在最基本的层面上,几乎所有的这些天。甚至一些简单的改变的位宽可以产生非常重要的影响,性能,区域,和准确性,或信噪比,准确的度量。这是最基本的版本的算法探索。”

从技术上讲,这是可能的因为HLS是从SystemCc++,在这些语言的各种数据类型允许设计师写算法,然后改变变量的数据类型,提供完全不同的合成结果。

“例如,如果你正在做一个32位浮点乘法和位定点乘法,你会有完全不同的结果和完全不同的能力,性能,和权衡,”他说。“最有可能的系统级指标,如信噪比或图像质量也会有所不同。通过这种方式,它允许你找出这些权衡,这将需要更改一行代码在C + +。另一方面,如果你是RTL设计,显著改变了宽度,尤其是定点和浮点类型,基本上这将需要整个datapath公司重写。这是你通常做不到。你要猜猜什么是正确的宽度,然后构建RTL和希望你是对的。这是一个非常简单的改变,它是HLS用户做所有的时间,很多人已经做了很长一段时间。”

特别是对于人工智能机器学习应用程序、HLS甚至可能扮演一个角色在决定如果一个算法是正确的,不仅仅是数据类型是否正确,Pursley说。“这是有完全不同的体系结构,完全不同的算法,您可以使用它们来解决同样的问题,很简单,牛奶或TensorFlow做一些分析和找出精度是什么,至少完整浮点或在特定的宽度。但坦率地说不可能算出实际的性能、面积,拥堵,等等,当你把它放到硬件。高级合成,你有一个路径从这个高级算法建模。同样,在DSP与MatLab,您可以探索各种不同的体系结构和算法,有一个路径了RTL和盖茨快速分析不仅仅是理论的影响,或者对图像质量的影响等等,但也的实际成本,在力量方面,区域或其他约束。”

如何利用HLS
真正利用HLS需要改变思维的组织中。“在一个典型的大公司的流程,你就可能有一种算法或者架构团队,和他们的手正是他们想要建造的前端设计团队,“Pursley说。“设计团队接着和忠实地构建的规格给他们最好的能力。的大的一件事当你做这种类型的优化或勘探是你需要算法,前端设计人们通常一起工作。你需要硬件技术,但你也需要算法技术。这就是为什么,坦率地说,我们看到在很多人工智能,5 g字初创公司。没有人确切地知道什么是最好的算法。取决于应用程序,有一个不同的最好的一个。在那些创业环境,还有很多的主人的责任和专业知识。这就是为什么像野火一样流行,尤其是在这些类型的公司。”

无论HLS有显著影响算法的算法本身不能满足应用程序的约束,克莱恩导师的建议。“一旦的RTL设计开发和确定它是太慢,太大,太耗电,或太,和没有实现在RTL级,可以解决这一问题,然后改变底层算法是必要的。一个开发团队使用传统RTL方法是在一个漂亮的坏点。他们需要构思一个新算法,该算法能解决的缺陷,然后做一个全新的RTL开发周期。有很少的时间了。团队使用HLS处于更好的位置来恢复如果这不幸的情况发生。他们完全理解算法层面的失败,和可以部署一个新的RTL实现非常快。”

在过去,人们还不了解复杂的算法,或者可能改变仅仅是软件。但是今天,正在部署的算法,特别是在机器学习/人工智能空间,太需要大量计算能力的离开软件。

“这只是不切实际的在今天的嵌入式处理器上运行它们,”克莱恩说。同时,我们作为一个行业没有足够的经验和许多这些算法知道应该使用哪一个对于一个给定的问题。你应该使用一个深吗神经网络,或最近邻算法而不是工作吗?一旦你选择了一个算法,有一个架构实现,算法能够满足你的要求吗?你能使用一个现成的TPU吗?你可以配置一些开源IP来做这项工作?或者你需要定制?HLS是一种实用和证明的方式来探索这些问题。传统的RTL开发过程不能足够快的反应,如果你不做出正确的选择在项目的开始。HLS显著减少项目失败的风险,如果你选择错误的算法或选择一个实现,根本无法满足您的要求。”

基于手工优化与工具的优化
HLS市场是一个积极,许多线程的发展。讨论的一个领域涉及一个HLS优化工具能否超越的专家级手优化,Zubair Wadood写道,技术销售工程师Silexica,在一个最近的博客文章

他指出,最近发表的白皮书中研究了一种新颖的方式优化安全散列算法,并比较结果competition-winning hand-optimized HLS实现相同的算法。这种方法显示了近400 x加速un-optimized实现和hand-optimized版本超过了14%。此外,它是更多的资源,消耗更少的查找表,3.6倍和1.76倍更少的人字拖。

存在不同的看法如何最好地利用HLS。负责市场营销的副总裁克里斯•琼斯Codasip认为,而不是雇佣HLS改善一个算法,它更有利于让HLS完善算法,并使用硬件运行算法。

这里有两种方法。”的传统方法是写一个算法,目的是运行在一个特定的目标,然后分析,概要文件,优化,然后去汇编级压缩每一个周期,”琼斯说。”,是一个非常耗时的任务,导致供应商锁定,因为没有人愿意重复另一个目标架构的艰苦的过程。HLS工具提供另一种方法,这就是——特别是处理器描述语言和合成工具,分析代码之后,仔细分析,周期,给用户的能力来生成一个目标优化算法。这有许多优点。程序员可以在C级别没有深入研究大会,和SoC架构师可以减少多余的逻辑产生一块,节省了面积和权力,因为它只有一个目的。代码仍然移植,因为它是在C语言中,和定制的硬件提供了多种成本效益。当然,这只适用如果算法稳定,已达到成熟的水平不太可能随着时间而改变。算法还在进化,然后HLS仍然可以优化硬件提供援助,但不是一个级别的。”

事实上,许多公司已经使用SystemC / c++模型在信号和图像处理应用程序中,包括图像缩放、图像插值和视频编解码器,塞吉奥Marchese说,技术营销OneSpin解决方案。“虽然采用SystemC和HLS稳步增加,一些团队仍然手动生成RTL,离开那些团队来执行验证在RTL级。更高效的方法是RTL代之前做更多的验证。这是至关重要的,使更多的用户情况下HLS和更广泛应用。一些正式的解决方案允许用户做大量的自动化检查在SystemC级别,和定制的断言也正式确认,节省大量耗时的HLS迭代。”

加快仿真
然而另一个有趣的和新用途是使用高级合成加快模拟。“得到更高的带宽(模拟器),限制因素之一是验证环境和之间的通信testbench无论设计在盒子里面,“Pursley说。“鉴于HLS需要一个相当高级的算法及其I / O什么的,综合成RTL,实际上现在算法验证。无论你想做什么在你的验证testbench,使用相同的I / O,你使用你的设计。,允许您将更多,如果不是全部,试验台的盒子,假设你有能力在你的模拟器。然后你可以随便数量级的带宽速度模拟器中。”

结论
今天,HLS目前最关注的目标应用程序包括成像,特别是图像信号处理,以及5 g和人工智能。

“人工智能,你有强大的软件经验,一点点的硬件经验,你需要一种方法来得到硬件特别为你的第一个硅与相当简化硬件团队,同时做算法探索,“Pursley说。“这只是HLS完美风暴”。



留下一个回复


(注意:这个名字会显示公开)

Baidu