目录

安装配置MPI并行环境

本文介绍为在笔记本、台式单机和集群服务器上进行QuantumATK MPI并行计算必须安装配置的MPI并行环境。

重要提示

从2017版开始,QuantumATK集成了Intel MPI运行环境,更好的分配MPI和OpenMP并行,推荐用户使用;不再需要参考此文安装MPI。

硬件需求

QuantumATK可以在常见架构的多核工作站、笔记本电脑和集群上进行并行计算,不同的硬件、不同的并行度都会让计算效率得到不同的提升。 推荐的最佳并行方案是在多个多核节点上进行并行计算,不同计算类型(ATK-DFT、ATK-SE、ATK-Classical、ATK-FHIaims)可选择不同的并行策略。

进行MPI并行计算需要软件license中有Slave支持。用户需要购买并行所需的Slave数。

安装要求

QuantumATK的MPI并行计算需要用户自行安装MPICH。在Windows系统上,MPICH已经随安装包提供并安装。在Linux系统上推荐安装最新版的MPICH 3.x;其他与与MPICH兼容的MVAPICH2Intel MPI也能用。

QuantumATK支持以下几种MPICH2的进程管理器:

ATK并行计算不支持OpenMPI。

安装MPICH并行环境

在Windows系统上安装MPICH

在Windows系统上,MPICH已经随安装包提供并安装。请进行以下操作以使用MPICH。

  1. 使用管理员权限打开命令提示符窗口;
  2. 进入QuantumATK安装的文件夹,例如 C:\Program Files (x86)\QuantumWise\VNL-ATK-2016.3\bin\mpich;
  3. 运行 命令 smpd.exe -install。输出以下信息:MPICH2 Process Manager, Argonne National Lab installed.
  4. 要验证MPICH是否成功安装,打开VNL图形界面,进行下面的操作;
  5. 添加一个 new machine,选择作业类型 Multiprocess Parallel;设置默认的MPI进程数;
  6. 设置 MPI 可执行文件的路径,例如:C:\Program Files (x86)\QuantumWise\VNL-ATK-2016.3\bin\mpich and select the mpiexec.exe;
  7. 使用新添加的machine尝试运行作业。

在Linux系统上安装MPICH

如果系统内安装了MPICH(推荐MPICH2 1.4以上或MPICH 3.x版本)或Intel MPI 或MVAPICH2,可以尝试直接使用。以Linux系统下的MPICH2为例,用户可以用mpich2version命令获得MPICH的版本信息。

如果系统中没有MPICH,则用户可以自行安装,方法是:

export PATH=/home/username/mpich-3.0.4/bin:$PATH
export LD_LIBRARY_PATH=/home/username/mpich-3.0.4/lib:$LD_LIBRARY_PATH

设置节点间SSH无密码通信

  • Windows系统可以跳过这一步。
  • 多数集群通常也已经设置好这一步,则也可以跳过。
  • 单机并行也不需要这一步。
ssh-keygen -t dsa
cd ~/.ssh
cat id_dsa.pub >> authorized_keys
chmod 600 authorized_keys

测试是否可以不用密码ssh到其他节点。

配置计算集群

这里所说的集群为个人自行搭建的简单集群,没有队列系统等,采用手动提交任务的方式运行计算。

在个人账户的主目录下创建一个名为machinefile的文件,文件内容为每行一个节点的主机名:

host1
host2
host3
host4

测试并行环境

运行以下命令:

mpiexec -n 4 -f machinefile hostname

输出结果为各节点的主机名。

QuantumATK并行计算测试

若以上安装都正确无误,则可以进行QuantumATK的并行测试。下载测试脚本test_mpi.py(QuantumATK安装目录的examples/atkpython下也有类似的脚本)到主目录:

test_mpi.py
import platform, time, random
 
node = platform.node()
time.sleep(random.random())
if processIsMaster():
    print "Master : %s" % node
else:
    print "Slave : %s" % node

并用下面命令运行:

mpiexec -n 4 -f machinefile atkpython ~/test_mpi.py