路科验证的个人空间 https://blog.eetop.cn/1561828 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

并行化仿真为何如此难以实现?

已有 754 次阅读| 2019-4-12 19:46 |个人分类:验证系统思想|系统分类:芯片设计| UVM, 并行仿真

rockeric.com

半导体工程(Semiconductor Engineering,以下简称SE)邀请Altair的首席科学家Andrea CasottoCadence系统与验证组的产品管理组主管Adam Sherer,西门子企业Mentor首席科学家Harry FosterOneSpin应用工程全球经理Vladislav PalfyOski TechnologyOski首席Vigyan Singhal,和ANSYS研发部高级主管Bill Mullen共同讨论EDA仿真器的并行化工作进展。以下是这段对话的摘录。

 

                          

SE: 为什么并行化的实现如此困难?

Foster:并行化的背景可以追溯到90年代的超级计算机和高端服务器,这些年来,我们使用了上百个处理器,试图利用其可以开发不同类型的EDA解决方案的优势,并且从中得到了一些主要经验教训,其中有两点可以解释并行性的局限性。首先是代码固有的串行部分,可以用Amdahl定律来解释;其次是并行性所带来的成本问题,自90年代以来,成本问题已经有所改善,但仍然是不可忽视的因素。


Sherer:在我的第一个项目中所使用模拟仿真器就是一组并行的分布式进程。我们搭建了一个混合信号的环境,这个环境必须要能传递数据,因此解耦至关重要。现在,在我们自己的引擎里进行数字仿真时可以看到,为串行应用程序设计的算法并不能很好的移植到多处理器环境中。早在四五年前我们就尝试过拆分算法,并相对应的解耦数据块。我们还给他起了个很酷的名字,但是由于我们没有从根本上改变算法,所以实现并行化依然有很大的限制。


Singhal:并行化确实很酷,功能也很强大,但实现起来非常困难。我们都知道硬件设计和验证要比软件设计和验证难得多,并行化难以实现的原因和它一样。首先,硬件设计本质上是一个大规模并行程序,每个块都是一个并行的进程,这使得设计、调试、同步都变得非常困难,而且它们都增加了用软件难以管理的复杂性。其次你必须决定并行化的级别,如果你选择非常精细、多线程同步的并行化,那就必须考虑开发的开销、调试和可复现性;选择粗粒度并行化时,我们必须采用合适的粒度来保证并行分块之间的平衡。对于并行化粗粒度所增加的复杂性,在设计硬件时习以为常,但在软件领域却是一大难题。


Palfy:有一些问题很适合用于并行化,在形式领域,有些可以自动化的任务,它们可以被整齐地划分,由此获得高性能。但我们要挑战的是更智能地并行化,因为有时候只需要进行一些数据分析,就可以帮助我们选择能够解决问题的正确方法,并不需要刻意地并行化。这样就可以消除对并行化的需求


Mullen:分区对于分布式计算非常关键,我们既不能分得太精细也不能太粗糙,必须保持一个相对平衡,以保证所有处理器得到充分地利用,真正地利用到上千的内核。


Casotto:我们确实可以用20,000个内核来解决一个问题,我们也确实已经在工作流级别找到了很多并行化。过去的20年,我们都一直努力教育大家利用数万台机器并行工作是很容易实现的。如今,我们的客户的确运行了成千上万个模拟器,而且每一个都可能是单线程的,但实际上,我们仅仅是在利用可用资源而已。


SE:难道在EDA和硬件设计中处理并行化比一般软件行业更难吗?

Foster:我不这么认为。仿真的时候,实现并行化要满足哪些条件呢?我认为有三个条件。首先,肯定要有一个设计——这是关键组成部分,而且设计必须有高度的并发活动,这是分区所必需的;第二,分区必须平衡,不平衡的分区会导致并行化失去意义;第三,可能也是最重要的一点,区间通信要尽可能地少。在商业宣传时我们声称通过并行得到了10倍的改进,但实际情况却是,你可以找到另一个使用并行化还不如单线程的案例。这一点非常依赖于设计,在很多领域都有着同样的挑战,至少以我的经验来看是这样。


Sherer:我赞同。就像1997年出现的周期仿真(cycle simulation),我们声称它是1000倍,结果却只有3倍的增效。你肯定会琢磨这是为什么,实际上这和引擎没有关系,我们所用的周期仿真引擎的确是好的。只是我们发现,问题在于我们和客户合作时,他们会认为他们的设计是一个基于时钟周期的设计。而当我们研究该设计时,客户说,除了二十年前建造的其中这个模块是手动绘制且依赖于延迟的,其他都是基于时钟周期的。很遗憾,你这种例外使我们只能获得不到1倍的额外增益,而且,我们今天的设计更多的是异步设计。大约在90年代末,它还是单时钟设计,但在40nm时代设计就进入了异步时


