计算化学公社

 找回密码 Forget password
 注册 Register
Views: 34948|回复 Reply: 22
打印 Print 上一主题 Last thread 下一主题 Next thread

[综合交流] 记一次Lammps上GPU加速的折腾

[复制链接 Copy URL]

431

帖子

8

威望

4280

eV
积分
4871

Level 6 (一方通行)

石墨

跳转到指定楼层 Go to specific reply
楼主
本帖最后由 Graphite 于 2025-9-28 21:47 编辑

楼主之前用MD不是很多,一直在用WSL甚至Powershell跑纯CPU的ORCA、Lammps等作业。
最近课题需要用到很多分子模拟的计算,遂决定让我的i5-9300H + GTX 1660Ti笔记本实现GPU加速。
看了一些文献和文章报道的加速效果,以我的一个7000原子的NVT电解质溶液盒子为例,原先WSL 4核约150timestep/s,64核超算节点约1800timestep/s。
大量计算围绕着L-J势和静电作用能,都是GPU占便宜的计算,估算实现加速后达到1200+timestep计算能力,考虑到便利性和成本,期望体验可以和32-64核节点相提并论。

然后就开始折腾。
1、Lammps for Win / 原生Windows驱动、CUDA:不可行,因为Lammps for Win是用跨平台编译器在Linux电脑上编译的,虽然加载了所有包,但gpu包所用的参数是默认的sm_35,对应Kepler架构的一些显卡。网上看到确实有人用Kepler显卡(GTX 770)成功。
2、Lammps for Linux / WSL2 / Win10体验版 / CUDA for WSL2 : 不可行,网上有人成功了,但是我更新了一整天,无论是自动更新还是升级工具,都没能把我的1803版Win10升到2004版,更别提什么WSL2新功能了。而且看新闻说WSL2也有很多坑,故作罢。
3、Lammps for Linux / Deepin第二系统 /  Linux显卡驱动、CUDA:除了Deepin20刚开始要修补各种驱动(网卡、鼠标、蓝牙、显卡),气得我砸键盘以外,其他都正常。注意装最新N卡驱动时莫让他覆盖原有xorg.conf。

结论:新东西虽好,但总是坑多(指WSL2和Deepin20)。

最后是效果对比,数据来自我的电解质溶液盒子,体系特殊,仅供参考。单位timesteps/s,均匀体系+fix balance,多线程负载均衡。

i5-9300H/WSL/mpi -np 4:150
i5-9300H/WSL/mpi -np 8:230
E5v3/Linux/mpi -np 64:1800

i5-9300H/Linux/mpi -np 4 : 250
i5-9300H/Linux/mpi -np 8:275

i5-9300H+GTX 1660Ti/Linux/mpi -np 1 + GPU:1600
i5-9300H+GTX 1660Ti/Linux/mpi -np 2 + GPU:1480
i5-9300H+GTX 1660Ti/Linux/mpi -np 4 + GPU:1290
i5-9300H+GTX 1660Ti/Linux/mpi -np 8 + GPU:700

难道让我说单核天下第一?

五年后更新:

1、WSL2已经非常好用。笔记本没必要刷Linux桌面了。
2、已经解决,必须先正确安装对应版本的openmpi和编译lammps,在pair_style、bond_style等和整体计算负载合适的情况下,是可以做到多核+多卡发挥效能的。
自在飞花轻似梦,无边丝雨细如愁。

全自动反应动力学(ReaxFF、AIMD、NEP等)后处理工具网页版:http://cc-portal.xyz/reax_tools

221

帖子

5

威望

2534

eV
积分
2855

Level 5 (御坂)

2#
发表于 Post on 2020-7-31 17:33:16 | 只看该作者 Only view this author
可否提供一下输入文件,我想测试一下WSL2。谢谢

431

帖子

8

威望

4280

eV
积分
4871

Level 6 (一方通行)

石墨

3#
 楼主 Author| 发表于 Post on 2020-7-31 17:39:38 | 只看该作者 Only view this author
liuyuje714 发表于 2020-7-31 17:33
可否提供一下输入文件,我想测试一下WSL2。谢谢

附件

hcap_npt_o.data

1.32 MB, 下载次数 Times of downloads: 150

in.lmp

2.39 KB, 下载次数 Times of downloads: 146

自在飞花轻似梦,无边丝雨细如愁。

