面向使用 PME 工作负载的对称英特尔® MPI 的 GROMACS 方案

目标

该文件包(脚本及其说明)提供了针对对称英特尔运行的构建和运行环境。 该文件实际上是自述 (README) 文件包。 对称指采用至强™ 可执行文件和至强融核™ 可执行文件,两者通过英特尔 MPI 同时运行以传输 MPI 消息和集体数据。

已有的面向对称英特尔 MPI 的 GROMACS 方案是:https://software.intel.com/zh-cn/articles/gromacs-for-intel-xeon-phi-coprocessor 但该方案强调所谓的 RF 数据集,无法充分利用特定的 Particle Mesh Ewald (PME) 配置选项。

该方案的对称运行配置使用的 PME 模式 GROMACS。 在这种模式下,面向长程力的 GROMACS 中所谓的 Particle-Mesh 部分可并行运行以计算直接力。 高效使用两种架构的理想状态是基于至强融核™ 运行直接力,因为存在高度矢量化内核。 充分利用 FFT 并需要密集型 MPI_Alltoall 通信的 PME 计算基于至强™ 可执行文件运行。

该文件包包含支持基于集群(配备至强™ 和至强融核™ 处理器)运行 GROMACS 的运行脚本。 还可以分别在至强™ 和至强融核™ 处理器上单独运行 GROMACS。 脚本不仅辅助交互运行,还可集成至批处理脚本中。 完整文件包随此方案一并提供。

0. 前提条件

安装时需要下列软件和文件。 用户可获取这些文件包或下载最新版本(如有)。

  1. 下载本文结尾处的文件包 GROMACS-SYM-VERSION.tgz。
     
  2. GROMACS 文件包:    
    ftp://ftp.gromacs.org/pub/gromacs/gromacs-5.0.5.tar.gz
     
  3. cmake 文件包:该软件需为最新版本。 部分操作系统分发版可能包含 cmake 版本,但无法正确构建 GROMACS。 GROMACS 文件包的版本号必须 > 2.8.8。cmake 位于http://www.cmake.org/cmake/resources/software.html,请详细阅读其中的 Readme.txt,获得安装方面的帮助。
     
  4. *.tpr 输入文件: 您还需要 *.tpr GROMACS 输入文件。 该文件包包含人工输入 topol500k.tpr。  

1. GROMACS 的安装

1.1 准备

  1. 解压缩 GROMACS-SYM-version.tgz
    (例如 GROMACS-SYM-0.9.4.tgz)

    $ tar -xvzf GROMACS-SYM-version.tgz

  2. 输入目录

    ​$ cd GROMACS-SYM-version/

    ​包含绝对路径的目录随即开始: $ BASE_DIR=$PWD。
    更新非 5.0.5 的 GROMACS 版本的版本字符串

    $ cat VERSION

    如果是 5.0.5,且您计划使用该版本,则这一步骤已完成。 更新不同 GROMACS 版本的版本号。

  3. 输入文件包目录,复制原来的分发版。

    $ cd $BASE_DIR
    $ cd package

    将原来的 GROMACS 文件包复制到该目录,并打开文件包。

    $ cp /<path to package>/gromacs-5.0.5.tar.gz .
    $ tar -xvzf gromacs-5.0.5.tar.gz
     
  4. 设置环境:

    $ vi $BASE_DIR/env.sh

    寻找环境的来源以检查编译器和 mpi 的环境设置。 如果环境来自于 shell,使用空白 env.sh。

    $ source ./env.sh
    $ which icc
    $ which mpiicc

 测试软件版本

icc                 :  Version 15.0.3, 15.0.2
Intel® MPI     :  Version 5.0.3, 5.0.2   
gcc                :  Version  4.4.7 20120313 (Xeon®)
                         Version  4.8.1

MPSS: 3.2.1, 3.4.2, 3.5

gcc 版本对 stdc++ 资源库和 C++ Flag 至关重要!

1.2 安装至强™ 可执行文件

