为什么并行太难了

专家们表,第1部分:我们寻求解决错误的问题吗?哪里来的并行工作最好的,为什么。

受欢迎程度

半导体工程坐下来讨论并行化的努力在EDA和安德里亚·Casotto Altair首席科学家;产品管理组主管亚当•谢尔系统&验证群节奏;哈里·福斯特的首席科学家导师西门子的业务;弗拉季斯拉夫•Palfy,全球应用工程经理OneSpin;首席Oski Vigyan Singhal Oski技术;和比尔马伦,高级研发主管有限元分析软件。以下是摘录的谈话。

SE:为什么并行化是如此困难?

福斯特:我有一个背景的并行化,可以追溯到90年代的超级计算机和高端服务器。我们使用了数百个处理器和我们试图利用开发不同类型的EDA的解决方案。有一些关键的经验教训。两个因素今天仍然适用,解释并行的局限性。首先是固有的串行部分的代码,这是占Amdahl法则。二是并行的开销。90年代以来,已改善,但它不能被忽略。

谢尔:我的第一个项目之一是使用一个模拟模拟器。是并行、分布式的过程中,我们建立了一个混合信号环境,必须通过数据,所以分离是至关重要的。现在我们所看到的,在我们自己的引擎和数字仿真,是算法构思为串行程序不会让自己很好地移植到一个多处理器环境。我们尝试,四五年前。我们试图把算法,把它分开,分离块然后分发它们。我们有很酷的名字,但由于我们没有从根本上改变并行的算法有硬限制,我们可以实现。

Singhal:并行化是很酷的和强大的,但是它是极其难以实现和得到正确的。它是如此困难的原因是一样的,为什么硬件设计和验证远比软件设计和验证。如果你觉得硬件设计,它本质上是一个大规模并行程序在每个街区是一个平行的过程。是什么,让设计困难,调试困难,同步困难,他们都添加一层复杂性,很难管理软件。你必须决定你想要什么级别的并行化的东西。如果你很好,线程和同步,你需要担心开销和调试和再现性。如果你去粗粒度的,那么你必须选择正确的粒度和确保并行块平衡。增加了一层复杂性,我们习惯于在设计硬件。但是在软件,它是非常困难的。

Palfy:有些问题,非常适合并行化。世界上我们来自正式的,有任务,你可以自动化。这些可以很整齐地分开,你可以得到良好的性能。但是我们试着做的是聪明的关于我们并行化,因为有时不是蛮力并行你想有一些数据分析,可以帮助你选择正确的方式来解决这个问题。这会导致消除并行化的必要性。

马伦:分布式计算分区是非常重要的。你不能太好,但你不能太粗。他们必须是相对平衡的,这样你得到有效的使用所有的处理器和真正得到成千上万的核可伸缩性。

Casotto:我们可以去20000核解决问题。我们发现了大量的并行性,不是在应用程序级别,但在工作流级别。我们一直在用这个在过去的20年里试图教育人们有低挂水果的并行执行的工作到成千上万的机器。今天,我们的客户做运行成千上万的模拟器,和每一个可能是单线程的。但给人的印象是,我们实际上是利用可用的资源。

SE:处理并行性在EDA和硬件设计本质上比通用软件行业更加困难吗?

福斯特:我不这么认为。当你看模拟,需要成功的并行性是什么标准?有三件事。首先,你必须有一个设计,这是一个关键组成部分。设计必须有高度的并发活动。这是所需的分区。第二,你必须有一个平衡的分区。如果它失去平衡不管多少并行性。第三,可能最重要的,你必须有低分区间通信。我们都有营销的幻灯片,声称我们得到10 x通过并行性改善,然而现实情况是,你可以找到另一个例子,你确实比单线程的。 It is so highly dependent on the design. It is the same challenge in multiple domains, at least from my experience.

谢尔:我将回声。循环模拟有相似之处,这行业经历了1997年。我们称它为1000 x。今年年底3 x。你想知道为什么,没有那么多的引擎。引擎是好的循环发动机。问题我们发现,我们会与客户和他们会说,这是一个cycle-ready设计。当我们看着它时,他们会说,除了这一块,是20年前建的,是手工编写和时滞相关,但其他都是循环的。你可以很容易地得到一个< 1获得。说完这些,如果我们看看今天的设计高度异步设计。 Around the late ’90s it was single-clock designs or single fast-clock-based design. Customers could not just port timing from one to the next, so they started to move the time dependency out of the design and it became cycle-ready. But at 40nm we went to asynchronous timing domains.

福斯特:很多人那样做对权力的要求。

谢尔:但这的一些并行又缝合在一起。我们可能会看到新一轮的设计变化。

Singhal:并行化是没有困难或容易EDA。你只需要注意哪些问题你想并行化。

SE:设计已经告诉你所有的并行化在哪里。他们为你所做的工作。这不是软件的情况。

