在 LS-DYNA 中,内存按 Word 组织,32 位操作系统上,单精度 1Word=4bytes,双精度 1Word=8bytes,假如你要设置 1G(1000M) 的内存,如果是单精度,则计算公式如下:
我们根据这个可以计算出 Y,因此,这个设置如下:
keyword_ID NCPU=4 MEMORY=262144000
如果直接在命令行里面设置是这样的:
LSDYNA.EXE *.K NCPU=4 MEMORY=262144000
这就是在一台拥有四核 CPU 的电脑上,给提交计算的文件分配了 1G 的内存。
LSDYNA 中内存 memory 的设置一 words 为单位,64bit 系统,1 个 words=8Byte,因此申请时需要注意分配的大小。
另外,LSDYNA 在申请内存时,对于 SMP 和 MPP 两种方式有着不同的意义。对于共享内存的 SMP,命令行中的 memroy=XXX 表示多个 cpu 共用的内存总数为 XXX,而在分布式计算的 MPP 中,memory 有两个值,MEMORY_1,在命令行中以 memory=XXX 设定,该值为主节点(master node,一般为第一个节点)使用的内存数,用于划分模型时使用(decompose the model);MEMORY_2,在命令行中以 memory2=XXX 表示,该值为各个核(包括主节点的核)使用的内存数,用于求解划分后的模型。Memory2 依赖于节点数量,节点数越多,划分后的模型越小,这个值就可以越小。
内存分配的经验:
memory1通常使用内存的30%到 70%。
memory2通常使用memory1分配后剩余内存的 20%到 40%。‘
注意:memory可以在命令行设置,memory=xxxx,也可以在文件中设置,以 *KEYWORD xxxx方式设置。
memory2只能在命令行设置。
memory可以Mega words单位设置, memory=200M,即 200,000,000 words。
举例:
某一lsdyna问题,在16核心的计算节点上求解,该节点最大许用内存为64G。lsdyna设置memory1=800m,memory2=350m,对于64位操作系统,按照1word=8bytes,则计算公式如下:
M1:800M(word)*8(bytes)/1024(KB)/1024(MB)=6103.51(MB)=5.96G
M2:350M(word)*8(bytes)/1024(KB)/1024(MB)=2670.29(MB)=2.61G
假设在同一个节点上用16核心求解:则lsdyna在该节点最大可用内存为:
5.96G+15*2.61G=45G
在尽可能满足计算的情况下,没有超过该节点许用内存。
《LS-DYNA 内存计算方法》有1条评论