3. 构建 LAMMPS
3.1.使用 CMake 构建 LAMMPS
3.2.使用 make 构建 LAMMPS
用传统的Makefile构建lamp需要一个Makefile.<machine>文件。在src/MAKE、src/MAKE/MACHINES、src/MAKE/OPTIONS或src/MAKE/MINE目录下创建适合系统的文件(见下文)。它可以包含各种选项,用于使用许多全局编译选项和特性定制LAMMPS构建。
3.2.1.要求
这些 makefile 是为 GNU make 编写和测试的,可能与其他 make 程序不兼容。在大多数情况下,如果“make”程序不是GNU make,那么就会有一个名为“gmake”的GNU make程序可用。如果 GNU make 或兼容的 make 不可用,您可能必须首先安装它或切换到使用 CMake 进行构建。基于传统 make 的构建过程的 makefile 及其调用的脚本需要一些额外的工具可用并正常运行。
- 支持c++ 11标准的C/ c++编译器工具链;在Linux上,这些通常是GNU编译器。一些较旧的编译器版本需要添加像-std=c++11这样的标志来启用c++11模式。
- 与Bourne shell兼容的“Unix”shell程序(通常是bash)
- 一些shell实用程序:ls、mv、ln、rm、grep、sed、tr、cat、touch、diff、dirname
- Python(可选,在src文件夹中make lib-<pkg>需要)。Python脚本目前使用Python 2.7和3.6到3.11进行测试。构建文档的过程需要Python 3.5或更高版本。
3.2.2.开始
要包含 LAMMPS 包(即可选命令和样式),您必须首先启用(或“安装”)它们,如构建包页面上所述。如果包需要(提供的或外部的)库,则必须在构建 LAMMPS 本身之前配置和构建这些库,尤其是在使用 make yes-<package>
启用此类包之前。使用 CMake 构建 LAMMPS 可以为多种类型的机器(尤其是工作站、台式机和笔记本电脑)实现大部分自动化操作,因此我们建议您在这些情况下构建 LAMMPS 时首先尝试。
以下命令执行默认的 LAMMPS 构建,在 lammps/src
中生成 LAMMPS 可执行文件 lmp_serial
和 lmp_mpi
:
cd lammps/src # change to main LAMMPS source folder
make serial # build a serial LAMMPS executable using GNU g++
make mpi # build a parallel LAMMPS executable with MPI
make # see a variety of make options
编译可能需要很长时间,因为 LAMMPS 是一个具有许多功能的大型项目。如果您的机器有多个 CPU 核心(现在大多数都是这样),您可以通过与 make -j N
并行编译源代码(N 是并发执行任务的最大数量)来加快速度。安装 ccache(= Compiler Cache)软件可能会进一步加快重复编译的速度,例如在代码开发过程中,尤其是在分支之间反复切换时。
初始构建后,每当您编辑 LAMMPS 源文件,或向源目录添加或删除新文件(例如,通过安装或卸载软件包)时,您必须使用相同的 make <machine>
命令。 makefile 的依赖性跟踪应确保仅重新编译必要的文件子集。如果更改 makefile 中的设置,则必须重新编译所有内容。要删除所有对象,您可以使用 make clean-<machine>
。
注:在实际编译开始之前,LAMMPS 将执行几个步骤来从配置和设置中收集信息,然后将其嵌入到可执行文件中。当你第一次构建LAMMPS时,它还会编译一个工具来快速确定依赖项列表。这些是 make 程序正确检测源代码更改后需要重新编译或重新链接的文件所必需的。
3.2.3.定制构建和备用 makefile
src/MAKE
目录树包含 LAMMPS 发行版中包含的 Makefile.<machine>
文件。键入 make example
使用这些文件夹之一中的 Makefile.example
(如果可用)。
例如,上面的 make serial
和 make mpi
行分别使用src/MAKE/Makefile.serial
和src/MAKE/Makefile.mpi
其他 makefile 位于这些目录中:
OPTIONS # Makefiles which enable specific options
MACHINES # Makefiles for specific machines
MINE # customized Makefiles you create (you may need to create this folder)
只需键入 make
即可列出所有可用的 Makefile.<machine>
文件,并在输出末尾带有单行描述。具有相同名称的文件可以出现在多个文件夹中(这不是一个好主意)。搜索目录的顺序如下: src/MAKE/MINE
、 src/MAKE
、 src/MAKE/OPTIONS
、 src/MAKE/MACHINES
。这会优先考虑您放入 src/MAKE/MINE
中的自定义文件。如果您以新名称创建自己的自定义 makefile,请编辑第一行的说明和机器名称,这样您在查看机器摘要时就不会感到困惑。
您可能希望尝试的 Makefile 包括下面列出的那些(有些需要先安装软件包)。其中许多都包含用于优化性能的特定编译器标志。但请注意,其中一些定制的机器 Makefile 是由用户贡献的,因此可能会针对这些用户的系统进行特定的修改。由于编译器、操作系统配置和 LAMMPS 本身不断变化,它们的设置也可能变得过时:
make mac # build serial LAMMPS on macOS
make mac_mpi # build parallel LAMMPS on macOS
make intel_cpu # build with the INTEL package optimized for CPUs
make knl # build with the INTEL package optimized for KNLs
make opt # build with the OPT package optimized for CPUs
make omp # build with the OPENMP package optimized for OpenMP
make kokkos_omp # build with the KOKKOS package for OpenMP
make kokkos_cuda_mpi # build with the KOKKOS package for GPUs
make kokkos_phi # build with the KOKKOS package for KNLs