编程处理器异构体系结构

优化PPA对于不同的处理器类型需要非常不同的方法,现在它们都包括在相同的设计。

受欢迎程度

编程处理器正变得更加复杂和不同类型的处理元素包括在相同的架构。

虽然系统架构师可能会陶醉在选项的数量可以提高能力,性能,和区域,编程功能,使其所有的挑战一起工作将是一个重大的挑战。它涉及多个编程工具、模型和方法从不同的IP提供商。

“在任何类型的边缘推理的产品,无论它是一个巢相机,相机在一个汽车应用程序,甚至是一台笔记本电脑,基本上会有三种类型的功能软件,很大程度上来自于三种不同类型的开发人员——数据科学家,嵌入式CPU开发人员,和DSP开发人员,”Steve罗迪说,首席营销官二次曲面

在开发过程中,取决于自己所处的位置,他们的方法可能看起来很不同。“数据科学家们花时间在Python中,在培训框架,和做一些数学抽象级别,“罗迪说。“PyTorch很高水平,抽象解释,不小心给效率的实现,因为他们关心的是获得函数在数学模型和准确性,等等的有PyTorch模型,ONNX代码,和Python代码,嵌入PyTorch模型。嵌入式开发人员一个完全不同的性格类型。他们工作与更传统的工具集,可能是CPU供应商的工具,或手臂工具箱,一般像微软Visual Studio为C / c++开发。无论哪个CPU,你会得到供应商的开发工作室的版本特定的芯片,它会伴随着预构建操作系统和驱动程序代码之类的东西。如果你买一个芯片级解决方案从一个特定的供应商,它将司机DDR, PCI接口,等等。”

例如,考虑为一个iPhone应用程序编程的高度抽象。“开发工具包为iPhone开发人员有很多其他软件一样堆在一起,”他说。”,但在大多数情况下,它是一个嵌入式的东西。某人写C代码,某人在一个操作系统,无论是西风或者微软操作系统的本质。他们生产什么?他们有时产生C代码,汇编代码取决于编译器的质量。DSP开发人员,开发人员也是一个算法,通常mathematician-oriented,并使用MATLAB等工具,或者一个Visual Studio。三个级别的代码创建。类似python代码数据科学、DSP、c++和嵌入式代码。”

通过Android开发人员的视角,罗南·诺顿,产品管理总监、客户业务手臂说,“一个典型的软件工程师可能会开发一个手机应用程序部署到多个平台。在这种情况下,他们会寻找最低的维护开销,无缝可移植性和高性能可提供无处不在的手臂CPU和支持工具链。”

在安卓环境中,编程CPU使尽可能选择的工具。

诺顿说,“例如,一个好的vectorizing GCC编译器如LLVM或可以针对多个CPU和系统目标。有一个丰富的生态系统库函数特定任务,如臂计算库毫升。另外,开发者可以目标指令集架构本身intrinsic如手臂C语言扩展。”

下面所有的传统建筑,组成的一个转专业,DSP, CPU,所需的所有步骤在目标主机CPU。全部或大部分都使用某种形式的运行时的应用程序。

“如果你运行你的机器学习代码,CPU是积极参与每一个推理,在每个迭代中,每个通过机器学习图形编排整个事情,“罗迪指出。

图1:工具/代码流传统转专业+ DSP + CPU。来源:Quadric.io

图1:工具/代码流传统转专业+ DSP + CPU。来源:Quadric.io

如何编程dsp、cpu和转专业取决于应用程序,用例,系统架构,和环境。决定如何优化代码以实现最佳性能为特定的应用程序或使用模型。

“在一个CPU上,大多数编译器可以优化代码非常好,但当编程需求方或转专业,尤其是并行化代码,很多工作要做软件工程师,因为所有的编译器失败,”Andy Heinig说高效电子部门主管弗劳恩霍夫IIS的自适应系统分部工程。“这意味着更多的并行工作是要做硬件,更多的工作必须手动完成的软件工程师。和大部分的工作需要在低级编程。”