Foster:这么做很大一部分是为了满足功耗要求。


Sherer:但这破坏了一些并行化,这些并行化必须重新拼接起来,所以我们可能会看到另一场设计变革。


Singhal:对于EDA来说,并行化非但不难还要比想象中更容易些。我们只需要注意那些想要并行化的地方。


SE:一个设计已经告诉你所有的并行化位置,他们帮你完成了这项工作,但软件不是这样。

Singhal:信号完整性是一个并行化问题,并且在这一方面还存在许多问题。如果有上千个测试,我们可以在不同的计算机上运行每个测试,或者有成千上万个属性,我们可以单独运行每个属性。如果我们参考楼层的规划和布局,可以想到一种解决办法,就是把问题细分,分割成更小的部分,比如高楼层建筑规划街区,然后做低层建筑规划,接下来规划地点和路线,验证也一样。我们可以将系统级验证问题拆分为子系统级,而在各个子系统级为其添加正确的约束,这种分而治之的问题也可以降低仿真所需要的资源消耗。


Palfy:从根本上讲,你所研究的是一个集成问题,而非并行化问题。


Singhal:没错。改变了问题,验证就可以实现并行化。但如果不那样做,就难以解决一些理论问题。


Sherer:我们所有的讨论都是基于引擎的,你说的很对,验证要比任何一个单引擎都要大,而且状态空间也非常大,只能用某种形式的并行化来解决这一问题。


Foster:分而治之。


Singhal:是,但我们必须知道该怎么划分。首先这个问题必须是可以被划分的,其次最后的结果必须能被整合。


Mullen:有的时候很难划分。我的产品里,我们要处理的是一个有着数百亿节点的电路,并且想要得到需要全面分析的精确度,因此我们必须要有一个电路仿真结果,包含电源完整性和降低电压等因素,我们可以对其进行划分进而并行化,就好像它在解一个矩阵一样,这比其他软件领域要简单点,但必须要非常谨慎地应用EDA领域知识来考虑解决问题的方式,并且向用户提供他们所需的精确度。利用布局和矩阵技术等优势可以使并行化更加高效。


Casotto:你说它和其他问题大致相同,但验证有其独特的复杂性,我们还有其他类型的问题,比如模拟信号的仿真,它很难实现划分,因为信号无处不在。我们在很早之前有一些被自动化工具惯出来的坏习惯,在那个时候,使仿真加速很容易——我们只需要等待下一代处理器就可以使仿真加速到2倍。而在过去,要提高同样的性能,用分区并行化处理的方式却需要很多的精力。可是,现在事情变得不一样了!现在分区提速变得更加容易,因为芯片太大了,所以很轻松就可以找到分解的方法,我们有望得到2倍、3倍、4倍,甚至还有100倍的速度提升。


Palfy:但问题是,它们可重复吗?我们正处理同类型的问题,而且正在研究如何利用机器学习尽可能地研究通过协作,实际工作和验证设计获得的海量数据——不仅仅是按照具体用例去研究,而是要想方设法地让研究方式更加智能,这才是真正有意思的地方。用更智能的方式解决问题,这样我们就不是什么老古董了。


Casotto:是,我们确实有这个坏习惯。每个仿真器都必须和HSPICE兼容,也许就是这个原因限制了创新,同时也限制了新技术的采用。此外,商业模式和额外的并行技术license费用也会影响这项技术的运用。并行技术的license费用非常高,如果客户有一个并行的模拟仿真器,他们可能会在并行的线程数目(与费用正相关)和整体收益上做评估,而最终他们可能仅仅采用了并行4线程的方式——这距离最终达到20000个并行线程还有一段很长的路要走。


Sherer:有一些并行是通过同时跑更多的仿真进程来实现的。我们发现客户的工具授权请求每年增长1.5倍至2倍。不管是在模拟方面还是在数字方面,这个请求几乎是永无止境的。但如果我们为了突破机器的限制而将仿真任务转移到云上,我们还需要考虑这仅仅是硬件的扩展吗?我们使用相同的数据反复进行仿真,一次又一次地得到相同的结果,不过是在做无用功而已。这种并行方式并不一定能带来更好的验证结果,只会带来更多的仿真时长和license花费。


Foster:没错,验证的质量和验证周期之间没有必然的联系。


Sherer:仅仅只考虑并行仿真的可行性并不能解决问题。


原文来自Semiengineering “why parallelization is so hard”




点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 253

    粉丝
  • 25

    好友
  • 33

    获赞
  • 45

    评论
  • 访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-5 15:27 , Processed in 0.019373 second(s), 12 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部