不知道诸位有没有遇到过类似的尴尬,一个规模不小的模型,开始运行计算后,苦苦等待,看着CPU长时间持续接近100%,感觉马上要出结果了吧,突然弹出一个对话框,告诉我们“内存不足”,然后呢,电脑卡死了。。。
每当此时,都有一种生无可恋的感觉。
那今天咱就来聊一聊内存设置的小技巧
话说,按照你的习惯,ANSYS命令流在开始阶段(从一开头到/prep7前处理之前)都是怎么写的呢?分享一下我的:
finish
/clear
/filname,MyModel
/config,fsplit,256
/config,nbuf,9
前两行,一个finish,一个/clear是我的最爱,尤其是在命令流的Debug阶段,需要大量的调试,大量的全选命令流然后粘贴到ANSYS命令输入框然后按回车的时候,那酸爽可真是谁用谁知道。
文件名其实无所谓啦,重点是/config命令,我上面的设置,是限制ANSYS运行时产生的文件最大为1G,多了就自动分割,而且还减少硬盘读写速率。
/config,Lab,VALUE
Lab包括:
NORSTGM:值为0时在文件中写入模型几何数据,为1时则不写入;
NBUF:求解器中每个文件的缓存数量,数值可以是1~32的任意数,默认为4;
FSPLIT:默认文件分割尺寸,对应的数值,1个单位相当于1MB;
/config一共有18个Lab名称,可以当次运行的分析规模等进行细致的自定义设置,当有特殊需要的时候,我们可以用这个命令来控制存储文件里都会有什么,以及程序中最多有多少个节点、多少个单元等等。
除了命令之外,在ANSYS运行之前,可以在Launcher做点工作,一些可能会有用的经验包括:
1.尽量取消系统的虚拟内存设置,ANSYS有自己的虚拟内存系统。
2.勾选use custom memory settings之后,Database由于是用来存储实体模型、网格和结果文件的,可以理解在运行的时候把*.db文件“放在”内存里,用来加速运算。所以数据库的大小默认为1024MB,为Total Workspace的一半。如果该项目进行过计算,大概可以知道*.db文件的大小。如果没运行过可以通过Rfilsz命令来进行预估,可以设置比该文件稍大一点即可,让total workspace留有更多的内存空间用来给计算过程。
3.Total workspace的设置,在其他程序都不跑的前提下,尽量多给一些内存。一个方法是Ctrl+Alt+Del,调出任务管理器,把其他程序都关闭的情况下运行一小会,看看系统自己用了多少内存,然后用物理内存减掉系统用的内存(再留点富余的就行),剩下的尽量多给ANSYS设置上。也可用rwfrnt命令来预估求解内存大小,total workspace减去database后至少比预估的内存值大一点,目的是尽量利用内存,减少使用虚拟内存的page进行硬盘的读写。
4.CPU设置方面,选用CPU的数量为物理核心-1,为系统留一个核心,以免死机就行,原则上核心用的越多,就用越多的系统资源来计算,效果越好。至于设置的方法,存在两种模式:SMP和MPP.
SMP Shared-Memory parallel 共享内存,适用于单机多核并行(针对于本机)
特点:
1) 超过2个处理器(核)后,每个处理器(核)都需要一个HPC licenses (High Performance computing),一个HPC licenses可以支持两个处理器(核),比如4个处理器或两个双核的处理器,需要2个HPC licenses
2) 物理内存连续,即所有即将使用的处理器共用一个物理内存, 比如dual或者quad cores 的处理器
适用于:
1)大多数,并不是全部的/Solu过程可以并行
2)适用于/solu中的较多的求解器。 比如AMG
3)前后处理并行
MPP Distributed computing 分布式并行计算,单机多核或多机多核并行(本机或联机)
要求:
1)超过2个处理器后,每个处理器都需要一个HPC licenses (High Performance computing)
2)多机联机时需要MPI 软件 (message passing interface); 有host 处理器和slave处理器区别,需要自己设定
3) 如果本机分别有两个四核的处理器,只在本机使用MPP, 不联机,在没有使用MPI软件的情况下,运行MPP时可使用的最大处理器数目为4,而不是8,
适用于:
1)整个/Solu过程都可以并行,包括刚度矩阵迭代
2)适用与/Solu中的求解器少于SMP, 不适用于AMG
3)前后处理并行
在计算时间方面,MPP的计算时间更短,使用并行处理的话,有文档说需要在安装的时候装有MPI ,建议试试设置MPI方法下的6~7个CPU核心,要是没有报错的话应该就没大问题了。
还有就是求解器了,大规模计算建议采用PCG求解器,其中,PCG求解器还支持分布式计算(多核心)。