虽然有一些重叠,但也有一些基本的差异之间的这些不同的处理元素。“CPU是一个通用的体系结构,从而支持广泛的使用,操作系统、开发工具,图书馆,和许多编程语言从传统的低级C高水平c++, Python, Web应用程序和Java,”盖伊本哈伊姆说,产品经理Synopsys对此。“DSP应用程序通常运行在一个优化的实时系统,所以编程DSP处理器要求使用低级语言(如汇编、C), DSP库,和特定的编译器/分析器允许数据并行性,性能调优,和codes-size优化。与通用的cpu,但类似于dsp、转专业架构也致力于加速特定任务,在这种情况下加速AI /毫升应用程序。”

DSP体系结构可以并行处理来自多个传感器的数据。虽然传统CPU或DSP编程依赖于一个程序或一组规则的算法处理数据,人工智能学会从数据随着时间的推移,改善其性能。

“人工智能使用高层框架如PyTorch和TensorFlow创建,火车,和部署模型,“本哈伊姆解释道。“神经网络模型结构的启发,人类大脑中的神经元和由数学表示的系统,可以根据输入数据做出预测或决策。”

还有其他差异。除了编程与高级语言如C和c++, Pulin德赛说,集团董事、产品营销和管理Tensilica愿景和AI需求方节奏”,需求方和cpu还利用各种图书馆喜欢数学自由、fp自由。需求方也有特定的自由为特定的垂直他们可能解决执行一个特殊用途的应用程序。需求方和cpu使用高级语言如OpenCL和卤化物,客户用它来开发他们的应用程序。”

转专业编程是在一个完全不同的环境中使用人工智能培训框架。反过来,这些生成神经网络代码TensorFlow PyTorch,为特定的硬件和网络进一步编制使用神经网络编译器。”

“神经网络并不是编程。他们训练有素,”戈登•库珀指出在Synopsys对此产品经理。“需求方和cpu程序在一个更传统的方式。代码用C / c++编写的。然后你需要一个IDE和调试器来测试和编辑代码。”

编程模型如何工作
所以对于cpu和需求方,设计师将在C或c++程序,但是他们可能调用一个特定的自由api。”为愿景,例如,可以叫OpenCV API调用代码,“德赛说。

图2:比较dsp的嵌入式软件开发/ cpu和转专业。来源:节奏

大多数时候,优化代码的工作是由手工完成,弗劳恩霍夫Heinig说。“高级编程模型经常失败时使用并行硬件。当然,可以使用图书馆基本高度优化的功能。”

开发一个AI模型非常不同。几个步骤是必需的。说:“首先是识别和准备Synopsys对此的本哈伊姆。”识别AI合适的需要解决的问题,重要的是要选择正确的模型和收集的数据将用于该过程。二是模型的训练。培训模式意味着使用大量的训练数据来优化模型,提高性能,确保准确性。三是推理。人工智能模型部署在生产环境中,并迅速作出结论,使用基于可用的数据预测和推断。”

还有其他差异。大多数需求方向量处理器,一个架构调整的有效处理并行数组的数据。“有效地使用硬件,数据需要矢量化,”马库斯·斯说,在Synopsys对此高级产品经理。“一个优化编译器可以应用某种程度上从标量启动时自动向量化代码。然而,绝大多数的用例,得到最优的结果需要一个程序员写的代码在一个矢量化方法,使用专用的矢量数据类型。”

Willems建议利用指令集的全功率,intrinsic是常用的。”不同于普通装配编码,一种内在的叶子的寄存器分配编译器,它允许代码重用和可移植性。

此外,对于大多数DSP算法,设计开始于MATLAB分析功能(即性能。检查,如果该算法解决问题)。越来越多的需求方,有着直接的路径转换成矢量图MATLAB算法映射到DSP代码,使用MATLAB嵌入式编码器,处理器DSP库。

但要充分利用处理器,Heinig说有必要co-optimize硬件和软件。“否则,你将会失败的解决方案,因为你可能意识到的太晚了,设计的硬件不符合规范的问题很好。特别是如果你想并行执行更多操作。”

SoC架构,它开始将目标市场和目标应用程序,将驱动硬件和软件体系结构。

“这一直是一个挑战在选择可编程性和固定硬件、“德赛解释道。“决策是由成本(SoC)的面积,能力,性能,上市时间,和能否经得住时间的考验。如果你知道你的目标应用程序,想要优化功率和面积,固定硬件是最好的。(一个例子是一个h .解码器。)神经网络是不断变化的,所以编程是必须,但一个架构的一些功能在固定功能(硬件加速器,如一个转专业)和一些可编程cpu或需求方是最好的人工智能。”