Singhal:信号完整性是一个并行化的问题,有大量的问题。如果你有成千上万的测试,你可以在不同的机器上运行它们。或者如果你有成千上万的属性,您可以运行它们。1993年,有一个正式的证明任何验证问题,单一的验证问题,是PSPACE难题,PSPACE比是一个np完全问题。NP完全意味着,如果你有一个无限并行系统,那么问题就可以在多项式时间内完成。但PSPACE困难意味着即使无限并行性你还不能在有限的时间内完成这个问题。如果是这样的话,那么一个验证问题已被证明是PSPACE努力永不可平行的。没有什么,你能做的。想想布图规划和布局。我们有解决的方法是将问题分解成更小的部分。 High-level floor planning divides up blocks, decides where they go and then you do lower-level floor planning, then place and route. The same with verification. If you can break up a system-level verification problem into sub-components and specify the contracts on the blocks, we should be able to say, at an abstract level, what I am promising to everybody else. Everybody else should be able to say the same. If I can take those promises and those contracts and verify the composition of those contracts, then the problem is solvable.

Palfy:那你基本上是看一个集成的问题,不是一个并行化的问题。

Singhal:是的。然后验证问题变得可平行的,因为你已经改变了的问题。但除非你这样做,你是坚持一个非常困难的理论问题。

谢尔:我同意,所有的评论,只是engine,但你是对的。验证比任何单引擎,状态空间很大,除非你使用某种形式的并行性来打破这个问题,没有解决方案。

福斯特:分而治之。

Singhal:是的,但是这意味着你必须知道如何分配。问题必须是可分的,然后需要综合的结果。

马伦:有时候很难划分。在我的产品,我们正在处理一个电路数百亿节点和我们试图得到精度要求平面分析。所以我们必须得到一个电路仿真结果,包括权力的完整性,电压下降,在那里你可以分区和并行化它,就好像它是解决一个矩阵。这不是一个困难的空间比其他软件领域,但EDA领域知识应用非常仔细地决定如何解决事情,给用户所需要的精度。利用诸如布局和矩阵技术,可以有效地并行化。

Casotto:你说,这是与其他问题,和验证的复杂性。但是我们也有其他类型的模拟仿真等问题,这是很困难的,因为你有信号,到处跑,这是很难划分。我们也有一些坏习惯。这是恐龙的自动化。我们开始很久以前,或许在其他人之前,和很容易当你想加快模拟器。你只是等待一代处理器和2 x倍,这样就无需花费很多努力与分区。现在有一个高原性能,所以打破连续模型的动机越来越强。会变得容易分区,因为芯片是如此之大,所以会有容易分解的方法,我们需要寻找的因素2 x, 3和4 x,还100 x的因素。

Palfy:但问题是,他们是重复的吗?我们正在处理相同类型的问题,我们正在调查,真正有趣的是,我们现在可以利用机器学习和了解更多关于极大的我们从合作中得到的数据量,并验证这些设计工作——不只是快使用蛮力,但是想办法更聪明我们如何处理这个问题。包括一些启发式和数据分析。聪明的方式解决它,这样我们不再是恐龙。

Casotto:是的,我们有一个坏习惯。每一个模拟器必须与HSPICE兼容。如果是在第七位,然后是不可接受的。也许这抑制了创新,这限制了新技术的采用。此外,商业模式和并行应用程序的许可影响技术的采用。一个客户有一个新的花式模拟器模拟平行,但并行运行的许可是昂贵。所以他们做了一个快速受益和许可成本之间的权衡,他们确定在4个线程,仅此而已。因为商业模式他们限制采用并行性四个。这是一个很长的路从20000年。

谢尔:有一粒是模拟的并行性,更多的运行。我们看到模拟许可证数量每年每客户日益增长的1.5倍到2倍。消费几乎是无法满足的,在模拟和数字。但问题是,当你开始跑到机器内部限制和你去云,那些是可用可扩展性的硬件吗?我们生产过相同的数据模拟,一次又一次的相同的结果。我们正在重新铺面相同的道路。并行性和能力产生了所有的并行仿真,它不一定让你任何更好的验证。得到更多的周期,许可证。

福斯特:对,没有周期之间的相关性和验证。

谢尔:并行性的可用性并不是自己一个答案。



2的评论

凯文·卡梅隆 说:

在并行版本的工作逻辑模拟器,业绩不佳,我想出了这个修复-

http://parallel.cc/cgi - bin/bfx.cgi/wt 2018/wt - 2018. - html
(https://youtu.be/Bh5axlxIUvM)

刚好,它还解决了安全性和可伸缩性问题总的来说,和神经网络一样的电路计算,那么人工智能。

穆罕默德Cirit 说:

我不明白这个问题已经回答了。如果一份工作可以分成独立的任务,它是适合并行化。然而,当这些任务共享资源,比如内存,他们需要排队成为串行工作。如果他们有依赖性,他们需要等待,因为他们的输入没有准备好。它是特定于应用程序的。

留下一个回复


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

Baidu