1) CPU:2696V3 *2 470*2 (某宝) 内存:镁光2133 16G*8 148*8 (某宝) 主板机箱电源:超微7048GR 3500 (某鱼) 计算卡:TESLA P100 1500*4(某宝) 硬盘:500G机械,闲置硬盘 总价11624,不含税(2022年12月报价) 最早配的机器已经稳定运行半年多了,目前有三台同样配置的机器,经过多次验证,P100卡跑VASP足矣,我机器上一台4卡P100的计算速度跑我们学校超算中心的两张A100的计算速度是一样的,没必要使用V100或A100。另外GPU版只适合做300个原子以上的大体系,小体系计算过程中GPU大部分时间处于闲置状态。计算速度是受到CPU整理数据限制的。帖子里面的配置瓶颈是CPU的单核性能,我也尝试了用OPENMP+MPI编译VASP,每个GPU分配多个CPU核心,但基本没有什么提升效果。 2) 4卡P100: 1 T= 400. E= -.38354159E+04 F=-.38601811E+04 E0= -.38581906E+04 EK=0.24765E+02 SP= 0.00E+00 SK= 0.00E+00 LOOP+: cpu time 445.6568: real time 442.0529 (77电子步) 3) 2卡2080S: 1 T= 400. E= -.38354173E+04 F=-.38601812E+04 E0= -.38581906E+04 EK=0.24764E+02 SP= 0.00E+00 SK= 0.00E+00 LOOP+: cpu time 1311.2067: real time 1311.5196 (79电子步) 4) CPU 2696V3 36核: 1 T= 400. E= -.38353993E+04 F=-.38601816E+04 E0= -.38581905E+04 EK=0.24782E+02 SP= 0.00E+00 SK= 0.00E+00 LOOP+: cpu time 2040.6643: realtime 2043.8574 (81电子步) 5) CPU 8336C 64核: 1 T= 400. E= -.38353970E+04 F=-.38601816E+04 E0= -.38581903E+04 EK=0.24785E+02 SP= 0.00E+00 SK= 0.00E+00 LOOP+: cpu time 746.1045: real time 751.6612(81电子步) 6) CPU 8272CL 52核: 1 T= 400. E= -.38354115E+04 F=-.38601818E+04 E0= -.38581908E+04 EK=0.24770E+02 SP= 0.00E+00 SK= 0.00E+00 LOOP+: cpu time 1149.2981: real time 1162.3467(77电子步) 7) CPU 7R32 48核: 1 T= 400. E= -.38354004E+04 F= -.38601818E+04 E0= -.38581904E+04 EK= 0.24781E+02 SP= 0.00E+00 SK= 0.00E+00 LOOP+: cpu time 640.8056: realtime 643.9117 (78电子步) 8) CPU 7R32 96核: 1 T= 399. E= -.38354520E+04 F= -.38601818E+04 E0= -.38581908E+04 EK= 0.24730E+02 SP= 0.00E+00 SK= 0.00E+00 LOOP+: cpu time 618.2759: real time 623.1789 81 9) 1,P100的双精度为2080S的10倍左右,但实际计算速度P100是2080S的2倍,有没有大佬知道什么原因? 2,P100计算时使用率最高90%左右,2080S则100%,是否CPU瓶颈? 10) 双路2696V3共36核,每电子步平均时间40秒 11) 再次论证了, 对于VASP等依赖双精度的计算任务, 使用专业卡,效果当然不错了。 这玩意不是跑MD,消费级的GPU是没啥用处的。 新卡当然很贵了, 不过可以试试万能的某宝某鱼呀。 反正都是拆机旧货,能用就行呗。 12) 52核8272CL的结果: $ grep -m 1 F= OSZICAR 1 T= 400. E= -.38354115E+04 F= -.38601818E+04 E0= -.38581908E+04 EK= 0.24770E+02 SP= 0.00E+00 SK= 0.00E+00 $ grep -m 1 LOOP+ OUTCAR LOOP+: cpu time 1149.2981: real time 1162.3467(共77个电子步) 13) $grep -m 1 F= OSZICAR 1 T= 400. E= -.38354159E+04 F= -.38601811E+04 E0= -.38581906E+04 EK= 0.24765E+02 SP= 0.00E+00 SK= 0.00E+00 $ grep -m 1 LOOP+ OUTCAR LOOP+: cpu time 445.6568: real time 442.0529 (同样77个电子步) GPU是用gam版跑的,对于std版16G显存不够,跑这个结构会报错,可以试试用3090的24G显存跑std。 目前openacc版本的vasp用了nccl,只能用一个cpu核心带一个GPU,因而cpu单核性能会对计算结果有影响。 INCAR文件里面加上LUSENCCL = .FALSE.可以一个GPU上跑多个线程,我之前用2080s测试并没有性能提升,可能是由于一个线程已经使2080s性能跑满了,再多没有意义,后来换了P100之后没有再这样测过。 跑同样的任务,2080S使用率在稳定在98%左右,p100最高91%,偶尔还会更低。 我也尝试用OpenACC+OpenMP方式编译vasp,测试时使用4个cpu带一个gpu,性能有一丁点的提升,但是没算完第一个离子步就报错了,目前还没找到原因。 13) 3090跑的: $ grep F= OSZICAR 1 T= 400. E= -.38354008E+04 F= -.38601829E+04 E0= -.38581932E+04 EK= 0.24782E+02 SP= 0.00E+00 SK= 0.00E+00 $ grep LOOP+ OUTCAR LOOP+: cpu time 2506.5651: real time 2511.0218 这个比较离谱 跑了132个电子步才收敛(改大了NELM)平均每电子步19秒 甚至比你的2080S略差一点 14) 单p100用vasp6.3.2的gam版的算这个算例要130电子步才算完1个离子步。然后稍微调低encut到350避免爆显存用std版计算只要68个离子步就算完了,平均每步18秒,结果和cpu版的相同,但是cpu版需要81步收敛,平均每步25秒,机器是2698v4,40核心。 15)
16)
17) 看你体系和精度了,ENCUT设置太大的话容易爆显存,不爆显存的前提下GPU速度非常快 18) |
说点什么...