目的
本代码介绍了如何获取、构建和使用包括针对采用英特尔® 集成众核 (MIC) 架构的英特尔® 至强融核™ 协处理器的支持的 NWChem* 代码。
简介
NWChem 可提供可扩展的计算化学工具。 NWChem 代码能够高效处理大量科学性计算化学问题,而且它们能够利用并行计算资源 — 从高性能并行超级计算机到便携的工作站集群。
NWChem 软件可以处理
- 生物分子、纳米材料和固态设备
- 从量子到经典物理,以及各种组合
- 基态和激发态
- 高斯基函数或平面波
- 高可扩展性,从一台处理器到数千台处理器
- 属性和相对论效应
NWChem 由多位开发人员积极开发,并由位于华盛顿州西北太平洋国家实验室 (PNNL) 的环境分子科学实验室 (EMSL) 进行维护。 该代码在教育社区许可证 2.0 版 (ECL 2.0) 的条款下作为开源代码发布。
最新版 NWChem 可从 http://www.nwchem-sw.org/进行下载。 NWChem 6.5 或更高版本中包括最新的英特尔® 至强融核™ 协处理器。 最新开发版本可通过 https://svn.pnl.gov/svn/nwchem/trunk下载,并包括带有针对至强融核协处理器支持的 NWChem 附加模块。 请查看版本注释和 NWChem 文档,了解更多信息。
代码访问
NWChem 代码支持英特尔® 至强™ 处理器(本文中称“主机”)与英特尔® 至强融核™ 协处理器(本文中称“协处理器”)在单节点和单集群环境中使用面向卸载的英特尔® 语言扩展。
如要下载 NWChem,请访问 http://www.nwchem-sw.org/index.php/Download并下载最新版本。 建议下载源代码版本,以便为所需的系统配置 NWChem。
构建说明
针对英特尔至强融核协处理器构建带有卸载支持的 NWChem 分三个步骤。
- 为系统配置 NWChem。
- 启用卸载支持。
- 构建 NWChem。
配置
设置以下配置选项(以下选项使用 bash 语法):
export ARMCI_NETWORK=OPENIB export ARMCI_DEFAULT_SHMMAX_UBOUND=65536 export USE_MPI=y export NWCHEM_MODULES=all\ python export USE_MPIF=y export USE_MPIF4=y export MPI_HOME=$I_MPI_HOME/intel64 export MPI_INCLUDE="$MPI_HOME"/include export MPI_LIB="$MPI_HOME"/lib export LIBMPI="-lmpi -lmpigf -lmpigi -lrt -lpthread" export MKLROOT=/msc/apps/compilers/intel/14.0/composer_xe_2013_sp1.1.106/mkl/ export SCALAPACK_LIB=" -mkl -openmp -lmkl_scalapack_ilp64 -lmkl_blacs_intelmpi_ilp64 -lpthread -lm" export SCALAPACK="$SCALAPACK_LIB" export LAPACK_LIB="-mkl -openmp -lpthread -lm" export BLAS_LIB="$LAPACK_LIB" export BLASOPT="$LAPACK_LIB" export USE_SCALAPACK=y export SCALAPACK_SIZE=8 export BLAS_SIZE=8 export LAPACK_SIZE=8 export PYTHONHOME=/usr export PYTHONVERSION=2.6 export PYTHONLIBTYPE=so export USE_PYTHON64=y export USE_CPPRESERVE=y export USE_NOFSCHECK=y
启用卸载支持
设置以下环境变量,启用卸载支持:
export USE_OPENMP=1 export USE_OFFLOAD=1
构建
如要构建 NWChem,请发布以下命令:
cd $NWCHEM_TOP/src make FC=ifort CC=icc AR=xiar
由于支持面向 CCSD(T) 方法的英特尔至强融核协处理器,所以能够构建 NWChem (截至 2014 年 8 月 12 日)。 未来将发布可提供更多 NWChem 方法的协处理器支持。
如果您运行的是基于英特尔® True Scale Fabric 的集群,请查看 NWChem 文档,了解正确的配置设置。
使用 NWChem CCSD(T) 方法运行工作负载
如要运行 CCSD(T) 方法,您需要使用能够触发该模块的 NWChem 输入文件。 您可以在本文档的附录中查找输入文件示例。 其他使用 CCSD(T) 方法的输入文件可在 NWChem 网站上查找:http://www.nwchem-sw.org/。
如要使用普通的全局数组 (GA) 仅在主机上以传统模式运行代码,则运行以下命令:
$ OMP_NUM_THREADS=1 mpirun –np 768 –perhost 16 nwchem input.nw
该命令将使用名为 “input.nw” 的文件(每节点包含 768 个 GA rank 和 16 条进程,共 48 台设备)运行 NWChem。
如要在主机上启用 OpenMP* 线程并使用更少的 GA rank,请运行以下命令:
$ OMP_NUM_THREADS=2 mpirun –np 384 –perhost 8 nwchem input.nw
这将引导 NWChem 在每个节点上使用 8 个 GA rank,并在节点的每个进程上启用 2 条线程。 由于它使用较少的 GA rank,所以通信较少;因此,与上面的普通方法相比,速度将会有所提升。
接下来通过执行以下命令,在英特尔至强融核协处理器上启用卸载:
$ NWC_RANKS_PER_DEVICE=2 OMP_NUM_THREADS=4 mpirun –np 384 –perhost 8 nwchem input.nw
如果将 NWC_RANKS_PER_DEVICE
环境变量设置为大于 0 的整数,它将可支持卸载。 此外,它还可控制从主机向每个电脑节点的处理器卸载的 GA rank 数量。
在示例中,我们假定节点包含两路协处理器,NWChem 应可在每路协处理器上找到两个 GA rank。 因此,指派到一个电脑节点上的 GA rank 中有 4/8 将卸载到协处理器。 在卸载过程中,将有一个主机内核闲置;因此,我们将针对主机的 OpenMP 线程数量加倍 (OMP_NUM_THREADS=4
),以便在闲置的内核中填充其他 GA rank 的任务。
NWChem 本身可以自动检测系统中可用的协处理器,并可对其进行正确划分,以便优化使用。
如要获取最佳性能,您还需要在主机系统和协处理器上启用加速模式,而且需要对以下环境变量进行设置,以便在协处理器设备上使用较大的页面:
export MIC_USE_2MB_BUFFER=16K
在上述所有案例中,NWChem 将按照输入文件中的请求生成输出文件。
NWChem 在控制台日志上显示最后几行之后,您将会看到其中一行报告消耗的总运行时:
Total times cpu: wall:
所报告的运行时中将显示,OpenMP 线程版本和卸载版本中的速度显著提升。 当然,具体的运行时将取决于您的系统配置。 以上对控制 OpenMP 和卸载的设置的试验旨在为您的系统寻找最佳值。
性能测试 1,2
下表展示了使用以下列出的配置的 NWChem 能够带来的加速。 您的性能可能稍有差别,具体将取决于您的系统配置、系统优化和上述的 NWChem 设置。
测试平台配置
节点 | 英特尔® 至强™ 处理器内核 | 英特尔® 至强融核™ 协处理器内核 | 异构内核 |
---|---|---|---|
130 | 2080 | 15600 | 17680 |
230 | 3680 | 27600 | 31280 |
360 | 5760 | 43200 | 48960 |
450 | 7200 | 54000 | 61200 |
服务器配置:
- Atipa Visione vf442,双插槽/16 个内核,英特尔® C600 IOH
- 处理器: 两枚采用英特尔® 超线程技术的英特尔® 至强™ 处理器 E5-2670 @ 2.60GHz (8 个内核)3
- 操作系统: Scientific Linux* 6.5
- 内存: 128GB DDR3 @ 1333 MHz
- 协处理器: 2 路英特尔® 至强融核™ 协处理器 5110P,速度为 3.6 GT/秒的 GDDR5,驱动程序 v3.1.2-1,FLASH 映像/micro OS 2.1.02.390
- 英特尔® Composer XE 14.0.1.106
附录: 输入文件示例
start example title example echo memory stack 4800 mb heap 200 mb global 4800 mb noverify geometry units angstrom noprint symmetry c1 C -0.7143 6.0940 -0.00 C 0.7143 6.0940 -0.00 C 0.7143 -6.0940 0.00 C -0.7143 -6.0940 0.00 C 1.4050 4.9240 -0.00 C 1.4050 -4.9240 0.00 C -1.4050 -4.9240 0.00 C -1.4050 4.9240 0.00 C 1.4027 2.4587 -0.00 C -1.4027 2.4587 0.00 C 1.4027 -2.4587 -0.00 C -1.4027 -2.4587 0.00 C 1.4032 -0.0000 -0.00 C -1.4032 0.0000 0.00 C 0.7258 1.2217 -0.00 C -0.7258 1.2217 0.00 C 0.7258 -1.2217 0.00 C -0.7258 -1.2217 0.00 C 0.7252 3.6642 -0.00 C -0.7252 3.6642 0.00 C 0.7252 -3.6642 0.00 C -0.7252 -3.6642 0.00 H -1.2428 7.0380 -0.00 H 1.2428 7.0380 -0.00 H 1.2428 -7.0380 0.00 H -1.2428 -7.0380 0.00 H 2.4878 4.9242 -0.00 H -2.4878 4.9242 0.00 H 2.4878 -4.9242 -0.00 H -2.4878 -4.9242 0.00 H 2.4862 2.4594 -0.00 H -2.4862 2.4594 0.00 H 2.4862 -2.4594 -0.00 H -2.4862 -2.4594 0.00 H 2.4866 -0.0000 -0.00 H -2.4866 0.0000 0.00 end basis spherical noprint H S 13.0100000 0.0196850 1.9620000 0.1379770 0.4446000 0.4781480 H S 0.1220000 1.0000000 H P 0.7270000 1.0000000 #BASIS SET: (9s,4p,1d) -> [3s,2p,1d] C S 6665.0000000 0.0006920 -0.0001460 1000.0000000 0.0053290 -0.0011540 228.0000000 0.0270770 -0.0057250 64.7100000 0.1017180 -0.0233120 21.0600000 0.2747400 -0.0639550 7.4950000 0.4485640 -0.1499810 2.7970000 0.2850740 -0.1272620 0.5215000 0.0152040 0.5445290 C S 0.1596000 1.0000000 C P 9.4390000 0.0381090 2.0020000 0.2094800 0.5456000 0.5085570 C P 0.1517000 1.0000000 C D 0.5500000 1.0000000 #END end scf #thresh 1.0e-10 #thresh 1.0e-4 #tol2e 1.0e-10 #tol2e 1.0e-8 #noscf singlet rhf vectors input atomic output pent_cpu_768d.movecs direct noprint "final vectors analysis" multipole end tce freeze atomic ccsd(t) thresh 1e-4 maxiter 10 io ga tilesize 24 end set tce:pstat t set tce:nts t task tce energy