EEJournal

专题文章
现在就订阅

解决困难的部分

向量面料的Pareon分区

作为其进入嵌入式多核工作的世界,有很多事情是简单,变得更加复杂,在硬件和软件。但一个元素——通常承认知识渊博的人在这个空间“难的多核”——仍基本上没有:如何把一个程序和分区在多核。

基本上,很难做错了。它是更难做。尤其是在做手工,这是唯一的选择了很长一段时间。自动化的过程帮助,我们看了一些方向的运动一篇文章

的公司之一在这个空间,向量面料,就宣布了他们最新的工具,它反映了许多重要的变化:

  • 他们已经改变了他们的命名。
  • 技术本身的发展。
  • 他们已经离开了云

向量面料经历了几个迭代的工具功能展开。最初,vfAnalyst工具显示代码中的依赖关系,从来没有做过的。他们经历了几个迭代到最后的释放,vfEmbedded,包括分区和映射选项在一个更基本的方式。

Pareon填充的洞,把工具从一个处理最常见的场景,更无懈可击。正如你所看到的,他们已经改变了他们的品牌结构;他们发现,潜在的“本体”,把之前的计划变得有点强迫,所以他们彻底决裂。

关键技术与依赖关系的识别,可视化的一种独特的方式,这是二次从用户方法论立场。最初,依赖是一个为用户找出最有效的分区。一旦他们有,他们意识到,他们可以提出不同的分区策略基于这些依赖项,如果用户喜欢,那么他或她没有明确需要检查的依赖关系。

所以会发生什么是Pareon执行程序和提供了一个显示显示运行程序的各个部分需要多长时间;相似的概念(虽然提出了不同的图形)来分析。用户然后进入分区冗长的部分——不久的更多。

执行程序的原因不仅仅是速度,而且检测特定的依赖关系。一些依赖项(他们称之为“计算”的依赖关系)只涉及寄存器值,和程序可以检查静态决定的。但其他人——通常与指针算术和指针别名不能静态处理。两个指针会指向同一个内存地址,,你会知道,只有通过实际运行程序和检查内存地址。所以他们工具代码,然后跟踪加载和存储。如果一个变量写入一个位置,然后,过了一段时间,其他一些变量(或者甚至是同一个)从该位置读取,一个依赖而著称。

这些依赖项可以是非常复杂的。所谓的“loop-carried”依赖性,价值观产生一个迭代循环中使用另一个(如[我]=[张]+[我2])可以得到难以跟踪(他们大多极为讨厌的如果你想手动计算出来)。

此外,还有特殊的模式,该工具可以注意和处理。例如:

  • 从一开始,这个工具能够识别“流”的模式,在访问进行一些常规地址序列重复的基础上。
  • 有更复杂的版本的,他们被称为“视窗化”,这不仅仅是一个直走过一个地址序列,但一系列的访问在一个窗口的地址在一个常规的方式移动。这将是一个图形算法的一个例子,在一个像素通过检查像素在一个3×3窗口。访问在该窗口使事情不会看起来像一个简单的步行穿过数组,但是随着从像素到像素,操作窗口移动。这种模式也被检测到。
  • 诱导表达在一个循环中增加我的代码——根据定义创建一个loop-carried依赖性:我的值将被设置为我增加了1的前一个值(或其他增量)。所以你不能计算出nth迭代,直到你发现n - 1th迭代,得到并行方式。真的,我不是计算的一部分——它只是一个循环的机制,这是涂胶。该工具可以识别这种感应不同的表情和处理它们消除依赖性。
  • 减少需要操作,比如加法数组的内容。再次,“和=和+[我]”方面的计算在本质上是串行的。有可能重组的事情允许多个sub-sums并行计算,总结sub-sums成总数。这样的场景也可以检测并由Pareon处理。

在过去,已经有其他各种模式的结构不能被看见;在这一点上,他们唯一的依赖可能难以与那些造成某些复杂递归的实例。

为什么它依赖他们可以检测和处理有关吗?因为这是决定认为你可以分区代码的工具。您可以选择一个函数,需要消耗大量的执行时间和决定分区它运行得更快。机械,你右键单击并选择“分区”,和Pareon将呈现不同的分区选项的列表和他们的成本。它只会选择分区,要么休息没有依赖或依赖,他们知道可以同步分区计划。他们可以处理的更多依赖关系,更可以提供分区选项。事实上,如果它发现没有办法分区一个函数,你可以去一个时间表视图中,您将能够看到哪些依赖性的方式(和源代码创建依赖关系)。

他们还将现在只有分区选项自由死锁的问题。

