# LAMMPS整理 ###### tags:`lammps` ## 簡介 LAMMPS為大型分子動力學模擬軟體,由經驗公式(力場/勢能)加上一些系統資訊([系綜](https://zh.wikipedia.org/wiki/%E7%B3%BB%E7%BB%BC)、邊界條件)、結構藉由牛頓運動方程去計算原子位置、速度及加速度(因計算量比第一原理少,所以可計算較大尺度的分子模擬) * 分子動力學模擬基本流程    ->分子模擬有分為兩種 * 蒙特卡羅模擬 Monte Carlo->藉由整體勢能方程對box裡的原子作隨機移動,在判斷是否能接受,以機率的方式模擬,與波茲曼分配有關,只能模擬平衡態體系 [蒙地卡羅方法-維基](https://zh.wikipedia.org/wiki/%E8%92%99%E5%9C%B0%E5%8D%A1%E7%BE%85%E6%96%B9%E6%B3%95) * 分子動力學模擬 -> 基於牛頓運動方程式計算原子間的力,產生加速度並位移,然後再計算力,重複此步驟 ## lammps流程 三大input檔: * in.(主要input檔) * .data(複雜模型構型->包括原子位置、速度等初始條件) * POT file/force field file(除lammps本身之外的勢能檔案->可自行編寫) ### main input file script * initialization=初始系統模擬設置 * system definition=初始模型建構/讀取模型檔案 * 初始模型建構->建立cell,再建立內部原子資訊模型建構 * 讀取模型檔案->會有模型的topo檔(pdb檔) * simulation settings * 定義原子間相互作用或設置力場 * 特定計算設定 * 輸出設定 * run the simulation=模擬環境設置並運行 #### initialization 根據官網有下列參數設置 units、dimension、newton、processors、boundary、atom_style、atom_modify ##### units `units style` style = lj / real / metal / si / cgs / electron / micro / nano ***->主要為單位制定,預設為lj*** ##### pair_style 力場/勢函數 [LAMMPS中data文件、pair_style文件和pair_coeff文件 ](http://blog.sciencenet.cn/home.php?mod=space&uid=3437453&do=blog&id=1263434) [Force Field選擇 ](http://chiustin.blogspot.com/2018/12/force-field.html) ## lammps dockerfile=下載方法 ### CPU 正確版本 需要mpi fftw openssh cmake ```shell= #centos7baseimage FROM centos:7 #download necessary document RUN yum -y update && yum -y install wget vim fftw mpich GNUmake make which locate&& yum groupinstall -y 'Development Tools' && yum clean all #openssl ENV PATH=$PATH:/usr/lib64/mpich/bin RUN mkdir /usr/local/openssl && \ cd /usr/local/openssl && \ wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz && \ tar xvf openssl-1.1.1i.tar.gz && \ cd /usr/local/openssl/openssl-1.1.1i && \ ./config --prefix=/usr/local/openssl && \ make -j16 && \ make install && \ rm -rf /usr/bin/openssl && \ ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl && \ ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1 && \ ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1 && \ yum install -y openssl-devel && \ #cmake mkdir /usr/local/cmake && \ cd /usr/local/cmake/ && \ wget https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2.tar.gz && \ tar xvf cmake-3.20.0-rc2.tar.gz && \ cd cmake-3.20.0-rc2/ && \ ./bootstrap --prefix=/usr/local/cmake && \ gmake -j16 && \ gmake install && \ ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake && \ ln -s /usr/local/cmake/bin/cpack /usr/bin/cpack && \ ln -s /usr/local/cmake/bin/ctest /usr/bin/ctest && \ cmake --version && \ #lammps cd /opt &&\ git clone -b stable https://github.com/lammps/lammps.git lammps && \ cd /opt/lammps && \ mkdir /opt/lammps/build && \ cd /opt/lammps/build && \ cmake /opt/lammps/cmake && \ cmake --build . && \ ENV PATH=$PATH:/opt/lammps/build CMD ["/bin/bash"] ``` singularity def(mpich、openssl、cmake、lammps) ```shell= Bootstrap: docker From: centos:7 %post yum -y update && yum -y install wget git vim fftw mpich GNUmake make which locate gcc gcc-c++ && yum clean all #openssl PATH=$PATH:/usr/lib64/mpich/bin mkdir /usr/local/openssl cd /usr/local/openssl wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz tar xvf openssl-1.1.1i.tar.gz cd /usr/local/openssl/openssl-1.1.1i ./config --prefix=/usr/local/openssl make -j16 make install rm -rf /usr/bin/openssl ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1 yum install -y openssl-devel #cmake mkdir /usr/local/cmake cd /usr/local/cmake/ wget https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2.tar.gz tar xvf cmake-3.20.0-rc2.tar.gz cd cmake-3.20.0-rc2/ ./bootstrap --prefix=/usr/local/cmake gmake -j16 gmake install ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake ln -s /usr/local/cmake/bin/cpack /usr/bin/cpack ln -s /usr/local/cmake/bin/ctest /usr/bin/ctest cmake --version #lammps cd /opt git clone -b stable https://github.com/lammps/lammps.git lammps cd /opt/lammps mkdir /opt/lammps/build cd /opt/lammps/build cmake /opt/lammps/cmake cmake --build . %environment export PATH=$PATH:/opt/lammps/build export PATH=$PATH:/usr/lib64/mpich/bin %runscript exec /bin/bash /bin/bash "$@" %startscript exec /bin/bash /bin/bash "$@" ``` singularity def(openmpi3.1.4) ``` Bootstrap: docker From: centos:7 %post yum -y update && yum -y install wget git vim fftw mpich GNUmake make which locate gcc gcc-c++ && yum clean all cd / wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.4.tar.gz tar xvf openmpi-3.1.4.tar.gz cd /openmpi-3.1.4 ./configure --prefix=/openmpi make make install PATH=$PATH:/openmpi/bin LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/openmpi/lib mkdir /usr/local/openssl cd /usr/local/openssl wget https://www.openssl.org/source/openssl-1.1.1i.tar.gz tar xvf openssl-1.1.1i.tar.gz cd /usr/local/openssl/openssl-1.1.1i ./config --prefix=/usr/local/openssl make -j16 make install rm -rf /usr/bin/openssl ln -s /usr/local/openssl/bin/openssl /usr/bin/openssl ln -s /usr/local/openssl/lib/libssl.so.1.1 /usr/lib64/libssl.so.1.1 ln -s /usr/local/openssl/lib/libcrypto.so.1.1 /usr/lib64/libcrypto.so.1.1 yum install -y openssl-devel #cmake mkdir /usr/local/cmake cd /usr/local/cmake/ wget https://github.com/Kitware/CMake/releases/download/v3.20.0-rc2/cmake-3.20.0-rc2.tar.gz tar xvf cmake-3.20.0-rc2.tar.gz cd cmake-3.20.0-rc2/ ./bootstrap --prefix=/usr/local/cmake gmake -j16 gmake install ln -s /usr/local/cmake/bin/cmake /usr/bin/cmake ln -s /usr/local/cmake/bin/cpack /usr/bin/cpack ln -s /usr/local/cmake/bin/ctest /usr/bin/ctest cmake --version #lammps cd /opt git clone -b stable https://github.com/lammps/lammps.git lammps cd /opt/lammps mkdir /opt/lammps/build cd /opt/lammps/build cmake /opt/lammps/cmake cmake --build . %environment export PATH=$PATH:/opt/lammps/build export PATH=$PATH:/openmpi/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/openmpi/lib %runscript exec /bin/bash /bin/bash "$@" %startscript exec /bin/bash /bin/bash "$@" ``` ### GPU編譯 [Install of GPU package for LAMMPS](https://zhuanlan.zhihu.com/p/32648883) [LAMMPS | NVIDIA NGC](https://ngc.nvidia.com/catalog/containers/hpc:lammps) [GPU package](https://lammps.sandia.gov/doc/Speed_gpu.html) [Centos 安裝GPU并行lammps](https://zh-hant.hotbak.net/key/gpulammpscentos%E5%AE%89%E8%A3%9D%E5%B9%B6%E8%A1%8Cl.html) [Centos 安装GPU并行lammps](https://blog.csdn.net/weixin_43205202/article/details/88261607) [Centos install GPU parallel lammps](https://programmersought.com/article/3305913470/) [CMake build](https://lammps.sandia.gov/doc/Build_extras.html#cmake-build) 下載 需先下載cuda、 cmake nvcc是cuda的編譯器 [cuda](https://developer.nvidia.com/cuda-downloads?target_os=Linux&target_arch=x86_64&=CentOS&target_version=7&target_type=rpm_network) ```shell= sudo yum-config-manager --add-repo https://developer.download.nvidia.com/compute/cuda/repos/rhel7/x86_64/cuda-rhel7.repo sudo yum clean all sudo yum -y install nvidia-driver-latest-dkms cuda sudo yum -y install cuda-drivers ``` 主要參考 https://lammps.sandia.gov/doc/Build_package.html :::info 流程 裝CUDA(會幫你裝GPU driver)然後CMAKE ::: [Lammps的CUDA加速](https://zhuanlan.zhihu.com/p/56353024) 下載的時候大量出現以下訊息(cuda11) cmake指令為 ``` cmake -C ../cmake/presets/most.cmake -C ../cmake/presets/nolib.cmake -D PKG_GPU=on -D GPU_API=cuda -D GPU_ARCH=sm_61 ../cmake cmake --build . ```  參考[[Feature Request] Modernize CUDA support in GPU package](https://github.com/lammps/lammps/issues/2355) 推測可能為cuda版本關係 完成後測試 ``` mpirun -np 8 lmp -sf gpu -pk gpu 1 -in in.crack ``` 出現錯誤   重複出現 主要是 `WARNING: Temperature for thermo pressure is not for group all (src/thermo.cpp:472)` ->看起來是input的關係(待查明) `ERROR: Cannot use neigh_modify exclude with GPU neighbor builds (src/GPU/fix_gpu.cpp:254)` ->lammps官方給出的原因是 ``` Cannot use neigh_modify exclude with GPU neighbor builds This is a current limitation of the GPU implementation in LAMMPS. ``` [[lammps-users] Cannot use neigh_modify exclude with GPU neighbor builds](https://lammps.sandia.gov/threads/msg70729.html) 在simulation box define(`region`) 前加一個指令 ``` package gpu 2 neigh no ``` [lammps可能error一覽](https://www.afs.enea.it/software/lammps/doc17/html/Section_errors.html)
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.