本文章为原创,版权归作者刘锦程所有,文章转载请先取得作者的同意,非常欢迎转发文章链接!严禁以任何方式挪用本文内容,用于以盈利为目的各种活动。
一句话提要:
长久以来,网络上都流传着VASP非常吃内存带宽的说法?到底是真是假?今天就来进行解密!
想知道怎么插,直接跳到最后结论。
首先,要明白内存带宽和内存容量,是完全不一样概念。
内存容量,就是我们常说的8GB,16GB,32GB内存,等于插在主板内存插槽上所有内存条容量的总和。
内存带宽,是指cpu处理器和内存之间的交换速度。内存的容量决定“仓库”的大小,而内存的带宽决定“桥梁”的宽窄,两者缺一不可,这也就是常常说道的“内存容量”与“内存速度”,带宽=内存带宽=内存核心频率×内存总线位数×倍增系数。单位通常为 bytes/second。
01 VASP计算到底吃不吃内存呢?
吃内存带宽!
正常的VASP计算任务几乎不吃内存容量,跟踪发现,内存利用率不到1%。当然,GW等计算任务还是比较吃内存容量的,不在此讨论范围内。
但是,VASP是十分吃内存带宽的,好多国外的测试都提到这一点。具体有多大影响今天我就测试了一下。
02 我的机器
测试用了两个机器,第一台机器,购买时候型号如下:
- 志强铂金8176 *2
- 猫头鹰3647散热器 *2
- 超威X11DAI-N *1
- 三星32G DDR4 ECCREG *4
- 三星500G固态 *1
- 希捷4TB企业级 *1
- DX7全塔机箱 *1
- 长城1250W电源 *1
- GTX1080ti 欧版 *1
英特尔® 至强® 铂金 8176 基本是目前能买到的非常好的CPU了,单颗28核56线程,Intel官网建议售价 $8719.00 - $8725.00,由于笔者购买的是拆机货,所以极便宜的价格就拿下来了,除了价格和原厂货完全一样的,两颗 8176一共 28*2 = 56 核。没错,下图两个大块头散热塔下面压的就是两颗CPU。这是我正在运行的机器内部。
想要知道该CPU应该配什么样的内存,去官网查一下内存规格:
- 最大内存大小(取决于内存类型):768 GB
- 内存类型:DDR4-2666
- 最大内存速度:2666 MHz
- 最大内存通道数:6
- ECC 内存支持 :是
对我们配置内存直接有用的是内存类型 DDR4-2666,最大内存通道 6。
- 根据带宽计算公式,要尽量插满内存,单颗CPU配6条,两颗配12条,选用的主板也必须支持3通道,支持插12条。
- 内存频率最高支持到DDR4-2666MHz,买频率低了不能发挥CPU支持的最大的性能,买频率高了也没有用。所以就买DDR4-2666MHz即可。
03 我的测试
由于刚买的机器只配了4根内存,就只能很尴尬的给每个CPU配两条。
所以,这两天有一口气买了12根内存,三星 16GB DDR4-2666MHz。把之前的4根插到其他的机器上去了。
在完全同样的编译参数和同样的计算文件比较了一下计算速度,为了让测试更准确,找了个复杂点的例子。含有锕系元素Th的MOF材料。
平均电子步耗时:
2*2 通道:~6.3 sec
2*6 通道:~2.3 sec
结构优化3个离子步总耗时:
2*2 通道:655.737 sec
2*6 通道:251.013 sec
计算速度差了2.6 倍!测试之前并没有想到内存带宽对计算速度影响有这么大。可能是由于三通道CPU只插了两个的原因,如果是23通道估计也会比 22通道好不少。
随后,我又拿了一台E5-2686v4机器(满插需8条内存)测试了一下,对比插满8条内存和只插4条内存的计算速度。
缺陷的石墨烯的结构优化耗时:
2*2 通道:374.268 sec
2*4 通道:257.539 sec
速度也差了1.45倍 !
当然,影响VASP计算速度的因素很多。硬件、编译方式、计算参数等。可以总结好几篇推文了,有时间会慢慢介绍。目前最新版本的VASP代码和VASP6还对intel的AVX-512指令集做了特殊优化,如果买入intel xeon sliver/gold/platinum系列的同学可以尝试用如下指令编译
1 | 1 OFLAG = -O3 -xCORE-AVX512 |
体验一下速度。intel官方网站也有关于指令集的测试AVX-512可以提速接近2倍:
结论
VASP计算,想要发挥CPU最大运行运行效率,要插足该CPU型号对应最大内存通道数量的内存条,并且保证内存的型号和频率达到CPU支持的最大值。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。