每个分区选项提供了某种程度的加速程序的成本。成本与创建的线程的数量和任何开销在线程之间同步数据。然而,由此产生的加速是一个棘手的问题。什么是用来显示更加理论化,甚至在早期架构无关。但建筑和其他方面的问题。一旦你开始运行并行程序,你可能最终与核心间总线争用或缓存的影响。

Pareon允许映射到特定的架构,以便总线和缓存(和其他)特征可以更准确地计算,这样产生的加速估计包括潜在的问题。他们还为操作系统调用与处理器供应商延误和工作测量硅延迟这样都可以包括在性能估计。

线程本身的成本是不平凡的。事实上,如果你依赖于经典线程创建和销毁,分区也可以并行程序慢于其原始顺序。所以Pareon依靠“线程”:一系列的线程创建,和功能分配给那些线程(而不是让新创建的线程)。

空闲时,这些线程可以睡眠——这意味着他们需要唤醒和计划分配时,需要时间——或者可以构造成“忙等待线程,他们只是循环——废物循环,但是,在许多根深蒂固的程序的情况下只有一个进程运行并没有被安排在浪费周期,可以容忍和节省时间。Pareon可以根据设置,选择两者之间的时间,和程序特征。

至此,我们已经讨论过的选择一个分区选项,这往往是一个迭代的过程:你找一个大的时间,试着分区。然后你发现其他人和分区,直到你得到你想要的性能(假设这是可能的)。

但该工具仅仅是记录你的决定;这不是实际更改任何代码或产生一个输出。当你得到你想要的性能,作为估计的工具,那么您需要实现它。这在理论上可以自动化,至少在一定程度上,但程序员通常不需要一个工具来编写代码或修改他们的代码。所以,Pareon提供了一系列“重构步骤”(以前称为“配方”)进行代码更改。的目的是可以一次实现的步骤,和每一步的结果在一个可运行的程序,可以采取下一个步骤之前进行验证。

这些步骤指导您完成分解子程序的过程中,创建和使用线程,实现信号量的同步非loop-carried依赖性。他们提供了信号量实现库,简化了复杂的部分。

以免它听起来像Pareon可以为每个人做每件事,有很多不同的方法实现多核系统,和Pareon不支持(至少现在)。他们的语言支持是C和c++。他们可以处理手臂和x86架构,专注于平板电脑,手机,和桌面应用程序。他们打开其他体系结构主义式的(如果资助)。他们只生成SMP的实现,实现数据并行化(功能并行性一直是一个“实验室”功能,为将来的正式版本)。

说,可以想象,他们试图解决一个市场有很多使用面积,将不足为奇,C, c++,胳膊,SMP在嵌入式系统(x86的免费主机工具运行以来Pareon运行在基于x86机器上)。这些天最常见的音箱系统要么是诸如手机、在不同的内核运行不同的程序,几乎没有互动,或包处理,也有自己的专业的做事方式,并已多年。像Pareon这样的工具不太可能有吸引力,因为这些程序是写给并行性从一开始。

Pareon目标更对计算密集型算法如图形或视频处理,加快各种编码和其他算法。在这些情况下,多次算法开始连续的C程序,然后必须在多核平台中实现。这样的工具是为了让“难”更简单。

更多信息:

向量面料Pareon

一个想法在“解决困难的部分”

留下一个回复

有特色的博客
2023年5月18日
探讨半导体公司整合chiplets和异构死于multi-die系统从自主驾驶到生成人工智能。邮局Multi-Die系统如何为半导体公司创造新的商机出现fi……
2023年5月17日
学生团队合作应对技术挑战,找到创新的解决方案是电子产业的未来。这就是为什么节奏学术网络是致力于提供所需的工具和培训这些团队加速到终点线……
2023年5月8日
如果你计划去土耳其在不远的将来,然后我有一个忙问....

有特色的视频

RTL Synopsys对此解决方案审核权力分析

Synopsys对此

Synopsys对此的行业领先的能力分析解决方案建立在PrimePower技术,使RTL勘探早期,低功率实现和权力验收节能soc的设计。

了解更多关于Synopsys对此“节能soc的解决方案

以注入式教学法亚博里的电子竞技

PIC32CX-BZ2和WBZ451多协议的无线单片机的家庭
注入式教学法在这节课中,阿米莉亚道尔顿亚博里的电子竞技和Shishir Malav从微芯片探索PIC32CX-BZ2的好处和WBZ45多协议无线单片机家族以及如何使物联网的设计比以往任何时候都更容易。他们调查的组件包含在这个多协议无线单片机家族,软件架构的详细信息包含在这个解决方案中,以及如何利用这些单片机在你的下一个设计。
2023年5月4日
2520的浏览量
Baidu