全自动反应动力学(ReaxFF、AIMD、NEP等)后处理工具网页版:http://cc-portal.xyz/reax_tools

1169

帖子

7

威望

6828

eV
积分
8137

Level 6 (一方通行)

4#
发表于 Post on 2020-7-31 21:52:30 | 只看该作者 Only view this author
核数越多越慢是非常正常的现象,现在MD引擎中绝大部分计算都是GPU完成,用多个CPU核心大多数时候的作用就是增加通讯消耗

3

帖子

0

威望

67

eV
积分
70

Level 2 能力者

5#
发表于 Post on 2020-10-11 10:00:56 | 只看该作者 Only view this author
我跟楼主结论一样

1

帖子

0

威望

17

eV
积分
18

Level 1 能力者

6#
发表于 Post on 2020-10-27 15:59:02 | 只看该作者 Only view this author
想请问楼主 这个执行命令是怎么输入的? mpirun -np 4 lmp_mpi.exe  < in.file吗?还是怎样?

119

帖子

2

威望

2183

eV
积分
2342

Level 5 (御坂)

7#
发表于 Post on 2020-10-27 17:11:50 | 只看该作者 Only view this author
本帖最后由 啦啦黑还黑 于 2020-10-27 17:15 编辑

直接mpirun -np  4 好像不太行,你看一下是不是这样GPU也并行了,cpu和gpu上都会分4个任务并行,速度会减慢。
要设置1个gpu任务调用多个CPU线程吧?
mpirun -np 4 lmp_machine -sf gpu -pk gpu 1 -in in.script

431

帖子

8

威望

4280

eV
积分
4871

Level 6 (一方通行)

石墨

8#
 楼主 Author| 发表于 Post on 2020-10-27 19:21:51 | 只看该作者 Only view this author
啦啦黑还黑 发表于 2020-10-27 17:11
直接mpirun -np  4 好像不太行,你看一下是不是这样GPU也并行了,cpu和gpu上都会分4个任务并行,速度会减慢 ...

就是这个指令,我正文没说清楚,不好意思。
使用4核时,NVIDIA工具显示GPU上也是4个任务。但速度就是不如单核快
lammps算完后显示的时间报告中,正常应是pair类型计算最耗时,但4核时,显示comm损耗很大。
自在飞花轻似梦,无边丝雨细如愁。

全自动反应动力学(ReaxFF、AIMD、NEP等)后处理工具网页版:http://cc-portal.xyz/reax_tools

74

帖子

0

威望

247

eV
积分
321

Level 3 能力者

9#
发表于 Post on 2020-11-9 21:27:18 | 只看该作者 Only view this author
请问一下,我能用mpiexec -localonly 12 lmp_mpi -in in.meamc.lmp -sf gpu -pk gpu 1这个命令是不是就代表我的GPU安装成了。可是我看网上教程https://blog.csdn.net/qq_42110789/article/details/106337848 在输出中有显示你的GPU型号,请问这是咋回事呀?

3

帖子

0

威望

143

eV
积分
146

Level 2 能力者

10#
发表于 Post on 2021-4-25 15:23:04 | 只看该作者 Only view this author
本帖最后由 大懒猫王浩 于 2021-4-25 15:25 编辑

发表一下我的测试结果,CPU核为6132   显卡为GPU V100
首先是lammps自带的melt例子,4000原子,lj/cut/gpu
==> debug_10mpi_1GPU.txt <==
Total wall time: 0:18:06
==> debug_10mpi_2GPU.txt <==
Total wall time: 0:09:10
==> debug_10mpi_noGPU.txt <==
Total wall time: 0:04:17
==> debug_1mpi_1GPU.txt <==
Total wall time: 0:01:59
==> debug_2mpi_1GPU.txt <==
Total wall time: 0:05:08
==> debug_2mpi_2GPU.txt <==
Total wall time: 0:02:06
==> debug_3mpi_1GPU.txt <==
Total wall time: 0:06:36
==> debug_4mpi_2GPU.txt <==
Total wall time: 0:04:48
单核单GPU反而是最快的,

