1.安装Lammps
下载安装lammps
https://rpm.lammps.org/windows/64bit/LAMMPS-64bit-latest-MPI.exe
2.安装mpich2
首先参考了以下三个博客:
https://blog.csdn.net/muyangzixue/article/details/112758801
https://blog.csdn.net/weixin_43937568/article/details/84927570
https://blog.csdn.net/linkus_/article/details/92649702
2.1 下载mpich2-1.4.1p1-win-x86-64.msi
链接https://www.mpich.org/static/downloads/1.4.1p1/
首先,确保你是管理员身份登录的电脑,并且该用户登录时设置了密码。检查管理员身份的方法是:右键“我的电脑”—选择“管理”—弹出对话框“计算机管理”—选择本地用户和组—双击“用户”,可以设置密码和管理权限(具体操作百度上有)
2.2以管理员身份安装
这一步是第一个坑。大多数帖子都提到了一定要以管理员身份安装,且win10中无法直接通过右键选择以管理员身份安装.msi文件。
最简单的方法是在左下角win图标上右键,点击命令提示符(管理员),进入msi文件目录(百度win进入特定路径的命令,必备技能),然后输入命令msiexec /package 文件名,我的输入:
msiexec /package mpich2-1.4.1p1-win-x86-64.msi
部分电脑可能需要安装 NET Framework 3.5
2.3 进入安装过程
(第二个坑)在process manager setup页面输入电脑登录密码,点击next。一定要输入电脑登陆密码不要用behappy这个默认短语,这一点很少有人提,但我就是改了这一点后终于成功了;
过程中会弹出安装对话框,接下来的步骤需要选择for everyone选项,不是just for me,设置想要安装的文件夹即可;
2.4 此时需要添加/检查lammps安装目录下的bin文件所在路径和mpich2安装目录下bin文件所在路径到电脑的环境变量中:
具体操作:右键“我的电脑”—选择“属性”——选择“高级系统设置”——“环境变量”——将两个bin文件均复制到系统变量和环境变量的path目录下,如果已经存在,不需要复制,不存在的要新建并添加路径;
2.5 设置完路径以后,到mpich安装目录的bin文件下,以管理员身份运行cmd,分别输入以下命令:
a)smpd -install ,等待smpd安装完成
b)mpiexec -remove ,等待mpich中的注册信息删除,若失败,表明先前没有注册信息,可直接进行下一步;
c)mpiexec -register ,重新注册mpich的使用用户;在执行此命令时,需要你输入用户名,该用户名就是此时cmd命令行前显示的用户名,复制以后粘贴在该命令行回车即可;然后再输入密码。我的如下(用户名就是中括号中的内容DESKTOP-E02E8P9\18204),一定要用后一个名称即这里的18204,即使是中文亦可。
d)mpiexec -validate ,此时应显示(it should return SUCCESS) ,意味着安装成功
e)smpd -status此时会显示 (it should return ‘smpd running on ‘),意味着smpd在运行。
至此,lammps和mpich均已安装成功。
有时可能需要重启电脑才能使用mpich
2.6 运行并行版lammps
通过cmd命令行进入lammps的安装目录,进入examples目录下,进入meam文件夹,执行命令:
mpiexec -np 8 lmp – in in.meam
数字8表示调用的核数,可以根据电脑配置和需求修改
3.安装CUDA
首先需要安装CUDA,下载网址在此
CUDA Toolkit 10.2 Download
程序检查系统兼容性完成后,点击同意并继续,选择自定义(高级),如下图
![](https://kryii.com/wp-content/uploads/2022/10/v2-278e497799facf8a2731763076044505_720w.webp)
点击下一步
去除勾选下图中的三项后点击下一步
![](https://kryii.com/wp-content/uploads/2022/10/v2-fa693d88f4000ed97238c6d3c75ce676_720w.webp)
去除勾选的三项LAMMPS用不到。硬盘空间够大的同学,也可以勾选
接下来选择安装位置,如果你的电脑C盘有3G以上空闲空间,可使用默认选择(本教程使用默认安装位置,如果改变了安装位置,请记住),点击下一步
接下来程序将会自动安装,安装完成后关闭程序。
3.1修改OpenCL注册表
CUDA安装程序由于不明原因未在注册表中加入信息,所以需要手动修改
!!!注意:非本教程外的注册表内容千万不要修改!!!
首先,打开如下图所示文件夹(C:\Windows\System32\DriverStore\FileRepository),并按修改日期进行排序,挨个打开nvXXX字样文件夹查找有没有nvopencl64.dll文件。
如果有,请记住文件地址,如:
C:\Windows\System32\DriverStore\FileRepository\nvltui.inf_amd64_b91ae94e453c7d06\nvopencl64.dll
!!!加粗字段每个电脑不一样,复制自己电脑的!!!
右键点击屏幕左下角Windows图标打开“运行”(win+r也可以打开),输入regedit,回车
在注册表编辑器中找到此位置HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors
(没有OpenCL\Vendors的右键Khronos-新建-项自行建立)
此时界面如下图所示
![](https://kryii.com/wp-content/uploads/2022/10/20221023123626.png)
在右边大窗口空白处右键->新建->DWORD(32位)值,将前边nvopencl64.dll的地址粘贴进去如上图所示(修改此位置的地址请右键->重命名)
按照chiphell论坛用户cannibal2008的说法,英伟达驱动每个版本文件夹名都会改变,所以请在更新显卡驱动后修改此位置的名称。在此感谢cannibal2008提供的修改思路。
找到Win10下Intel/AMD/NVIDIA三家OPENCL共存修复方法了 – 电脑讨论 – Chiphell – 分享与交流用户体验
最后进入HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\OpenCL\Vendors重复上边的操作,但与上一步有一处不同,这一步是把nvopencl32.dll地址复制进去(上一步地址64改为32即可)
![](https://kryii.com/wp-content/uploads/2022/10/20221023124015.png)
3.2 测试是否成功
进入你的L AMMPS安装位置(串行/并行皆可),进入bin文件夹,按住shift点击右键,选择在此处打开Powershell窗口(win7/win8可能是cmd窗口)
在bin文件夹中运行ocl_get_devices.exe
Powershell打开后,输入cmd回车,再输入ocl_get_devices.exe回车(此处具体看你bin文件夹中该文件的名字,有的可能是ocl_get_devices,则输入ocl_get_devices后回车)
如果显示信息类似下图字样,则证明CUDA安装成功;如果是Found 0 platform(s),则未成功,请仔细重复上边的两个操作。
![](https://kryii.com/wp-content/uploads/2022/10/20221023124214.png)
找到平台
3.3 运行LAMMPS程序进行测试
本例使用LAMMPS安装目录下Benchmarks中的in.eam进行测试
并行代码
mpiexec -np 8 lmp -in in.eam -sf gpu -pk gpu 1
串行代码
lmp -in in.eam -sf gpu -pk gpu 1
运行结束后,如果出现如上图中Device Time Info (average):则证明调用显卡成功
#有intel核心显卡的电脑(例如大部分笔记本电脑)未进行测试,可能会有问题。#
Intel核心显卡与Nvidia显卡并存的笔记本已经测试完成,需要在本贴的基础上进行一些操作,详见
Windows环境下LAMMPS使用GPU加速运算(二、笔记本篇)
在Windows环境下显卡运算只能以SINGLE_DOUBLE模式进行运算,无法修改,其运算方式如下
It allows for GPU computations to be performed in single or double precision, or in mixed-mode precision, where pairwise forces are computed in single precision, but accumulated into double-precision force vectors.
不同模式的区别如下,如想要更改模式请使用Linux
# -D_SINGLE_SINGLE # Single precision for all calculations
# -D_DOUBLE_DOUBLE # Double precision for all calculations
# -D_SINGLE_DOUBLE # Accumulation of forces, etc. in double
更多关于GPU加速的信息详见LAMMPS手册
https://lammps.sandia.gov/doc/Speed_gpu.html
lammps.sandia.gov/doc/Speed_gpu.html
1.修改OpenCL注册表
与单独显电脑不同的是,笔记本有两个显卡,在执行ocl_get_devices.exe时会出现两个平台,一般第一个是核心显卡,第二个才是独立显卡。而LAMMPS无法调用核心显卡运算,会提示Unable to initialize accelerator for use
因为LAMMPS默认会选择第一个平台,即Platform 0,所以按照这个思路两个平台互换一下位置即可
那么开始操作吧!
打开注册表,找到此位置HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors
![](https://kryii.com/wp-content/uploads/2022/10/20221023124850.png)
重命名IntelOpenCL64.dll,例如改成IntelOpenCL64.dll1,千万不要删掉,后边还要改回来
再找到HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Khronos\OpenCL\Vendors
重命名IntelOpenCL32.dll,也是上边的操作
此时运行ocl_get_devices.exe,会显示只有一个平台,而且是你的独立显卡
![](https://kryii.com/wp-content/uploads/2022/10/v2-fe4ab68bc7d1ab2aab1e2f2d0047e3ed_r.jpg)
只有一个平台且为你的独立显卡
还记得前边重命名的IntelOpenCL64.dll和IntelOpenCL32.dll吗?现在把他们改回来原来的名字,再运行一次ocl_get_devices.exe,两个平台位置就调换过来啦!
![](https://kryii.com/wp-content/uploads/2022/10/v2-dea81f7cf6268d600d93a358697782b4_r.jpg)
两个平台位置调换成功
这时候再运行LAMMPS就可以完美使用GPU进行运算啦
完美运行