网站建设资讯

NEWS

网站建设资讯

Lammps分子动力学软件MPI并行教程是什么

Lammps分子动力学软件MPI并行教程是什么,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

创新互联专注骨干网络服务器租用十年,服务更有保障!服务器租用,成都多线机房 成都服务器租用,成都服务器托管,骨干网络带宽,享受低延迟,高速访问。灵活、实现低成本的共享或公网数据中心高速带宽的专属高性能服务器。

简介

LAMMPS是一种经典的分子动力学仿真代码,设计用于在并行计算机上高效运行。它是由美国能源部下属的桑迪亚国家实验室(Sandia National Laboratories)开发的。它是一个开源代码,根据GNU公共许可证(GPL)的条款自由分发。

Github官网:https://github.com/lammps/lammps/tree/stable

安装教程:

所需编译器套件:Intel Parallel Studio XE 2019

一、所需并行库:

  1. OpenMPI(Open Message Passing Interface,a open source High Performance Computing)

  2. OpenMP(Open Multi-processing)

二、编译前准备:

从github上下载源码(可能较慢,可用迅雷等工具加速):

进入lammps项目目录并新建一个build文件夹(参考教程):

cd lammps
mkdir build
cd build

三、进行Cmake前的准备:

    1. 目前已知Cmake的3.10版本在查找MPI安装目录和类库的时候会遇到问题,解决方案是使用3.9版本。

      ~/lammps_setup/cmake-3.9.0-Linux-x86_64/bin/

    2. 将MPI类库环境变量配置好(可以善用which mpi、whereis mpi等命令查找本机已经安装了的MPI在哪里):

      export MPI_ROOT=/public/software/mpich
      export PATH=$MPI_ROOT/bin:$PATH
      export MPI_DIR=/public/software/mpich

    3. 配置好INTEL编译器环境(可以善用which icc、whereis icc等命令查找本机已经安装了的INTEL在哪里):

      source /public/software/intel/composer_xe_2011_sp1.7.256/bin/iccvars.sh intel64
      source /public/software/intel/composer_xe_2011_sp1.7.256/bin/ifortvars.sh intel64

    4. 运行cmake并附带配置的选项,注意intel编译器路径选择和c编译器修改(不要使用gcc,使用icc):

      cmake -DBUILD_MPI=yes -DBUILD_OMP=yes -DMPI_C_COMPILER=/public/software/intel/composer_xe_2011_sp1.7.256/bin/intel64/icc -DMPI_CXX_COMPILER=/public/software/intel/composer_xe_2011_sp1.7.256/bin/intel64/icpc ../cmake

    5. 如果还有问题,直接在cmake中设置MPI路径:

      source /public/software/intel/composer_xe_2011_sp1.7.256/bin/iccvars.sh intel64
      source /public/software/intel/composer_xe_2011_sp1.7.256/bin/ifortvars.sh intel64
      cmake -DBUILD_MPI=yes -DBUILD_OMP=yes 
            -DMPI_C_COMPILER=/public/software/mpi/openmpi-16-intel/bin/mpicc 
            -DMPI_CXX_COMPILER=/public/software/mpi/openmpi-16-intel/bin/mpicxx 
            -DFFMPEG_EXECUTABLE=~/lammps_setup/ffmpeg-4.2-amd64-static/ffmpeg 
            -DWITH_FFMPEG=yes 
            -DCMAKE_CXX_COMPILER=/public/software/intel/composer_xe_2011_sp1.7.256/bin/intel64/icpc 
            -DCMAKE_C_COMPILER=/public/software/intel/composer_xe_2011_sp1.7.256/bin/intel64/icc
      ../cmake

       

    6. 添加附加包(标准附加包列表):假设我们需要添加MOLECULE包,则应该在cmake命令后添加如下参数

      -DPKG_MOLECULE

      我们可以看到,格式是   -DPKG_包名。下面提供内部包一键安装便捷代码:

      -DPKG_COMPRESS=yes -DPKG_PYTHON=yes -DPKG_ASPHERE=yes -DPKG_BODY=yes -DPKG_CLASS2=yes -DPKG_COLLOID=yes -DPKG_CORESHELL=yes -DPKG_DIPOLE=yes -DPKG_GRANULAR=yes -DPKG_KSPACE=yes -DPKG_MANYBODY=yes -DPKG_MC=yes -DPKG_MISC=yes -DPKG_MOLECULE=yes -DPKG_MPIIO=yes -DPKG_OPT=yes -DPKG_PERI=yes -DPKG_QEQ=yes -DPKG_REPLICA=yes -DPKG_RIGID=yes -DPKG_SHOCK=yes -DPKG_SNAP=yes -DPKG_SPIN=yes -DPKG_SRD=yes -DPKG_MESSAGE=yes -DPKG_POEMS=yes

      附加包需要高版本nvcc等依赖的单独列在下面:

      -DPKG_GPU=yes -DPKG_KOKKOS=yes

       

    疑难问题解决:

    1. 报错:mpirun: error while loading shared libraries: libimf.so: cannot open shared object file: No such file or directory。原因是使用了intel的编译器,却没把相应intel类库地址加入环境变量。其实intel有非常方便的source文件,它能自动添加这些类库,参见本文(三)-3《配置好INTEL编译器环境》(参考资料:https://zhidao.baidu.com/question/292886685.html)

    2. 报错-- Could NOT find MPI_C (missing: MPI_C_WORKS) -- Could NOT find MPI_CXX (missing: MPI_CXX_WORKS) -- Could NOT find MPI (missing: MPI_C_FOUND MPI_CXX_FOUND),但明明已经安装了MPI而且配置了MPI环境变量。原因是cmake自身问题,不要使用太新的cmake。这里使用3.9版本完美解决这个问题,详细资料参考https://gitlab.kitware.com/cmake/cmake/issues/18570。

    3. 使用了并行命令却没看到CPU核心占满:(相似问题包括:why physical processors only 1、processors 1 1 1、1 by 1 by 1)首先明确一点,只要编译时正确打开了-DBUILD_OMP -DBUILD_MPI,编译后的lmp可执行文件就一定是支持MPI、OpenMP并行功能的。剩下的就是执行命令与程序的问题。并行的执行命令不能含有重定位标识符<,如

      mpirun -N 24 ~/software/lmp -in npteq200ps-16.in

      才是正确的,必须-in来调用in文件。

    便捷命令:

    mpic++ -show

    看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。


    分享文章:Lammps分子动力学软件MPI并行教程是什么
    标题链接:http://cdweb.net/article/ihsdpp.html