【LAMMPS学习】四、运行 LAMMPS(2)命令行选项

 4. 运行 LAMMPS

本部分解释了在安装可执行文件或下载源代码并构建可执行文件后如何运行 LAMMPS。命令文档页面描述了输入脚本的结构以及它们可以包含的命令。

4.1.运行 LAMMPS 的基础知识

4.2.命令行选项

在运行时,LAMMPS 可以识别多个可选的命令行开关,这些开关可以按任何顺序使用。可以使用完整的单词或一两个字母的缩写:

例如,lmp_mpi 可执行文件可能按如下方式启动:

mpirun -np 16 lmp_mpi -v f tmp.out -l my.log -sc none -i in.alloy
mpirun -np 16 lmp_mpi -var f tmp.out -log my.log -screen none -in in.alloy

-echo style 

设置命令回显的样式。样式可以是无、屏幕或日志或两者兼而有之。根据样式,从输入脚本读取的每个命​​令都将回显到屏幕和/或日志文件。这对于确定脚本的哪一行导致输入错误非常有用。默认值为日志。还可以通过在输入脚本本身中使用 echo 命令来设置回显样式。

-help 


打印简短的帮助摘要以及针对每种 LAMMPS 样式(atom_style、fix、compute、pair_style、bond_style 等)编译到此可执行文件中的选项列表。这可以告诉您要使用的命令是否在编译时通过适当的包包含在内。如果使用此开关,LAMMPS 将打印信息并立即退出。


-in file

Specify a file to use as an input script. This is an optional but recommended switch when running LAMMPS in one-partition mode. If it is not specified, LAMMPS reads its script from standard input, typically from a script via I/O redirection; e.g. lmp_linux < in.run. With many MPI implementations I/O redirection also works in parallel, but using the -in flag will always work.
指定用作输入脚本的文件。在单分区模式下运行 LAMMPS 时,这是一个可选但推荐的开关。如果未指定,LAMMPS 从标准输入读取其脚本,通常是通过 I/O 重定向从脚本读取;例如lmp_linux < in.run.对于许多 MPI 实现,I/O 重定向也可以并行工作,但使用 -in 标志始终有效。

Note that this is a required switch when running LAMMPS in multi-partition mode, since multiple processors cannot all read from stdin concurrently. The file name may be “none” for starting multi-partition calculations without reading an initial input file from the library interface.
请注意,在多分区模式下运行 LAMMPS 时,这是必需的开关,因为多个处理器无法同时从 stdin 读取数据。文件名可以是“none”,用于启动多分区计算而不从库接口读取初始输入文件。


-kokkos on/off keyword/value …
显式启用或禁用 KOKKOS 支持,如 KOKKOS 包提供的那样。即使 LAMMPS 是使用此程序包构建的(如 KOKKOS 程序包页面中所述),也必须设置此开关以启用程序包提供的支持 KOKKOS 的样式运行。如果未设置该开关(默认),LAMMPS 将像未安装 KOKKOS 软件包一样运行;即,您可以运行标准 LAMMPS 或使用 GPU 或 OPENMP 软件包来进行测试或基准测试。

可以指定其他可选关键字/值对,以确定 Kokkos 将如何在您的平台上使用底层硬件。这些设置适用于您通过 mpirun 或 mpiexec 命令启动的每个 MPI 任务。您可以选择为每个物理节点运行一个或多个 MPI 任务。请注意,如果您在台式计算机上运行,​​则通常有一个物理节点。在集群或超级计算机上可能有数十个或数千个物理节点。

关键字可以使用完整单词或缩写。请注意,关键字不使用前导减号。 IE。关键字是“t”,而不是“-t”。另请注意,每个关键字都有一个默认设置。 KOKKOS 包文档页面上给出了何时使用这些选项以及在不同平台上使用哪些设置的示例。

  • d or device 

  • g or gpus 

  • t or threads

device Nd

仅当您使用 CUDA=yes 构建 LAMMPS、每个节点有多个 GPU,并且每个节点仅运行一个 MPI 任务时,此选项才相关。 Nd 设置是要运行的节点上 GPU 的 ID。默认情况下 Nd = 0。如果每个节点有多个 GPU,它们具有编号为 0、1、2 等的连续 ID。此设置允许您在节点上启动多个独立作业,每个作业每个节点都有一个 MPI 任务,并分配每个作业在不同的 GPU 上运行。