尽可能在与目标至强™ 架构相同的架构上进行编译,因为 GROMACS cmake 配置脚本可检测最佳选项。

  1. 前往至强™ 构建目录

    $ cd $BASE_DIR/build-xeon

    该目录包含 3 个脚本:
    conf.sh   : 使用 cmake 配置构建目录
    build.sh  : 构建和安装软件 (make)
    clean.sh  : 欲更改参数和重新安装时删除所有配置过的文件
     
  2. 配置 GROMACS:脚本 conf.sh 包含 GROMACS 配置,可通过 cmake 转换成 makefile。 如果转换失败,可检查 conf.log 和 conf.err, 其中包含日志信息和错误输出。 GROMACS 安装将在 $BASE_DIR/gromacs 中进行

    $ ./conf.sh

    conf.sh 包含 cmake 和一些业经验证的选项(对比原来的 GROMACS 安装信息)。 C++ 标记必须不同于 gcc versions >= 4.7。 如果出现错误,请遵循 conf.sh 内提供的说明
     
  3. 构建面向至强™ 的 GROMACS:构建脚本可轻松执行步骤 b. 中生成的 makefile 并安装可执行文件

    $ ./build.sh

    如果安装成功,可执行文件将位于: $BASE_DIR/gromacs/bin/mdrun_mpi
    如果出现错误,检查 gcc 版本是否与 conf.sh 设置一致。 在最新至强™ 服务器上构建可执行文件时间应不超过 5 分钟。

1.3 安装 MIC 可执行文件

必须安装 MPSS 软件堆栈。

  1. 输入 build-mic 目录:

    $ cd $BASE_DIR/build-mic

    以下步骤与 1.2 a-c 完全相同。仅增加 -mmic Flag 和可能不同的 C++ flag。 用户无需作出更改。 
     
  2. $ ./conf.sh
     
  3. $ ./build.sh
    应在 $BASE_DIR/gromacs-mic/bin 中生成至强融核™ 可执行文件

2. 运行 GROMACS

2.0 运行环境

从交互测试开始。 保留一个交互节点以进行包含一个以上 mic 卡的直接测试。如果不支持交互用法,请遵循以下关于在批处理系统下运行的说明(如下所示)。

您需要提供包含主机名称的主机文件,作为最小条目。

如果无法在 /etc/hosts 中查找到主机名称,脚本开始尝试更新主机文件。 还请检查至强融核™ 名称 -mic0… inside /etc/hosts。输入运行目录:

$ cd $BASE_DIR/run

脚本和文件:

  • start.sh :通过定义所有环境设置开始运行。 start.sh 寻找不同脚本的源。 这些脚本包括:
  • functions.sh:定义在 start.sh 内使用辅助 bash 函数
  • env.sh       :寻找面向编译器和 mpi 的脚本的源 -- 更新您的系统。 对使用模块的集群来说,该脚本可能为空白脚本。 如果不显示 env.sh,环境设置将从 shell 获得
  • MPI_OMP_settings.sh:包含特定于 MPI 和 OpenMP 的环境
  • application.sh:包含特定于应用的设置,如程序名称和路径。 该文件包包含面向 IMB 测试的 imb.sh 和面向运行 GROMACS 的 gromacs.sh
  • run_mpi.sh:执行 MPI 命令行
  • prg.sh:面向可执行文件的包装程序脚本可区分至强™ 和至强融核™ 环境                          
  • gen_mach.sh:从 hostfile 生成 MPI machinefile。 该 machinefile 名称默认为 mach.txt。 请确认主机名称是否正确。
  • settings_log.sh:拟定 settings.prot 内的设置
  • env_log.sh  :拟定 env.prot 内的环境设置
  • conf_test.sh:用 2 套至强融核™ 卡运行 7 种不同的系统配置。 单卡系统仅测试 3 种配置。

2.1 IMB 测试(可选,测试独立于 GROMACS 的运行脚本)

如需确保运行系统是否正常运行,可使用该系统和英特尔® MPI 基准测试 (IMB) 来测试不同场景。 IMB 基准测试已面向 intel64 和 mic 架构而构建。 该基准测试位于: $I_MPI_ROOT/intel64/bin 和 $I_MPI_ROOT/mic/bin。

为 IMB 设置应用:

$ rm application.sh

建立至 imb.sh 的软链接

$ ln -s imb.sh application.sh

imb.sh 包含所有运行不同场景所需的 imb 定义。

运行测试脚本

$ ./conf_test.sh

该步骤将生成输出目录 output_Sendrecv_TEST。 该目录包含 7 个子目录。 子目录名称均为配置信息,例如
N-1_H4T6_2xMIC12T15: 1 个节点,4 条主进程,每条主进程 6 条线程,2 个 MIC,每 MIC 12 条进程和 15 条线程。
每个目录均包含运行目录和输出文件中全部使用过的脚本:

settings.prot and env.prot    : configuration logs
command.txt                        : command line
OUT.txt                                : stdout
OUT.err                               : stderr

各目录的 stdout 文件包含 IMB sendrecv 基准测试,显示 MPI 消息传递过程中的潜在瓶颈。

只有配备 2 张至强融核™ 卡的计算节点才能进行 7 种不同的测试!

2.2 运行 GROMACS 测试

为 GROMACS 设置应用:

$ ln -s gromacs.sh application.sh

gromacs.sh 中的设置针对人工
测试案例 topol500k.tpr 而定义。 请根据您的
输入集调整设置。

运行测试案例

$ ./conf_test.sh

这一步骤将生成输出目录:output_topol500k_TEST,包含 7 个子目录。 如顺利运行,每个目录将包含面向 GROMACS 的 md.log,并在最后打印出性能说明。

请参阅 2.1,获取目录/文件名称信息。.

2.3 定义新运行

当前的 machinefile 生成脚本 gen_mach.sh 仅支持一部分可能配置。

更改 start.sh 中的三个变量可创建新配置。
打开 start.sh 脚本:

$ vi start.sh

# HOST_PE: 主机上的 Rank,           (=0:未使用主机)
# NUM_MIC:MIC 卡使用数量(=0:没有使用 mic 卡)
# PP_MIC:各 MIC 卡上的 Rank

export HOST_PE=${HOST_PE:-2}
export NUM_MIC=${NUM_MIC:-2}
export PP_MIC=${PP_MIC:-12}

这三个变量确定了主机上 MPI rank 的数量,mic 卡的使用数量,以及各 mic 卡上 rank 的数量。

主机和 mic 上线程的数量可通过以下方式确定:

# 自动设定线程数量
#覆写显式线程数量
# 对比 file settings.prot 中的输出

export NUM_CORES=12
export MIC_NUM_CORES=57

export THREADS_PER_CORE=1
export MIC_THREADS_PER_CORE=3

我们在此定义内核的数量。 选项为最小值,可进行调整。该数还可通过读取 micinfo 和 cpuinfo 的输出进行确定。 请调整您的至强融核™ 和至强™。

更改参数后,尽可能使用

RUN_TYPE="test" 进行空运行

运行 start.sh 将生成所有设置,但不会执行程序。 这种模式将显示:(如果 machine file 正确)

$ cat mach.txt

2.4 批处理用法

开始脚本还包含

RUN_TYPE="batch"

这部分将仅以交互模式运行,但会使用批处理系统的命令行选项将文件 run_MPI.sh 发送至批处理队列:比对 run/TEMPLATES 下的设置,了解 batch.sh 模板。 该方法主要面向 LSF、PBS 和 SLURM,不过还需对任务管理器有所了解。

如果根据集群文档的建议编写批处理脚本,批处理用法将会变得更加简单。 该脚本可如下所示:

 #QSUB <you settings>
 #QSUB ...

#generate hosts file e.g. = $PBS_NODEFILE

 # define configuration

export HOST_PE=<num of host pe>
export NUM_MIC=<number of mics>
export PP_MIC=<number of ranks per mic>

 ./start.sh [<number of nodes>]  

3. 故障排除

  • 检查 settings.prot 和 env.prot 中拟定的设置。
  • 检查 machine file mach.txt
  • 将 imb 用作应用,检查系统是否与 imb 同时运行。
  • 针对对称 GOMACS 运行的计时输出已损坏。 PME 部分由错误因素进行衡量(仅提供信息)。
  • 配置之前,检查 LDFLAGS 和 CFLAGS 是否未在 shell 内定义。 这样会混淆 cmake 配置。
  • 请检查 gcc 版本号是否 >= 4.7。 这样可能需要为 conf.sh 内的 CXX_FLAGS 设置其他标记。 请阅读 conf.sh 内的备注。
  • 检查 mic 主机的一般规则是否有效:
    mic0 名称为: <hostname>-mic0
    如果不是这样,请调整函数
    host2mic inside gen_mach.sh
ВложениеРазмер
Файл GROMACS-SYM-0.9.4.tgz2.67 МБ
Для получения подробной информации о возможностях оптимизации компилятора обратитесь к нашему Уведомлению об оптимизации.
Возможность комментирования русскоязычного контента была отключена. Узнать подробнее.