【LAMMPS学习】三、构建LAMMPS(6)在构建中包含软件包

3. 构建 LAMMPS 

3.6.在构建中包含软件包 

在 LAMMPS 中,包是一组启用一组特定功能的文件。例如,分子系统的力场或刚体约束都在封装中。在 src 目录中,每个包都是一个子目录,包名称为大写字母。

包文档页面上给出了包的概述。每个包的简要概述位于包详细信息页面上。

构建 LAMMPS 时,您可以选择包含或排除每个包。一般来说,如果您从不打算使用某个包的功能,则无需包含该包。

如果您收到 LAMMPS 命令或样式“未知”的运行时错误,通常是因为该命令包含在某个包中,而您的构建不包含该包。如果命令或样式在 LAMMPS 发行版中包含的包中可用,则错误消息将指示需要哪个包。使用 -h 命令行开关运行 LAMMPS 将打印构建该可执行文件时启用的所有可选命令和包。

对于大多数软件包,如果您按照以下步骤将其包含在内,那么您就可以像不安装任何软件包一样构建 LAMMPS。一些包可能需要额外的步骤,如构建附加页面上所述。

这些链接将带您访问这些选定软件包的额外说明:

ADIOS

ATC

AWPMD

COLVARS

COMPRESS

ELECTRODE

GPU

H5MD

INTEL

KIM

KOKKOS

LEPTON

MACHDYN

MDI

ML-HDNNP

ML-IAP

ML-PACE

ML-POD

ML-QUIP

MOLFILE

NETCDF

OPENMP

OPT

PLUMED

POEMS

PYTHON

QMMM

SCAFACOS

VORONOI

VTK

包含包的机制很简单,但 CMake 与 make 不同。

CMake构建

-D PKG_NAME=value          # yes or no (default)

例如:

-D PKG_MANYBODY=yes
-D PKG_INTEL=yes

所有包都以相同的方式包含在内。请参阅下面的快捷方式部分,了解如何使用 CMake 一次安装多个包。

注:如果您在使用 CMake 构建和 make 构建之间切换,则当您调用 cmake 时,无法安装 src 目录中的任何包。如果不是这种情况,CMake 将给出错误,指示如何卸载 src 目录中的所有包。

传统make

cd lammps/src
make ps                    # check which packages are currently installed
make yes-name              # install a package with name
make no-name               # uninstall a package with name
make mpi                   # build LAMMPS with whatever packages are now installed

例如:

make no-rigid
make yes-intel

所有包都以相同的方式包含在内。请参阅下面的快捷方式部分,了解如何使用 make 一次安装多个软件包。

注:在安装或卸载软件包后,您必须始终重新构建 LAMMPS(通过 make),以使操作生效。包含的依赖项跟踪将确保仅重新编译需要重建的文件。

注:您无法在具有多个目标的单个 make 命令中安装或卸载软件包并构建 LAMMPS,例如 make yes-colloid mpi 。这是因为 make 过程创建了一个源文件列表,如果包配置在同一命令中发生更改,这些源文件对于构建来说将是过时的。您可以在单个 make 命令中包含或排除多个包,例如 make yes-colloid no-manybody 。

3.6.1.两个构建系统的信息 

几乎所有包都可以包含或排除在 LAMMPS 构建中,独立于其他包。但是,某些包包含从其他包中的文件派生的文件。 LAMMPS 检查这一点并做正确的事情。仅当已包含单个文件的依赖项时,才会包含这些文件。同样,如果排除某个包,则依赖于该包的其他文件也会被排除。

注:默认情况下不安装任何软件包。然而,在 2018 年 8 月之前,如果您下载了 tarball,则会通过传统的 make 过程在 src 目录中预安装 3 个软件包(KSPACE、MANYBODY、MOLECULE)。现在情况已不再如此,因此 CMake 将按原样构建,无需卸载这些包。

3.6.2.用于安装多个软件包的 CMake 预设

CMake 允许使用脚本文件初始化其设置缓存,而不是通过命令行指定所有 CMake 选项。这些是常规 CMake 文件,可以操作和设置 CMake 变量(代表所选选项),还可以包含用于更复杂操作的控制流结构。

LAMMPS 包含多个文件来定义配置“预设”,类似于基于 Make 的系统中存在的选项。使用这些文件,您可以启用/禁用 LAMMPS 中可用包的部分内容。如果您需要自定义预设,可以复制其中之一并进行修改以满足您的需求。