gpus Ng Ns

仅当您使用 CUDA=yes 构建 LAMMPS、每个节点有多个 GPU 并且每个节点运行多个 MPI 任务(每个 GPU 最多一个)时,此选项才相关。 Ng 设置是您将使用多少个 GPU。 Ns 设置是可选的。如果设置,则在将 MPI 任务分配给 GPU 时要跳过的 GPU ID。如果您的桌面系统保留一个 GPU 来驱动屏幕,而其余的用于运行 LAMMPS 等计算工作,这可能会很有用。默认情况下 Ng = 1 并且 Ns 未设置。
根据您运行的 MPI 类型,LAMMPS 将查找这 4 个环境变量之一

SLURM_LOCALID (various MPI variants compiled with SLURM support)
MPT_LRANK (HPE MPI)
MV2_COMM_WORLD_LOCAL_RANK (Mvapich)
OMPI_COMM_WORLD_LOCAL_RANK (OpenMPI)

由 srun 、 mpirun 或 mpiexec 命令初始化。每个 MPI 等级的环境变量设置用于为 MPI 任务分配唯一的 GPU ID。

threads Nt

当 Kokkos 在 OpenMP 或 pthreads 模式下执行时,此选项为每个 MPI 任务分配 Nt 个线程来执行工作。默认值为 Nt = 1,本质上以仅 MPI 模式运行。如果每个物理节点有 Np 个 MPI 任务,您通常希望 Np*Nt = 每个节点的物理核心数,以便以最佳方式使用可用硬件。这也设置了在使用 CUDA=yes 编译 LAMMPS 时主机使用的线程数。

自 2022 年 12 月 22 日版本起已弃用。

对“numa”或“n”选项的支持已被删除,因为它的功能在 Kokkos 中已经被忽略了一段时间。

-log file

指定 LAMMPS 写入状态信息的日志文件。在单分区模式下,如果不使用开关,LAMMPS 会写入文件 log.lammps。如果使用此开关,LAMMPS 将写入指定的文件。在多分区模式下,如果未使用开关,则会创建一个包含高级状态信息的 log.lammps 文件。每个分区还会写入 log.lammps.N 文件,其中 N 是分区 ID。如果在多分区模式下指定开关,则高级日志文件被命名为“file”,每个分区也将信息记录到文件中。对于单分区和多分区模式,如果指定的文件为“none”,则不会创建任何日志文件。在输入脚本中使用日志命令将覆盖此设置。选项 -plog 将覆盖分区日志文件的名称 file.N。

-mdi ‘multiple flags’

仅当 LAMMPS 支持作为 MDI 包一部分包含的 MolSSI 驱动程序接口 (MDI) 时,才会识别和使用此标志。该标志特定于 MDI 库,控制 LAMMPS 如何与 MDI 交互。通常必须跟随多个标志,并且这些标志必须放在引号中。有关如何在 MDI 客户端/服务器模式下启动 LAMMPS 的更多信息,请参阅 MDI Howto。

-mpicolor color

如果使用,它必须是 LAMMPS 可执行文件名称之后的第一个命令行参数。仅当通过 mpirun 命令启动 LAMMPS 时才使用它,该命令还同时启动另一个可执行文件。 (其他可执行文件也可以是 LAMMPS。)颜色是一个整数值,对于每个可执行文件应该不同(另一个应用程序可能以不同的方式设置该值)。 LAMMPS 和其他可执行文件使用自己的颜色执行 MPI_Comm_split(),以将 MPI_COMM_WORLD 通信缩小为它们实际运行的处理器的子集。

-cite style or file name

选择如何以及在何处输出有关引用运行期间使用的 LAMMPS 代码贡献的提醒。样式的可用关键字有“both”、“none”、“screen”或“log”。任何其他关键字将被视为写入详细引用信息的文件名,而不是日志文件或屏幕。默认为“日志”样式,屏幕输出中有简短摘要,日志文件中有 BibTeX 格式的详细引用。选项“both”选择两者的详细输出,“none”,两者的简短输出,“screen”将详细信息写入屏幕,将简短版本写入日志文件。如果请求专用的引文信息文件,屏幕和日志文件输出将采用短格式(与“none”相同)。

有关如何正确引用和引用 LAMMPS 的更多详细信息,请参阅引文页面

-nocite

完全禁用生成引文提醒(见上文)。

-nonbuf

