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

[精华汇总] ABAQUS提高计算速度的经验总结

[复制链接]
发表于 2009-3-3 20:51:01 | 显示全部楼层 |阅读模式 来自 武汉大学
本帖最后由 pearqiqi 于 2010-5-18 21:09 编辑

当问题的自由度和复杂程度比较小的时候,计算速度也许不是什么太大的问题,但当自由度很多,比如几百万个自由度,又有复杂的接触搜索计算时,计算速度就很重要了。我不精通计算机原理,但在Windows和Linux上安装使用过32位和64位ABAQUS,也在64位工作站上用Linux并行计算过,对计算速度有一点自己的心得,写出来和大家讨论下,对计算机比较精通的,希望能解释下原理和表达下自己的看法。

      我认为影响计算速度的因素主要有3个:1 计算模型的大小和复杂程度 2 ABAQUS中关于内存和硬盘使用的设置 3 计算机的配置

      在ABAQUS帮助文件中说,一个有限元模型在分析计算中,会生成两种临时文件,第一种临时文件是必须放在内存中,第二种临时文件可以放在硬盘里也可以放在内存中。由于内存读写速度比硬盘读写速度快,所以如果计算机配置不变的情况下,要达到最快计算速度,就要在计算时让两种临时文件都放在内存中。在计算前进行datacheck,然后在dat文件中会告诉你能使模型计算所需最小的内存量,也就是在计算中所生成的第一种文件的大小,还会告诉你最小I/O交换情况所需的内存量,也就是两种文件都放在内存中时所需要的内存量,我称这叫“全速计算”所需内存量。在ABAQUS6.8中,有个内存使用上限设置参数,也就是你允许你的计算机中有多少内存让ABAQUS使用,如果你允许ABAQUS使用的内存上限大于“全速计算”所需内存,则ABAQUS会将两种临时文件放入内存使用。如果允许内存大于最小所需内存,小于“全速计算”计算内存,则ABAQUS会把第二种文件一部分放入内存,一部分放入硬盘。如果允许内存小于最小所需内存,则无法计算。

        所以如果你的模型“全速计算”所需内存量很小的时候,或者相对你的计算机物理内存很小的时候,如果不改变计算机配置,速度就已经达到最快了,再加大内存或内存上限也没用。如果你的模型无法进行“全速计算”,首先可以在可能的情况下,提高ABAQUS允许使用内存上限值来提速,如果本身物理内存的限制,那么加大物理内存也能提速。

       下面说说CPU和内存的使用问题。首先CPU和内存频率越高计算速度就会越快。当“全速计算”时,我看到的是CPU在分析计算时能100%使用(除了前处理,写入计算结果和两迭代计算中间隙时),多CPU计算也是如此。不是“全速计算”时,分析计算种CPU部分时间能100%使用,和部分CPU能100%使用,我想这应该和硬盘读写速度相对较慢导致的吧。如果有两个模型在某计算机中都能“全速计算”,两个“全速计算”的内存之和也不超过允许使用内存大小,如果同时计算,计算速度应该都小于分别单独计算时的速度,因为CPU要分配给两个模型用。如果两个“全速计算”的内存之和大于允许使用内存,则同时计算时就会“抢内存”,计算速度就会大打折扣,这还没考虑如果使用了虚拟内存的情况。
如果你设置的ABAQUS使用的内存上限大于你实际的物理内存,这个时候好像就会用到虚拟内存,计算速度也会大打折扣。如果你用ABAQUS时还有其它程序也在大量使用内存和CPU,也会很影响速度。所以务必保证你设置的允许使用内存上限,必须是计算机物理内存实际能空闲提供给ABAQUS使用的内存。

        然后再是Linux和并行计算的问题,一台计算机使用多个CPU进行计算也算是一种并行计算,在“全速计算”情况下参与计算的CPU越多,计算速度越快。我用的是ABAQUS6.8,Linux用的是opensuse10.3,计算机用的是两台64位8CPU工作站。我的计算速度经验是,同一个模型在“全速计算”情况下,用隐式计算,单机Linux计算时间是单机Windows计算时间的四分之三,两个工作站Linux并行计算的时间是单机Windows计算的二分之一。

评分

1

查看全部评分

发表于 2011-4-21 16:19:58 | 显示全部楼层 来自 美国
Simdroid开发平台
本帖最后由 arthas 于 2011-4-21 16:29 编辑