后面有群友希望测试更大体系。。就换了eam,构建了10万多个原子的Cu体系。测试结果如下。
==> gpu2l_10mpi_1GPU/slurm-9003096.out <==
Total wall time: 0:04:55
==> gpu2l_10mpi_2GPU/slurm-9003097.out <==
Total wall time: 0:02:41
==> gpu2l_1mpi_1GPU/slurm-9003098.out <==
Total wall time: 0:05:22
==> gpu2l_20mpi_0GPU/slurm-9003074.out <==
Total wall time: 0:09:18
==> gpu2l_20mpi_1GPU/slurm-9003099.out <==
Total wall time: 0:08:08
==> gpu2l_20mpi_2GPU/slurm-9003100.out <==
Total wall time: 0:04:22
==> gpu2l_2mpi_1GPU/slurm-9003101.out <==
Total wall time: 0:03:54
==> gpu2l_2mpi_2GPU/slurm-9003102.out <==
Total wall time: 0:02:35
==> gpu2l_3mpi_1GPU/slurm-9003129.out <==
Total wall time: 0:03:42
==> gpu2l_4mpi_1GPU/slurm-9003128.out <==
Total wall time: 0:03:36
==> gpu2l_4mpi_2GPU/slurm-9003103.out <==
Total wall time: 0:02:19
==> gpu2l_5mpi_1GPU/slurm-9003126.out <==
Total wall time: 0:04:16
感觉也就几倍的加速,,,并没有让我十分惊艳的样子,适合跑核少GPU加速的任务。。。

3

帖子

0

威望

25

eV
积分
28

Level 2 能力者

11#
发表于 Post on 2021-6-8 11:21:14 | 只看该作者 Only view this author
请问我使用GPU加速会报错
ERROR: Could not find/initialize a specified accelerator device (src/GPU/gpu_extra.h:35)
Last command: package gpu 1
网上也没找到解决方案

431

帖子

8

威望

4280

eV
积分
4871

Level 6 (一方通行)

石墨

12#
 楼主 Author| 发表于 Post on 2021-6-21 09:39:31 | 只看该作者 Only view this author
Ruanruan 发表于 2021-6-8 11:21
请问我使用GPU加速会报错
ERROR: Could not find/initialize a specified accelerator device (src/GPU/gp ...

找不到GPU的话,一般是nvidia驱动或者cuda问题。这个问题曾经困扰过我很久,我有一台机器按照标准的方式安装后,每次开机需要先以root运行cuda的deviceQuery工具,无论是做MD还是运行别的cuda加速程序都是如此,原理不明。
自在飞花轻似梦,无边丝雨细如愁。

全自动反应动力学(ReaxFF、AIMD、NEP等)后处理工具网页版:http://cc-portal.xyz/reax_tools

1

帖子

0

威望

7

eV
积分
8

Level 1 能力者

13#
发表于 Post on 2021-10-8 20:44:33 | 只看该作者 Only view this author
请问一下,运行多体势的in文件时候数显错误ERROR: Must not use GPU neighbor lists with hybrid pair style. 这是什么原因?

13

帖子

0

威望

262

eV
积分
275

Level 3 能力者

14#
发表于 Post on 2021-11-22 20:03:00 | 只看该作者 Only view this author
请问一下,运行时出现这种报错是怎么回事呢
ERROR: Unable to initialize accelerator for use (../gpu_extra.h:45)
Last command: package gpu 1
Cuda driver error 4 in call at file 'geryon/nvd_device.h' in line 135.

85

帖子

0

威望

3836

eV
积分
3921

Level 5 (御坂)

15#
发表于 Post on 2022-1-8 00:19:48 | 只看该作者 Only view this author
啦啦黑还黑 发表于 2020-10-27 17:11
直接mpirun -np  4 好像不太行,你看一下是不是这样GPU也并行了,cpu和gpu上都会分4个任务并行,速度会减慢 ...

刘老师,您说的用这个指令,lammps程序是否能实现对应的效果呢?在Gromacs可以实现调用多个CPU+一个GPU任务,但是我看网上使用GPU加速lammps,所用指令都是您说的这个,但是都出现使用几个线程,GPU就会出现几个GPU任务

本版积分规则 Credits rule

手机版 Mobile version|北京科音自然科学研究中心 Beijing Kein Research Center for Natural Sciences|京公网安备 11010502035419号|计算化学公社 — 北京科音旗下高水平计算化学交流论坛 ( 京ICP备14038949号-1 )|网站地图

GMT+8, 2026-1-24 06:35 , Processed in 0.239190 second(s), 28 queries , Gzip On.

快速回复 返回顶部 返回列表 Return to list