找回密码
 注册
Simdroid-非首页
查看: 3928|回复: 49

大型CAE仿真的危机

[复制链接]
发表于 2007-5-16 11:44:06 | 显示全部楼层 |阅读模式 来自 上海
首先要声明,这个标题有点哗众取宠,因为这里大家关心CAE,而我要阐述的实际上是大型并行数值模拟的危机,而且个人对CAE领域了解有限,缺漏错误难免,欢迎指正。

论点很简单:模拟的精度和规模总是越来越大,相应的对计算的需求也越来越大,在过去我们可以依赖主频的提升来获得计算能力的提升,而现在只能通过多核来提升性能。但不幸的是,算法、软件的并行可扩展性有限,这将使得大型模拟难以为继,出现危机。

问题规模、模拟网格的增加相信大家都有明显的体会:从局部到整体、从低分辨率到高分辨率、从静态到动态、从瞬时到短时…… 十年前的模拟和今日的模拟不可同日而语。计算能力的提升来自于硬件和软件。

先说硬件,我念大学的时候,处理器正从386、486转入586,96年主频100MHz;03、04年的时候,主频已经是3.0GHz,再加上流水、多发射、SSE等技术,6-7年间,硬件计算性能提升了近50倍。而且,依旧灵验的摩尔定律使得这种性能的提升几乎呈线性发展。

软件方面则是另外一个情形。无论流体还是结构或者弹性问题,最后都是要求解大型稀疏方程组,近四十年间,算法上从带状高斯消去,到Gauss-Seidel迭代、到SOR迭代、PCG、多重网格以及近些年流行的预条件子,总体而言算法的性能提升并不亚于硬件的性能提升。当问题规模增大时,这一点尤为明显:硬件只能遵循摩尔定律线性提升,而算法的性能提升却通常和规模相关,例如FFT将计算复杂度从N^2降为NlogN。但是算法却不能象硬件那样持续、规律的进行更新和发展,它通常是阶段性、跳跃性发展,而且行百里者半九十,可以想象现在在大型稀疏矩阵求解方面获得大的突破,比一二十年前要困难许多。

算法不可预计的阶段性跳跃还不是严重的问题,真正的问题在于并行。多年以来并行是从事大规模数值计算的主要途径之一,但并行算法、并行软件开发工具等的发展却远远滞后于串行算法以及硬件的发展。算法上,以最常见的区域分解为例,由于问题和数据内在的关联性,相邻区域或者全局的数据交换无法避免,计算数学家再怎么努力,能获得的并行性能仍是有限,大多数应用只能在数十个处理器上获得好的并行性能,少数应用能扩展到上百个处理器,能有效使用成千上万个处理器的应用是凤毛麟角,而这种状况并非因为投入或能力不够,在现阶段更主要是由问题本性决定。

当前上海超级计算中心运行的大部分应用都不超过64处理器,除了fluent的128个license外,其他软件都只有64、32乃至更少的license。除了需求因素以外,相关软件的并行扩展性能是最重要的因素之一。如果处理器数目增加一倍,性能只提高20%乃至更少,这样的买卖谁会去做?当然,确实有人这样做,比如不计成本的国防安全相关的模拟计算。

除了并行算法,并行开发的工具和环境也是大的问题。MPI也好,OpenMP也好,这些当前主流的并行开发途径其实都是非常“丑陋的”并行实现方式,对程序员的要求太高,给他们的帮助又太少。当前是有很多新一代并行开发工具的研究和开发工作再进行,但这样的工具即便出现以后,到能够成熟使用,也至少需要5年时间,谁等得起呢?

以上其实是想说明一个问题:有效的并行算法、并行软件的开发都不能一蹴而就,都很难在短期内(这个短期不是一年两年,而是五年十年乃至更久)有质的变化,我们无法指望ABAQUS或NASTRAN会有很好的并行性能,能扩展到100个、200个处理器,当然每一次版本更新带来的花哨或者功能扩展,总是我们可以期待的。

我不知道实际应用中问题的规模到底会有多大,如果需要进行一些超出现有计算能力的模拟和计算,那在多核处理器盛行的未来,可能短期内很难有满意的解决方案。