分区处理
所有这一切更加复杂,因为不同的设计师/程序员可能负责的各种代码。

“我们谈论的是推理的应用程序,但我们也谈论系统公司做一个系统,“德赛说。”,因为一个SoC是通用的,可能会有人工智能的开发人员将开发一个特定的神经网络来解决一个具体问题——例如,一个降噪网络减少噪音的麦克风,people-detection网络安全摄像头,等。这个网络需要转换成一个可以运行在SoC的代码,所以你会有程序员知道如何使用工具将神经网络代码,可以启动与CPU SoC / DSP /转专业。然而,如果它是一个实时应用程序中,您还将系统软件工程师需要知道如何使用实时操作系统、处理器系统软件,等。同时,可能会有高级软件开发人员可能开发GUI或用户界面,如果这是一个消费设备。”

转专业,有几个注意事项。“首先,转专业必须加快人工智能工作负载设计,“本哈伊姆说。“AI /神经网络工作负载由深学习算法,需要大量的数学和多个矩阵乘法在很多层,所以并行体系结构是必要的。”

他解释说好的转专业的关键特征之一是处理数据并完成操作的能力很快,性能测量上衣/ mac。“典型的半导体功率/性能/区域(成本)之间的权衡是非常相关的在转专业的情况下设计。自主汽车用法,转专业的延迟是至关重要的,特别是当它是一个生死攸关的问题决定何时踩车刹车。这也是相关功能安全设计考虑。设计团队还必须考虑转专业设计符合安全要求。”

程序员的另一个重要的考虑因素是开发和编程工具。

“这并不足以建立一个伟大的转专业不合适的软件开发工具,能够轻松地导入NN /从受欢迎的AI人工智能模型框架,编译、优化,并自动利用转架构包括内存设计考虑,”他说。”同样重要的是提供一种方法来检查模型的准确性,以及仿真工具,所以程序员可以开始软件开发和验证硬件存在之前。这是一个重要的考虑上市时间。”

库珀表示同意。“转专业更接近比DSP定制的加速器,或者尤其是GPU和CPU,这是完全灵活。你可能不会选择添加一个转专业,除非你有很强的神经网络需要大量的时间的性能。我们的客户只需要一点点的AI使用向量DSP, DSP性能,并重新配置过程人工智能在需要的时候向死房地产最大的灵活性。这是很好,但是不会像权力——或者area-efficient专用转。”

最后,编程挑战进来当试图确定的子集图适合转专业,什么没有。(见图1的左边,上面)

“如果它不,它必须运行别的地方,所以代码必须是分裂,”说,二次曲面的罗迪说。”这是一个次要的命令流发生器或链表生成器被存储在内存中,转专业知道足够的去获取它的命令。虽然这部分很简单,所有不运行在系统吗?这些运营商应该在哪里?有一个有效的机器学习算子的实现已经存在吗?如果是,在DSP在这里,还是在CPU如果它不存在吗?有人去创建一个新的版本。你这样做因为你想要高性能DSP。现在你必须在DSP上的代码,和很多需求方缺乏良好的工具,尤其是那些被修建专门为机器学习。普通版本的需求方——音频dsp或基本通用dsp——可能有两个苹果,或四MAC类型的东西。 The kind of DSPs that have been built for machine learning will be very wide DSPs. Extra wide DSPs can be a good target for very wide activations and normalizations and the type of things that happen in data science but they’re novel and therefore may not have solid compilers.”

结论
在过去,这些编程世界独立的学科。但随着人工智能计算越来越多地包括在设备上,系统变得越来越异构,软件开发人员将需要至少更意识到正在发生的事情在其他领域。

最终,这可能会成为一个司机硬件/软件架构,允许工程团队编写和运行复杂的c++代码,而无需分区两种或三种类型的处理器。但是有很多工作要做现在如果这之间发生。尚不完全清楚,鉴于AI和硬件架构的速度发展,无论是建筑仍然是相关的时间准备好了。



留下一个回复


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

Baidu