cmake -C ../cmake/presets/basic.cmake    [OPTIONS] ../cmake  # enable just a few core packages
cmake -C ../cmake/presets/most.cmake     [OPTIONS] ../cmake  # enable most packages
cmake -C ../cmake/presets/download.cmake [OPTIONS] ../cmake  # enable packages which download sources or potential files
cmake -C ../cmake/presets/nolib.cmake    [OPTIONS] ../cmake  # disable packages that do require extra libraries or tools
cmake -C ../cmake/presets/clang.cmake    [OPTIONS] ../cmake  # change settings to use the Clang compilers by default
cmake -C ../cmake/presets/gcc.cmake      [OPTIONS] ../cmake  # change settings to use the GNU compilers by default
cmake -C ../cmake/presets/intel.cmake    [OPTIONS] ../cmake  # change settings to use the Intel compilers by default
cmake -C ../cmake/presets/pgi.cmake      [OPTIONS] ../cmake  # change settings to use the PGI compilers by default
cmake -C ../cmake/presets/all_on.cmake   [OPTIONS] ../cmake  # enable all packages
cmake -C ../cmake/presets/all_off.cmake  [OPTIONS] ../cmake  # disable all packages
mingw64-cmake -C ../cmake/presets/mingw-cross.cmake [OPTIONS] ../cmake  #  compile with MinGW cross-compilers
cmake -C ../cmake/presets/macos-multiarch.cmake [OPTIONS] ../cmake # compile serial multi-arch binaries on macOS

名称以“windows”开头的预设专门用于在 Windows 上本地编译 LAMMPS,而名称以“kokkos”开头的预设专门用于选择使用 KOKKOS 编译 LAMMPS 的配置。

注:以这种方式运行 cmake 可以操作当前构建目录中的 CMake 设置缓存。您可以在一次 cmake 运行中组合多个预设和选项,或者通过使用新标志运行 cmake 来增量更改设置。如果您使用礼物来选择一组编译器,它将重置之前 CMake 运行的所有设置。

示例:

# build LAMMPS with most commonly used packages, but then remove
# those requiring additional library or tools, but still enable
# GPU package and configure it for using CUDA. You can run.
mkdir build
cd build
cmake -C ../cmake/presets/most.cmake -C ../cmake/presets/nolib.cmake -D PKG_GPU=on -D GPU_API=cuda ../cmake

# to add another package, say BODY to the previous configuration you can run:
cmake -D PKG_BODY=on .

# to reset the package selection from above to the default of no packages
# but leaving all other settings untouched. You can run:
cmake -C ../cmake/presets/all_off.cmake .

3.6.3.创建安装多个软件包的快捷方式 

在通过传统 make 构建 LAMMPS 时,以下命令对于管理包源文件及其安装非常有用。只需在 lammps/src 中输入 make 即可查看一行摘要。

这些命令安装/卸载软件包集:

make yes-all                        # install all packages
make no-all                         # check for changes and uninstall all packages
make no-installed                   # only check and uninstall installed packages
make yes-basic                      # install a few commonly used packages'
make no-basic                       # remove a few commonly used packages'
make yes-most                       # install most packages w/o libs'
make no-most                        # remove most packages w/o libs'
make yes-lib                        # install packages that require extra libraries
make no-lib                         # uninstall packages that require extra libraries
make yes-ext                        # install packages that require external libraries
make no-ext                         # uninstall packages that require external libraries

它安装/卸载各种包集。输入 make package 将列出所有这些命令。

注:安装或卸载基于 make 的构建过程的包只需在主源目录 src 和具有包名称的子目录(例如 src/KSPACE、src/ATC)之间来回复制文件即可,以便包含或删除这些文件LAMMPS 构建时排除。仅编译 src 文件夹中的源文件。

以下 make 命令帮助管理 src 目录和包子目录中存在的文件。通常不需要使用这些命令,除非您正在编辑 LAMMPS 文件或通过 git 更新 LAMMPS。

  • 键入 make package-status 或 make ps 以显示当前安装的软件包。对于已安装的文件,它将列出 src 目录和包子目录中的所有不同文件。
  • 键入 make package-installed 或 make pi 以显示当前安装了哪些软件包,而不列出未安装的软件包的状态。
  • 如果安装了软件包,请键入 make package-update 或 make pu 以使用软件包子目录中的文件覆盖 src 文件。它应该在使用 git 更新或更改结帐后使用,这只会更新包子目录中的文件,但不会更新 src 文件夹中的副本。
  • 键入 make package-overwrite 以使用 src 文件覆盖包子目录中的文件。
  • 键入 make package-diff 以列出源目录和包目录中的文件对之间的所有差异。

  • 21
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值