关于计算速度,我有一些不成熟的看法:
第一个观点机器是死的,人是活的。机器都是工具,我们应该把给机器的命令尽量简化,这样他们才会反应快。尽量简化模型,去除不必要的东西。即使很小,也希望大家能够尽量思考如何简化,要养成习惯。比如接触中能够使用小滑移就不要使用有限滑动。输出能够精简就精简等。这样也有利于我们效率和反应速度的提高。
有很多时候大家觉得我这样简化就够了,但是否真的就够了呢?如果你遇到水平比你高的人他们肯定做的模型肯定比你得更简洁。经常挑战自己对模型的简化,对自己的提高很有帮助。我们是人,软件和机器都是工具,我们不要被工具牵制住。试想一下如果我们没有这些软件你是否还有存在的价值?
第二个观点,了解求解器的特点。显式和隐式对求解器的侧重点是不同的,比如增加CPU数目能够提高显式的计算速度,对隐式则帮助不大。增加内存的比例能够提高隐式的求解速度等。
第三个观点,尽量利用手头的硬件资源。环境如此,我们只有尽量去适应环境,当然能够改变更好。但是手头的资源能够最大限度使用也是一件美食。比如计算的时候尽量关闭不必要的进程等。
总结,速度不是一下就能提高,这里扣一点,那里挖一些,总会有帮助的。而且这样何尝不是一种提高自己的方法呢?

评分

1

查看全部评分

回复 2 不支持 0

使用道具 举报

发表于 2009-12-16 14:42:47 | 显示全部楼层 来自 吉林长春
我在windows下安装的64位的abaqus6.8,在计算中发现,只要物理内存调用的百分比设置合理,使其能够满足模型预处理时所需内存时,计算速度就较快,反之,百分比设置的越高计算速度越慢。暂时想不到很好的原因解释这一现象,不过我推测,可能是在迭代过程中会有大量的页面文件产生,会调用部分内存,如果机器的剩余内存不足,就会调用虚拟内存,使得计算速度减慢。所以在提交分析计算时,对于内存调用的设置一定要根据实际模型的需求和硬件的配置而定。
回复 1 不支持 0

使用道具 举报

发表于 2009-5-15 10:37:47 | 显示全部楼层 来自 重庆
本帖最后由 20cr 于 2009-5-15 10:41 编辑

我自己用的是4核的处理器,感觉是双核要比单核快70%,三核要比双核快130%,四核差不多是单核的三倍了,在提交选择处理器的数量上面,有些参数,我不知道有选择对计算有撒子影响,感觉都差不多,我一般都是选择loops这项。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×

点评

THANKS  发表于 2013-11-27 08:31

评分

1

查看全部评分

回复 1 不支持 0

使用道具 举报

发表于 2009-5-13 15:04:18 | 显示全部楼层 来自 德国
既然有人把老贴顶起来了, 我就再多啰嗦两句, 望Robert_Su网开一页.

首先, I/O是指input/output,是指用于基本输入输出的交换文件大小, 如果内存了不够的话, 这个文件是放在硬盘上的, 如果内存足够大的话, 这个文件则会由ABAQUS进行任务调度放入内存以提高速度, 即设定内存使用量的百分比. 这个不是指所需的内存量, 而是作为一个控制磁盘剩余空间的参数.

其次, 关于缓存大了是不是一定好的问题,  缓存是一个磁盘文件的部分或全部镜像, CPU要得到数据首先是通过查找其内部的高速缓存, 或叫一级缓存, 如果没有, 再查找二级, 还没有再查找内存中的磁盘缓存, 还没有就查找磁盘文件, 一部级数越高, 其缓存物理速度越快, 空间也越小, 价格也高, 所以系统分级缓存是一个金字塔形的, 假如CPU在前三次都没找到, 第四次找磁盘空间才找到, 为什么不能直接找磁盘呢, 这样不是更节约时间? 问题就出在所有的缓存都是下一级缓存部分镜像上, 而且查找缓存也要用到一定的时间, 这种情况下, 磁盘文件在内存中的缓存就不是越大越好, 而是刚刚好最好, 小了会减小命中率, 大了会增加查找时间.

再次, 关于多CPU的问题, 操作系统在进行任务调度的时候会尽量安排互相之间没有资源冲突的线程分CPU进行计算, 最后再进行数据同步, 每个CPU和线程都占用独立的运行空间, 为了对公用的数据空间进行管理, 防止几个线程同时改变公共数据, 同步技术在这里被使用了, 跑得快的必须在某个点停下来等跑得慢的, 这样就造成了执行效率的下降, 但是保证了数据安全, 没有必错误的修改, 所以不可能出现一个CPU在进行每二步迭代了, 另一个CPU还是算第一步的情况, 特别是在std中很明显, 我曾经试过4CPU比2CPU计算会慢一点点的情况. 就是因为数据同步的问题.

