没想到桃子有一天会受困于计算效率……一直以为这是那些学化学、学量子计算的人才需要关心的事情,没想到我这么小小几千原子的体系居然也跑不动了╮(﹀_﹀)╭
三种配置的模拟速度
2000+ 个原子的模拟体系,时间步长 0.5 fs,以下是模拟 100 步的结果。
桃子的小机器
配置
单核计算
Preformance 一行显示的是最直观的速度,如下图,一天能模拟物理时间 0.127 ns,每秒钟模拟的 2.939 步。
MPI 表格里 Comm 一行显示的是多核并行计算核间通讯时间。
2核计算
加速比V8/V1 = 1.68,加速效率V8/(pV1) = 83.75%
4核计算
通讯时间占比 26.43%,这才 4 核,略有点高。
加速比V8/V1 = 1.69,加速效率V8/(pV1) = 42.26%
实验室的小机器(hpc5)
配置
单核计算
8核计算
加速比V8/V1 = 2.87,加速效率V8/(pV1) = 35.83%
24核计算
加速比V24/V1 = 4.20,加速效率V24/(pV1) = 17.5%
中国科技云·超算云(BSCC-A系统)
配置
AMD EPYC 7452 32-Core Processor,64核,256G内存,节点间采用 ib 网互连。(从AMD官网上找到这款处理器的基准时钟频率是2.35GHz)
单核计算
32核计算
加速比V32/V1 = 5.40,加速效率V32/(pV1) = 16.87%
64核计算
通讯时间占比 17.85%,64核,还是可以的。
加速比V64/V1 = 7.85,加速效率V64/(pV1) = 12.27%
网络上关于“Reaxff模拟速度讨论”
来源网址:http://bbs.keinsci.com/thread-19592-1-1.html
- 单精度fftw库的18Sep20版本LAMMPS,用Reaxff跑10万原子体系。机器是40核128G内存,RTX2080一块(Reaxff用GPU需要Kokkos包,这里只是纯CPU跑)。时间步长0.25 fs,40 MPI*1 Openmp,平均每小时才跑3700步左右。跑Reaxff的HNS例子,才0.193 ns/day(例子中4核的benchmark是0.04 ns/day,也够慢的)。Reaxff跑每一步都要用Qeq方法计算电荷,比一般分子力场慢不少,但也不至于如此慢。。。
- 另外GPU版LAMMPS在pcff力场下跑17000原子,速度是8.1 ns/day。
- 两颗8173M+192G内存,10370个原子的反应动力学,0.1fs每步,没有使用Kokkos加速包,只有CPU,共跑200ps。最后是0.072ns/day,333.705hours/ns,8.324 timestep/s
来源网址:https://github.com/Roy-Kid/lammpscn/issues/13
虽然ReaxFF从一定意义上来说属于经验力场,但是计算成本还是相当高,比如我一个4500个原子的model,使用武汉大学超算16核,计算速度大概时0.137ns/day。然后还不支持lammps_GPU加速,只支持KOKKOS和OMP加速。这个KOKKOS我尝试了一下,1066的显卡的计算速度大概等于8核的CPU,但是还是比不过16核的CPU,如果显卡的计算能力更强的话可能计算速度还可以更快。
总结
- ReaxFF 并行计算是比较慢
- lammps 中 ReaxFF 想要加速只能通过 KOKKOS 和 OMP
解决方案
- 没有化学反应参与,没有键的断开与生成,暂时可以改用别的势函数
- 学习一下怎么对反应力场的计算进行加速,毕竟总用得到的,比如高速粒子怎么把壁面打穿之类的
未完待续……