(个人观念,欢迎讨论)

评分

1

查看全部评分

发表于 2007-6-8 23:03:40 | 显示全部楼层 来自 江西南昌
Simdroid开发平台
看来楼主也是CAE的资深人士了,关于大型CAE仿真的问题,有一点感觉到国内有些浮夸,很多地方都在上超算,但是是不是必要呢?或者说这些投入会不会有相应的回报呢?估计很多人都在跟着软件供应商走,但是软件供应商真的那么在乎用户的利益么?
回复 1 不支持 0

使用道具 举报

发表于 2007-5-16 17:03:14 | 显示全部楼层 来自 上海
taker兄似乎对大规模计算很有见解。事实上现有CAE软件在多核处理器上的并行处理与多CPU的处理方式没有本质区别,所以个人认为在短期内多核处理器的优势还不会太明显。但是并不是说今后CAE软件的发展与硬件发展会脱节。现有CAE原厂商都在尽力与硬件商合作提高并行性能,一方面可能更多考虑代码与硬件直接兼容,另一方面可能考虑代码的直接优化。并行编程是目前提高性能的最直接方法,虽然入门较难但是比较可行。如果有并行开发工具那将是大家的福音。但是实际上现有的并行开发工具都是辅助性的,难以有实质性的改变。至于算法方面,目前空间区域分解的并行算法的确有很大限制,期待更多新的并行算法。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2007-5-25 10:15:13 | 显示全部楼层 来自 上海
  用并行度较高的 FPGA ,把耗时的方程求解 移植给FPGA做,这样 速度就大大提高了。
回复 不支持

使用道具 举报

发表于 2007-5-25 12:55:03 | 显示全部楼层 来自 上海

回复 #3 fishliving 的帖子

这是什么东东,介绍一下
回复 不支持

使用道具 举报

发表于 2007-5-28 14:59:10 | 显示全部楼层 来自 上海
转贴

FPGA是英文Field Programmable Gate Array的缩写,即现场可编程门阵列,它是在PAL、GAL、EPLD等可编程器件的基础上进一步发展的产物。它是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。

  FPGA采用了逻辑单元阵列LCA(Logic Cell Array)这样一个新概念,内部包括可配置逻辑模块CLB(Configurable Logic Block)、输出输入模块IOB(Input Output Block)和内部连线(Interconnect)三个部分。FPGA的基本特点主要有:

  1)采用FPGA设计ASIC电路,用户不需要投片生产,就能得到合用的芯片。 ——2)FPGA可做其它全定制或半定制ASIC电路的中试样片。

  3)FPGA内部有丰富的触发器和I/O引脚。

  4)FPGA是ASIC电路中设计周期最短、开发费用最低、风险最小的器件之一。

  5)FPGA采用高速CHMOS工艺,功耗低,可以与CMOS、TTL电平兼容。

  可以说,FPGA芯片是小批量系统提高系统集成度、可靠性的最佳选择之一。

  目前FPGA的品种很多,有XILINX的XC系列、TI公司的TPC系列、ALTERA公司的FIEX系列等。

  FPGA是由存放在片内RAM中的程序来设置其工作状态的,因此,工作时需要对片内的RAM进行编程。用户可以根据不同的配置模式,采用不同的编程方式。

  加电时,FPGA芯片将EPROM中数据读入片内编程RAM中,配置完成后,FPGA进入工作状态。掉电后,FPGA恢复成白片,内部逻辑关系消失,因此,FPGA能够反复使用。FPGA的编程无须专用的FPGA编程器,只须用通用的EPROM、PROM编程器即可。当需要修改FPGA功能时,只需换一片EPROM即可。这样,同一片FPGA,不同的编程数据,可以产生不同的电路功能。因此,FPGA的使用非常灵活。

  FPGA有多种配置模式:并行主模式为一片FPGA加一片EPROM的方式;主从模式可以支持一片PROM编程多片FPGA;串行模式可以采用串行PROM编程FPGA;外设模式可以将FPGA作为微处理器的外设,由微处理器对其编程。

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2007-6-2 23:52:35 | 显示全部楼层 来自 上海