2022 年 9 月 15 日版本中的新增功能。

关闭屏幕和日志文件输出的缓冲。出于性能原因,屏幕和日志文件的输出通常会被缓冲,即只有在缓冲区(通常为 4096 字节)已填满时,输出才会写入文件。然而,当 LAMMPS 由于某种原因崩溃时,这可能意味着重要的输出丢失。使用此标志可以关闭缓冲(仅适用于屏幕和日志文件输出)并且任何输出都将立即提交。请注意,当与 MPI 并行运行时,屏幕输出可能仍由 MPI 库缓冲,并且 LAMMPS 无法更改这一点。该标志只能用于调试,而不应用于生产模拟,因为性能影响可能很大,特别是对于大型并行运行。

-package style args

使用样式和参数调用包命令。语法与命令出现在输入脚本的顶部相同。例如,“-package gpu 2”或“-pk gpu 2”与输入脚本中的package gpu 2相同。可能的样式和参数记录在包文档页面上。该开关可以多次使用,例如设置可以一起使用的 INTEL 和 OPENMP 包的选项。
与“-suffix”命令行开关一起,这是一种调用加速器包及其选项的便捷机制,而无需编辑输入脚本。

-partition 8x2 4 5 …

在多分区模式下调用 LAMMPS。当 LAMMPS 在 P 处理器上运行并且未使用此开关时,LAMMPS 在一个分区中运行,即所有 P 处理器都运行单个模拟。如果使用此开关,P 个处理器将被分成单独的分区,并且每个分区运行自己的模拟。开关的参数指定每个分区中的处理器数量。 MxN 形式的参数表示 M 个分区,每个分区有 N 个处理器。 N 形式的参数表示具有 N 个处理器的单个分区。所有分区中的处理器总数必须等于 P。因此,命令“-partition 8x2 4 5”有 10 个分区,总共在 25 个处理器上运行。

使用多个分区运行对于运行多副本模拟非常有用,其中每个副本都在一个或多个处理器上运行。请注意,在计算机(例如台式机)上安装 MPI 后,您可以在比物理处理器更多的(虚拟)处理器上运行。

要使用多个分区从一个输入脚本运行多个独立模拟,请参阅 Howto多个页面。world和universe类型的变量在这种情况下很有用。

-plog file

指定分区日志文件的基本名称,以便分区 N 将日志信息写入 file.N。如果 file 为 none,则不会创建分区日志文件。这会覆盖 -log 命令行选项中指定的文件名。当处理大量分区时,此选项很有用,允许抑制分区日志文件 (-plog none) 或将其放置在子目录中 (-plogreplica_files/log.lammps) 如果未使用此选项,则分区的日志文件N 是 log.lammps.N 或 -log 命令行选项指定的任何内容。

-pscreen file

指定分区屏幕文件的基本名称,以便分区 N 将屏幕信息写入 file.N。如果文件为“none”,则不会创建分区屏幕文件。这会覆盖 -screen 命令行选项中指定的文件名。当处理大量分区时,此选项非常有用,允许抑制分区屏幕文件(-pscreen none)或将其放置在子目录中(-pscreenreplica_files/screen)。如果未使用此选项,则分区 N 的屏幕文件为 screen.N 或 -screen 命令行选项指定的任何文件。

-reorder 

该选项有 2 种形式:

-reorder nth N
-reorder custom filename

通过多种方式之一对用于实例化 LAMMPS 的 MPI 通信器中的处理器重新排序。原始的 MPI 通信器将所有 P 处理器从 0 到 P-1 进行排序。这些级别到物理处理器的映射是在 LAMMPS 开始之前由 MPI 完成的。在某些情况下,更改排名顺序可能很有用。例如。确保每个节点内的核心按所需顺序排列。或者,当对 2 个分区使用 run_style verlet/split 命令时,以确保特定的 Kspace 处理器(在第二个分区中)与第一个分区中的一组特定处理器相匹配。有关更多详细信息,请参阅一般提示页面。

如果关键字nth与设置N一起使用,则意味着每个第N个处理器将移至排名的末尾。当通过 -partition 命令行开关使用带有 2 个分区的 run_style verlet/split 命令时,这非常有用。第一组处理器将位于第一个分区中,第二组处理器将位于第二分区中。 -reorder 命令行开关可以改变这一点,以便第一个分区中的前 N ​​个进程和第二个分区中的一个进程将连续排序,例如作为一个物理节点上的核心。这可以提高性能。例如,如果您使用“-reorder nth 4”和“-partition 9 3”并且您在 12 个处理器上运行,则处理器将从