评分

2

查看全部评分

回复 1 不支持 0

使用道具 举报

发表于 2009-3-3 22:00:54 | 显示全部楼层 来自 湖南湘潭
看了之后很有收获,能力有限,速手无策
回复 不支持

使用道具 举报

发表于 2009-3-4 17:00:44 | 显示全部楼层 来自 四川成都
谢谢
又学习了,对你的提出的问题我不太懂,没有尝试过!
回复 不支持

使用道具 举报

发表于 2009-3-4 17:25:22 | 显示全部楼层 来自 四川成都
谢谢
又学习了,对你的提出的问题我不太懂,没有尝试过!
回复 不支持

使用道具 举报

发表于 2009-3-4 18:29:58 | 显示全部楼层 来自 辽宁沈阳
我用双核计算机,感觉用并行的技术计算,CPU使用率为100%,但感觉一般没有只用50%CPU时计算快,有时候也很不解。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-3-5 21:17:36 | 显示全部楼层 来自 武汉大学
要保证在同一个条件下计算,我觉得CPU应该是越多速度越快
回复 不支持

使用道具 举报

发表于 2009-3-5 22:58:44 | 显示全部楼层 来自 湖北武汉
谢谢
又学习了,但我没有尝试过!
回复 不支持

使用道具 举报

发表于 2009-3-6 08:50:06 | 显示全部楼层 来自 山东临沂
这个问题我也是研究过:
1 计算速度在不同的ABAQUS处理阶段是不一样的,所以不同时间CPU的使用率也是不同的
2 CPU要和相应的内存相配套,例如64位的操作系统要和4G以上的电脑,我的是16G的内存,8核CPU,CPU有时候可以全部达到50%以上
3 CPU只有在显式计算中能体会到最大的使用率,可以看到所有的CPU在运行,很壮观的。
回复 不支持

使用道具 举报

 楼主| 发表于 2009-3-10 08:54:46 | 显示全部楼层 来自 武汉大学
本帖最后由 pearqiqi 于 2009-3-10 09:00 编辑

是的,前处理,写入计算结果和两迭代计算中间隙时,CPU使用率没有真正计算时高。
对于显示计算,之所以CPU总能100%利用,我觉得是因为由于显示计算时,临时文件只有第一种临时文件,也就是临时文件都只能放到内存中,所以显示计算就相当于隐式计算的“全速计算”。隐式“全速计算”时,CPU全部用满的确很壮观,我用两个64位工作站进行Linux并行计算时,16个CPU的使用率都是100%时很让人兴奋啊!
回复 不支持

使用道具 举报

发表于 2009-3-10 21:35:53 | 显示全部楼层 来自 陕西宝鸡
看后很有启发,我用的是服务器,算题还蛮快的
回复 不支持

使用道具 举报

发表于 2009-5-13 11:24:48 | 显示全部楼层 来自 黑龙江哈尔滨
不太明白

评分

1

查看全部评分

回复 不支持

使用道具 举报

发表于 2009-5-15 15:14:45 | 显示全部楼层 来自 宁夏银川
不错 支持楼主

评分

1

查看全部评分

回复 不支持

使用道具 举报

头像被屏蔽
发表于 2009-5-28 08:54:26 | 显示全部楼层 来自 江苏南京
提示: 该帖被管理员或版主屏蔽
回复 不支持

使用道具 举报

发表于 2009-7-14 10:37:21 | 显示全部楼层 来自 浙江杭州
1# pearqiqi


楼主,能不能具体说一下在windows下怎样安装abaqus6.8的。我们的工作站也是64位8核的机子,可我按照安装普通机子的方法无法在工作站上安装成功,总在安装product时无法与license连接起来。谢谢你了
回复 不支持

使用道具 举报

发表于 2009-7-15 11:04:38 | 显示全部楼层 来自 浙江杭州
有没有人能帮帮我啊 我现在急着给工作站装abaqus6.8 谁装过请教教我吧
回复 不支持

使用道具 举报

发表于 2009-7-30 15:08:17 | 显示全部楼层 来自 上海
LZ所说的设置内存上限是什么意思?  是不是就是提交job时,在memory选项卡中的analysis input file processor memory 和abaqus/standard memory cap?
回复 不支持

使用道具 举报

发表于 2009-7-30 16:30:56 | 显示全部楼层 来自 浙江杭州
很有帮助,谢谢分享啊
回复 不支持

使用道具 举报

发表于 2009-7-30 16:31:59 | 显示全部楼层 来自 浙江杭州
很系统的总结,谢谢分享
回复 不支持

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 21:52 , Processed in 0.097398 second(s), 22 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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