请教楼主一个问题

楼主提到了“大型稀疏”,关于大型稀疏矩阵的求解,楼主觉得那个算法速度最快?
我自己编制的一个专业软件,与大型桥梁相关的,使用是一维变带宽存储的LDLT分解和回代求解,很想知道对于自由度为5000~10000的大型稀疏矩阵,楼主提到的那些算法中哪个的计算速度最快。谢谢了。

[ 本帖最后由 cobalt 于 2007-6-3 00:14 编辑 ]
回复 不支持

使用道具 举报

发表于 2007-6-11 16:01:19 | 显示全部楼层 来自 上海
7楼很有见地!
国内近两年上的各省、市超算中心不少,比如wx、gs、sz等等,但个人觉得称得上“超级计算中心”的不多。随便买上一、两百个CPU堆一下,难道就是超算中心了?充其量不过是个计算中心罢了。
不可否认,最近上的一些“计算中心”,部分是存在需求,部分是面子工程。至于回报问题,看怎么看了,短期的?长期的,直接的还是间接的?经济效益的还是社会效益的?只要定位清楚,真正意思上的超级计算应该是有益的。
至于商业软件问题,各类的cae、cfd软件只是超级计算的冰山一角,其实他们并不是super computing的主角。随着硬件的发展,商业软件在超级计算机上的作用会降低的,这是轮回。

[ 本帖最后由 eros 于 2007-6-11 16:02 编辑 ]
回复 不支持

使用道具 举报

发表于 2007-6-22 14:14:58 | 显示全部楼层 来自 上海

回复 #4 shanget 的帖子

5楼的已经跟你介绍了  FPGA

       一般在超级计算机内都在用FPGA作为加速器,FPGA并行度很高,能实现并行可重构计算,但是FPGA开发难度很大,目前开发工具VHDL 、verlog等,这些工具也难以开发上百万规模的门,一般像xilinx的Virtex 系列有600w逻辑门。但是计算速度真的很快,如果算法并行度很高的话,以前需要花几个月的时间,现在一天就能完成了。
回复 不支持

使用道具 举报

发表于 2007-7-19 22:08:03 | 显示全部楼层 来自 江苏无锡
好牛的话题,楼上的都是专家!!!
回复 不支持

使用道具 举报

发表于 2007-8-15 08:54:31 | 显示全部楼层 来自 上海松江区
小弟 洗耳恭听了   佩服
回复 不支持

使用道具 举报

发表于 2007-8-19 10:30:55 | 显示全部楼层 来自 山东青岛
洗耳恭听了   佩服
回复 不支持

使用道具 举报

发表于 2007-8-19 10:33:39 | 显示全部楼层 来自 山东青岛
回复 不支持

使用道具 举报

发表于 2007-8-19 15:25:32 | 显示全部楼层 来自 北京
从来都是个人小打小闹,还没有做过多人合并计算,更谈不上用超级计算机

差距啊!
回复 不支持

使用道具 举报

发表于 2009-6-6 15:09:56 | 显示全部楼层 来自 四川资阳
高深啊!佩服
回复 不支持

使用道具 举报

发表于 2009-11-26 16:04:40 | 显示全部楼层 来自 西安交通大学
小打小闹,洗耳恭听ing
回复 不支持

使用道具 举报

发表于 2009-12-14 20:36:33 | 显示全部楼层 来自 湖北武汉
真是越学越觉得自己不会的更多啊。
回复 不支持

使用道具 举报

发表于 2009-12-22 19:57:53 | 显示全部楼层 来自 北京
楼主是专家啊,最近正在研究并行计算,有了一点小成果
回复 不支持

使用道具 举报

发表于 2010-2-27 18:40:48 | 显示全部楼层 来自 欧洲
受教了。楼上的很有见地啊。让俺增长了不少知识。
回复 不支持

使用道具 举报

发表于 2010-3-14 19:51:09 | 显示全部楼层 来自 上海
门外汉,受教了。
回复 不支持

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-3-29 22:15 , Processed in 0.072474 second(s), 20 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表