如何提高ABAQUS计算速度

如何提高ABAQUS计算速度


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

我认为影响计算速度的因素主要有3个:

1.计算模型的大小和复杂程度;

2.ABAQUS中关于内存和硬盘使用的设置;

3.计算机的配置。

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

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

下面说说CPU和内存的使用问题。首先CPU和内存频率越高计算速度就会越快。当“全速计算”时,我看到的是CPU在分析计算时能100%使用(除了前处理,写入计算结果和两迭代计算中间隙时),多CPU计算也是如此。不是“全速计算”时,分析计算种CPU部分时间能100%使用,和部分CPU能100%使用,我想这应该和硬盘读写速度相对较慢导致的吧。如果有两个模型在某计算机中都能“全速计算”,两个“全速计算”的内存之和也不超过允许使用内存大小,如果同时计算,计算速度应该都小于分别单独计算时的速度,因为CPU要分配给两个模型用。如果两个“全速计算”的内存之和大于允许使用内存,则同时计算时就会“抢内存”,计算速度就会大打折扣,这还没考虑如果使用了虚拟内存的情况。

如果你设置的ABAQUS使用的内存上限大于你实际的物理内存,这个时候好像就会用到虚拟内存,计算速度也会大打折扣。如果你用ABAQUS时还有其它程序也在大量使用内存和CPU,也会很影响速度。所以务必保证你设置的允许使用内存上限,必须是计算机物理内存实际能空闲提供给ABAQUS使用的内存。

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

默认 最新
当前暂无评论,小编等你评论哦!
点赞 1 评论 收藏 2
关注