安装WSL2子系统
首先打开Windows powershell,以管理员身份运行,输入
wsl --list --online
查看可用的Linux版本,我选的是Ubuntu
之后使用
wsl --install -d Ubuntu
安装
退出子系统后,输入wsl重新进入Ubuntu,相当于重启系统。
命令
wsl --list --verbose
可以查看已经安装的Linux版本以及wsl版本。
WSL修改位置
WSL默认安装在C盘,如果空间不够,可以迁移到其他分区。
在Windows PowerShell
中输入如下命令:
wsl -l --all -v
结果如下:
NAME STATE VERSION
* Ubuntu-20.04 Running 2
导出分发版为tar文件到E盘
wsl --export Ubuntu e:\wsl-ubuntu.tar
注销当前分发版
wsl --unregister Ubuntu
重新导入并安装WSL在e:\wsl-ubuntu
wsl --import Ubuntu e:\wsl-ubuntu e:\wsl-ubuntu.tar --version 2
设置默认登陆用户为安装时用户名
ubuntu config --default-user Username
删除tar文件(可选)
del e:\wsl-ubuntu.tar
结束
安装CUDA
windows下NVIDIA驱动安装,在此页面选择对应的显卡驱动安装。
https://developer.nvidia.com/cuda-downloads
程序检查系统兼容性完成后,点击同意并继续,选择自定义(高级),如下图
点击下一步
去除勾选下图中的三项后点击下一步
去除勾选的三项LAMMPS用不到。硬盘空间够大的同学,也可以勾选
接下来选择安装位置,如果你的电脑C盘有3G以上空闲空间,可使用默认选择(本教程使用默认安装位置,如果改变了安装位置,请记住),点击下一步
接下来程序将会自动安装,安装完成后关闭程序。
安装lammps的依赖包
sudo apt update sudo apt upgrade sudo apt install build-essential gcc g++ make git-core gfortran mpi-default-* libfftw3* libjpeg-dev libpng-dev
在wsl安装cuda
安装英伟达cuda toolkit,参考以下命令,注意要选wsl-ubuntu那个选项:
https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&Distribution=WSL-Ubuntu&target_version=2.0&target_type=deb_network
wget https://developer.download.nvidia.com/compute/cuda/repos/wsl-ubuntu/x86_64/cuda-keyring_1.0-1_all.deb sudo dpkg -i cuda-keyring_1.0-1_all.deb sudo apt-get update sudo apt-get -y install cuda
将cuda toolkit 的路径添加到环境变量
#打开profile文件,或者.bashrc文件都可以 sudo nano /etc/profile #在profile文件末尾添加以下两行,注意cuda版本,我的是11.8 export PATH=/usr/local/cuda-11.8/bin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/usr/local/cuda-11.8/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} #保存关闭文件之后采用以下命令使设置生效 source /etc/profile
之后发现使用nvcc -V命令和nvidia-smi 命令看到的显卡驱动版本都一致了,为11.6,
运行时可以使用nvidia-smi命令查看任务
编译lammps
进入lammps文件夹里的gpu文件夹,我的路径是,供参考:
cd ~/lammps/lib/gpu/
找到Makefile.linux
,修改CUDA_HOME = /usr/local/cuda-11.8
以及CUDA_ARCH = -arch=sm_75
,第一个是cuda的版本,第二个是显卡型号对应的计算能力,参考:
https://blog.csdn.net/qyb19970829/article/details/105463480
https://en.wikipedia.org/wiki/CUDA#GPUs_supported
在该目录下进行编译
make -f Makefile.linux
进入src文件夹,选择所需要的包并进行安装,gpu包最后安装
cd ~/lammps/src/ make yes-basic make yes-CLASS2 make yes-EXTRA-MOLECULE make yes-KSPACE make yes-MANYBODY make yes-MC make yes-MEAM make yes-MOLECULE make yes-QEQ make yes-REAXFF make yes-GPU #查看安装的包 make package-status
结果如下:
Installed NO: package ADIOS Installed NO: package ASPHERE Installed NO: package ATC Installed NO: package AWPMD Installed NO: package BOCS Installed NO: package BODY Installed NO: package BROWNIAN Installed NO: package CG-DNA Installed NO: package CG-SDK Installed YES: package CLASS2 Installed NO: package COLLOID Installed NO: package COLVARS Installed NO: package COMPRESS Installed NO: package CORESHELL Installed NO: package DIELECTRIC Installed NO: package DIFFRACTION Installed NO: package DIPOLE Installed NO: package DPD-BASIC Installed NO: package DPD-MESO Installed NO: package DPD-REACT Installed NO: package DPD-SMOOTH Installed NO: package DRUDE Installed NO: package EFF Installed NO: package EXTRA-COMPUTE Installed NO: package EXTRA-DUMP Installed NO: package EXTRA-FIX Installed YES: package EXTRA-MOLECULE Installed NO: package EXTRA-PAIR Installed NO: package FEP Installed YES: package GPU src/fix_nve_asphere_gpu.cpp does not exist src/pair_beck_gpu.cpp does not exist src/pair_born_coul_long_cs_gpu.cpp does not exist src/pair_born_coul_wolf_cs_gpu.cpp does not exist src/pair_born_coul_wolf_gpu.cpp does not exist src/pair_colloid_gpu.cpp does not exist src/pair_coul_long_cs_gpu.cpp does not exist src/pair_dpd_gpu.cpp does not exist src/pair_dpd_tstat_gpu.cpp does not exist src/pair_gauss_gpu.cpp does not exist src/pair_gayberne_gpu.cpp does not exist src/pair_lj96_cut_gpu.cpp does not exist src/pair_lj_cubic_gpu.cpp does not exist src/pair_lj_cut_coul_debye_gpu.cpp does not exist src/pair_lj_cut_coul_dsf_gpu.cpp does not exist src/pair_lj_cut_dipole_cut_gpu.cpp does not exist src/pair_lj_cut_dipole_long_gpu.cpp does not exist src/pair_lj_expand_coul_long_gpu.cpp does not exist src/pair_lj_gromacs_gpu.cpp does not exist src/pair_lj_sdk_coul_long_gpu.cpp does not exist src/pair_lj_sdk_gpu.cpp does not exist src/pair_lj_sf_dipole_sf_gpu.cpp does not exist src/pair_lj_smooth_gpu.cpp does not exist src/pair_mie_cut_gpu.cpp does not exist src/pair_resquared_gpu.cpp does not exist src/pair_ufm_gpu.cpp does not exist src/pair_yukawa_colloid_gpu.cpp does not exist src/fix_nve_asphere_gpu.h does not exist src/pair_beck_gpu.h does not exist src/pair_born_coul_long_cs_gpu.h does not exist src/pair_born_coul_wolf_cs_gpu.h does not exist src/pair_born_coul_wolf_gpu.h does not exist src/pair_colloid_gpu.h does not exist src/pair_coul_long_cs_gpu.h does not exist src/pair_dpd_gpu.h does not exist src/pair_dpd_tstat_gpu.h does not exist src/pair_gauss_gpu.h does not exist src/pair_gayberne_gpu.h does not exist src/pair_lj96_cut_gpu.h does not exist src/pair_lj_cubic_gpu.h does not exist src/pair_lj_cut_coul_debye_gpu.h does not exist src/pair_lj_cut_coul_dsf_gpu.h does not exist src/pair_lj_cut_dipole_cut_gpu.h does not exist src/pair_lj_cut_dipole_long_gpu.h does not exist src/pair_lj_expand_coul_long_gpu.h does not exist src/pair_lj_gromacs_gpu.h does not exist src/pair_lj_sdk_coul_long_gpu.h does not exist src/pair_lj_sdk_gpu.h does not exist src/pair_lj_sf_dipole_sf_gpu.h does not exist src/pair_lj_smooth_gpu.h does not exist src/pair_mie_cut_gpu.h does not exist src/pair_resquared_gpu.h does not exist src/pair_ufm_gpu.h does not exist src/pair_yukawa_colloid_gpu.h does not exist Installed NO: package GRANULAR Installed NO: package H5MD Installed NO: package INTEL Installed NO: package INTERLAYER Installed NO: package KIM Installed NO: package KOKKOS Installed YES: package KSPACE Installed NO: package LATBOLTZ Installed NO: package LATTE Installed NO: package MACHDYN Installed NO: package MANIFOLD Installed YES: package MANYBODY Installed YES: package MC Installed NO: package MDI Installed YES: package MEAM Installed NO: package MESONT Installed NO: package MESSAGE Installed NO: package MGPT Installed NO: package MISC Installed NO: package ML-HDNNP Installed NO: package ML-IAP Installed NO: package ML-PACE Installed NO: package ML-QUIP Installed NO: package ML-RANN Installed NO: package ML-SNAP Installed NO: package MOFFF Installed YES: package MOLECULE Installed NO: package MOLFILE Installed NO: package MPIIO Installed NO: package MSCG Installed NO: package NETCDF Installed NO: package OPENMP Installed NO: package OPT Installed NO: package ORIENT Installed NO: package PERI Installed NO: package PHONON Installed NO: package PLUGIN Installed NO: package PLUMED Installed NO: package POEMS Installed NO: package PTM Installed NO: package PYTHON Installed YES: package QEQ Installed NO: package QMMM Installed NO: package QTB Installed NO: package REACTION Installed YES: package REAXFF Installed NO: package REPLICA Installed NO: package RIGID Installed NO: package SCAFACOS Installed NO: package SHOCK Installed NO: package SMTBQ Installed NO: package SPH Installed NO: package SPIN Installed NO: package SRD Installed NO: package TALLY Installed NO: package UEF Installed NO: package VORONOI Installed NO: package VTK Installed NO: package YAFF
gpu下面有很多src/fix_nve_asphere_gpu.cpp does not exist,这个不用管,它是依赖于对应的包,比如fix_nve_asphere_gpu.cpp依赖于asphere包,因为没选,自然不存在。
编译lammps,这里采用16核编译。
make -j 16 mpi
当出现这一行就说明成功了:
将生成的lmp-mpi拷到usr/local/bin文件夹内,并添加此路径为环境变量。
sudo cp lmp_mpi /usr/local/bin sudo nano /etc/profile #在打开的profile里面添加如下一行 export PATH=/usr/local/bin:$PATH #关闭后采用以下命令使得设置立即生效 source /etc/profile #采用以下命令测试lmp-mpi的路径 which lmp_mpi #输出为 /usr/local/bin/lmp_mpi
11、安装完成,测试下,跑自带的shear例子。
lmp_mpi -sf gpu -pk gpu 1 -in input_01.lammps #或者使用cpu多线程 mpiexec -np 8 lmp_mpi -sf gpu -pk gpu 1 -in input_01.lammps