0 1 2 3 4 5 6 7 8 9 10 11

0 1 2 4 5 6 8 9 10 3 7 11

这样每个分区中的处理器将是

0 1 2 4 5 6 8 9 10
3 7 11

请参阅“processors”命令,了解如何确保每个分区的处理器可以针对四核节点进行最佳分组。

如果关键字是自定义的,则还指定指定处理器等级排列的文件。重新排序文件的格式如下。可以存在任意数量的初始空白行或注释行(以“#”字符开头)。这些后面应该是以下形式的 P 行:

I J

其中 P 是 LAMMPS 启动时使用的处理器数量。请注意,如果在多分区模式下运行(请参阅上面的 -partition 开关),P 是所有分区中的处理器总数。 I 和 J 值描述了 P 处理器的排列。每个 I 和 J 的值应为 0 到 P-1(含)。在 P I 值集中,每个进程 ID 应该恰好出现一次。 P J 值集也是如此。单个 I,J 配对意味着原始 MPI 通信器中具有等级 I 的物理处理器将在重新排序的通信器中具有等级 J。

请注意,许多 MPI 实现也可以指定排名顺序,可以通过指定如何对物理处理器进行排序的环境变量,或者通过指定要分配给每个 MPI 排名的物理处理器的配置文件。 -reorder 开关只是为您提供了一种可移植的方法来执行此操作,而无需依赖 MPI 本身。请参阅处理器文件命令,了解如何输出有关物理处理器最终分配到 LAMMPS 模拟域的信息。

-restart2data restartfile 数据文件关键字值...

将重启文件转换为数据文件并立即退出。这与运行以下 2 行输入脚本的操作相同:

read_restart restartfile
write_data datafile keyword value ...

指定的重新启动文件和/或数据文件名称可以包含通配符“*”。重新启动文件名还可以包含通配符“%”。这些字符的含义在 read_restart 和 write_data 文档页面上进行了解释。使用“%”意味着可以读取并行重启文件。请注意,文件名(例如 file.*)可能需要用引号或带有反斜杠(“”)前缀的“*”字符括起来,以避免 shell 扩展“*”字符。

restartfile后面的语法,即

datafile keyword value ...

与 write_data 命令的参数相同。有关详细信息,请参阅其文档页面。这包括其可选的关键字/值设置。

-restart2dump restartfile group-ID dumpstyle dumpfile arg1 arg2 …

将重启文件转换为转储文件并立即退出。这与运行以下 2 行输入脚本的操作相同:

read_restart restartfile
write_dump group-ID dumpstyle dumpfile arg1 arg2 ...

请注意,指定的重新启动文件和转储文件名称可能包含通配符(“*”或“%”),如 read_restart 和 write_dump 文档页面上所述。使用“%”意味着可以读取和/或写入并行重启文件和/或并行转储文件。请注意,文件名(例如 file.*)可能需要用引号或带有反斜杠(“”)前缀的“*”字符括起来,以避免 shell 扩展“*”字符。
restartfile后面的语法,即

group-ID dumpstyle dumpfile arg1 arg2 ...

与 write_dump 命令的参数相同。有关详细信息,请参阅其文档页面。这包括将每个原子字段写入转储文件和可选的 dump_modify 设置,包括影响并行转储文件写入方式的设置,例如nfile 和 fileper 关键字。有关详细信息,请参阅 dump_modify 页面。

-screen file

指定 LAMMPS 写入屏幕信息的文件。在单分区模式下,如果不使用开关,LAMMPS 会写入屏幕。如果使用此开关,LAMMPS 将改为写入指定的文件,并且您将看不到屏幕输出。在多分区模式下,如果不使用开关,则高级状态信息将写入屏幕。每个分区还会写入 screen.N 文件,其中 N 是分区 ID。如果在多分区模式下指定开关,则高级屏幕转储被命名为“文件”,每个分区还将屏幕信息写入文件。对于单分区和多分区模式,如果指定文件为“none”,则不进行屏幕输出。选项 -pscreen 将覆盖分区屏幕文件 file.N 的名称。

-skiprun

在输入文件的开头或清除命令之后每隔 1 插入一次命令计时器超时 0。这具有处理整个 LAMMPS 输入脚本而不执行实际运行或最小化和类似命令(跳过它们的主循环)的效果。这对于测试长时间运行计算的输入脚本的正确性非常有用且方便,以避免它们在很长时间后由于中间或最后的拼写错误或语法错误而崩溃。

-suffix style 

用各种风格的变体(如果存在)。指定的样式可以是 gpu、intel、kk、omp、opt 或hybrid。这些是指可以用来构建 LAMMPS 的可选包,如加速性能中所述。 “gpu”风格对应GPU包,“intel”风格对应INTEL包,“kk”风格对应KOKKOS包,“opt”风格对应OPT包,“omp”风格对应OPENMP包裹。混合样式是唯一接受参数的样式。它允许指定两个包。指定的第一个包是默认包,如果可用则将使用它。如果第一个包没有可用的样式,则将使用第二个包的样式(如果有)。例如,“-suffixhybrid intel omp”将使用 INTEL 包中的样式(如果已安装且可用),但否则使用 OPENMP 包的样式。

与“-package”命令行开关一起,这是一种调用加速器包及其选项的便捷机制,而无需编辑输入脚本。

例如,所有软件包都提供pair_style lj/cut 变体,样式名称为lj/cut/gpu、lj/cut/intel、lj/cut/kk、lj/cut/omp 和lj/cut/opt。可以在输入脚本中显式指定变体样式,例如pair_style lj/cut/gpu.如果使用 -suffix 开关,则每当您的输入脚本命令创建新的原子样式、配对样式、修复、计算或运行样式时,都会自动附加指定的后缀(gpu、intel、kk、omp、opt)。如果变体版本不存在,则创建标准版本。

对于 GPU 包,使用此命令行开关还会调用默认 GPU 设置,就像在输入脚本顶部使用命令“package gpu 1”一样。可以通过使用“-package gpu”命令行开关或脚本中的 package gpu 命令来更改这些设置。

对于 INTEL 包,使用此命令行开关还会调用默认的 INTEL 设置,就像在输入脚本顶部使用命令“package intel 1”一样。可以通过使用“-package intel”命令行开关或脚本中的 package intel 命令来更改这些设置。如果还安装了 OPENMP 软件包,如果 INTEL 软件包中没有请求的样式,则可以使用带有“intel omp”参数的混合样式使 omp 后缀成为第二选择。它还将调用默认的 OPENMP 设置,就像在输入脚本顶部使用命令“package omp 0”一样。可以通过使用“-package omp”命令行开关或脚本中的 package omp 命令来更改这些设置。

对于 KOKKOS 包,使用此命令行开关还会调用默认的 KOKKOS 设置,就像在输入脚本顶部使用命令“package kokkos”一样。可以通过使用“-package kokkos”命令行开关或脚本中的 package kokkos 命令来更改这些设置。

对于 OMP 包,使用此命令行开关还会调用默认 OMP 设置,就像在输入脚本顶部使用命令“package omp 0”一样。可以通过使用“-package omp”命令行开关或脚本中的 package omp 命令来更改这些设置。

对于 OMP 包,使用此命令行开关还会调用默认 OMP 设置,就像在输入脚本顶部使用命令“package omp 0”一样。可以通过使用“-package omp”命令行开关或脚本中的 package omp 命令来更改这些设置。

-var name value1 value2 …

指定一个变量,该变量将在读取输入脚本时定义用于替换目的。该开关可以多次使用来定义多个变量。 “Name”是变量名称,可以是单个字符(在输入脚本中引用为 $x)或完整字符串(引用为 ${abc})。将创建一个索引样式变量并用后续值填充,例如一组文件名。使用此命令行选项相当于将“变量名称索引值1值2…”行放在输入脚本的开头。将索引变量定义为命令行参数会覆盖输入脚本中同一索引变量的任何设置,因为索引变量无法重新定义。

See the variable command for more info on defining index and other kinds of variables and the Parsing rules page for more info on using variables in input scripts.
有关定义索引和其他类型变量的详细信息,请参阅变量命令,有关在输入脚本中使用变量的详细信息,请参阅解析规则页面。

注:目前,命令行解析器查找以“-”开头的参数来指示新开关。因此,如果其中任何一个变量值以“-”开头,则不能指定多个变量值,例如负数值。如果第一个 value1 以“-”开头也可以,因为它会被自动跳过。

  • 17
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值