WIEN2K并行编译过程.docx
- 文档编号:3508144
- 上传时间:2022-11-23
- 格式:DOCX
- 页数:14
- 大小:19.17KB
WIEN2K并行编译过程.docx
《WIEN2K并行编译过程.docx》由会员分享,可在线阅读,更多相关《WIEN2K并行编译过程.docx(14页珍藏版)》请在冰豆网上搜索。
WIEN2K并行编译过程
一、 背景介绍
简介:
用密度泛函理论计算固体的电子结构。
它基于键结构计算最准确的方案——完全势能(线性)增广平面波((L)APW)+局域轨道(lo)方法。
在密度泛函中可以使用局域(自旋)密度近似(LDA)或广义梯度近似(GGA)。
WIEN2000使用全电子方案,包含相对论影响。
功能:
计算固体特性。
键能和态密度,电子密度和自旋密度,X射线结构因子,Baders的“分子中的原子”概念,总能量,力,平衡结构,结构优化,分子动力学,电场梯度,异构体位移,超精细场,自旋极化(铁磁性和反铁磁性结构),自旋-轨道耦合,X射线发射和吸收谱,电子能量损失谱计算固体的光学特性费米表面LDA,GGA,meta-GGA,LDA+U,轨道极化中心对称和非中心对称晶格,内置230个空间群图形用户界面和用户指南友好的用户环境W2web(WIENtoWEB)可以很容易的产生和修改输入文件。
它还能帮助用户执行各种任务(如电子密度,态密度,等)。
平台:
unix/linux
二、 软件的安装设置
1、硬件环境
Shanghai/Suse10u2
2、软件版本
Ver:
wien2k09
3、安装Intel编译器
ifort/icc
Ver:
11.083
4、安装Intel的MKL
Ver:
10.1.2.024
5、安装mpichv1.2.7
./configure-c++=icpc-cc=icc-f77=ifort-f90=ifort--prefix=/home/soft/mpi/mpich-1.2.7-intel
make
makeinstall
6、设置环境变量
vi~/.bashrc
添加如下:
##############MPICH###########
exportPATH=/home/soft/mpi/mpich-1.2.7-intel/bin:
$PATH
################intelcompiler###################
./home/soft/intel/Compiler/11.0/083/bin/intel64/ifortvars_intel64.sh
./home/soft/intel/Compiler/11.0/083/bin/intel64/iccvars_intel64.sh
###############intelmkl###################
exportLD_LIBRARY_PATH=/home/soft/intel/mkl/10.1.2.024/lib/em64t/:
$LD_LIBRARY_PATH
7、安装fftw库
tarzxffftw-2.1.5.tar.gz
cdfftw-2.1.5/
exportF77=ifort
exportCC=icc
./configure--prefix=/home/soft/mathlib/fftwv215-mpich--enable-mpi
make
makeinstall
8、创建编译目录
进入安装用户目录
su-mjhe
mkdir~/WIEN2k_09
cpWIEN_2k.tar~/WIEN2k_09
9、将压缩包解开
cd~/WIEN2k_09
tarxfWIEN2k_09.tar
./expand_lapw
10、 编译
./siteconfig_lapw
其中几个编译参数需要修改:
(可以参考如下)
specifyasystem
K Linux(Intelifort10.1compiler+mkl10.0)
specifycompiler
Currentselection:
ifort
Currentselection:
icc
specifycompileroptions,BLASandLAPACK
Currentsettings:
O Compileroptions:
-FR-mp1-w-prec_div-pc80-pad-align-DINTEL_VML-traceback
L LinkerFlags:
$(FOPT)-L/home/soft/intel/mkl/10.1.2.024/lib/em64t/-pthread-i-static
P Preprocessorflags '-DParallel'
mkl的库用静态的:
R R_LIB(LAPACK+BLAS):
/home/soft/intel/mkl/10.1.2.024/lib/em64t/libmkl_lapack.a/home/soft/intel/mkl/10.1.2.024/lib/em64t/libguide.a/home/soft/intel/mkl/10.1.2.024/lib/em64t/libmkl_core.a/home/soft/intel/mkl/10.1.2.024/lib/em64t/libmkl_em64t.a
configureParallelexecution
SharedMemoryArchitecture?
(y/n):
n
Remoteshell(defaultisssh)=ssh
DoyouhaveMPIandScalapackinstalledandintendtorun
finegrainedparallel?
(ThisisusefullonlyforBIGcases)!
(y/n)n
Currentselection:
mpiifort
Currentsettings:
采用静态库
RP RP_LIB(SCALAPACK+PBLAS):
-lmkl_intel_lp64/home/soft/intel/mkl/10.1.2.024/lib/em64t/libmkl_scalapack_lp64.a/home/soft/intel/mkl/10.1.2.024/lib/em64t/libmkl_sequential.a/home/soft/intel/mkl/10.1.2.024/lib/em64t/libmkl_blacs_lp64.a/home/soft/mathlib/fftwv215-mpich/lib/libfftw_mpi.a/home/soft/mathlib/fftwv215-mpich/lib/libfftw.a-lmkl/home/soft/intel/mkl/10.1.2.024/lib/em64t/libguide.a
//
RP RP_LIB(SCALAPACK+PBLAS):
-lmkl_intel_lp64/home/soft/intel/mkl/10.1.2.024/lib/em64t/libmkl_scalapack_lp64.a/home/soft/intel/mkl/10.1.2.024/lib/em64t/libmkl_sequential.a/home/soft/intel/mkl/10.1.2.024/lib/em64t/libmkl_blacs_lp64.a-L/data1/soft/lib/lib/-lfftw_mpi-lfftw-lmkl/data1/soft/intel/mkl/10.0.3.020/lib/em64t/libguide.a
FP FPOPT(p.options):
$(FOPT)
MP MPIRUNcommando :
mpirun-np_NP_-machinefile_HOSTS__EXEC_
DimensionParameters
该部分可以采用默认值,也可以设置为(4GB以上内存)
PARAMETER (NMATMAX= 30000)
PARAMETER (NUME= 1000)
进入编译部分:
Compile/Recompile
A Compileallprograms(suggested)
主要在编译mpi并行版本的5个可执行文件时会出错,因此编译后需要检查以下文件是否存在:
./SRC_lapw0/lapw0_mpi
./SRC_lapw1/lapw1_mpi
./SRC_lapw1/lapw1c_mpi
./SRC_lapw2/lapw2_mpi
./SRC_lapw2/lapw2c_mpi
11、 安装后设置
./userconfig_lapw
editorshallbe:
vi
其余都回车
修改.bashrc,注释以下这行:
#ulimit-sunlimited
修改parallel_options
setenvWIEN_MPIRUN“mpirun-machinefile_HOSTS_-np_NP__EXEC_”
12、 配置web界面
用root用户打开apache服务
serviceapache2start
在普通用户下执行
w2web
将打开7890端口作为wien2k的web界面
13、 算例测试
进行串行计算:
以系统自带算例TiC为例:
cdTiC
mkdirTiC
cp../TiC.struct.
生成原子信息:
instgen_lapw
初始化算例:
init_lapw–b
计算:
run_lapw
可以看到程序的输出结果在*.output中,如有错误可以在TiC.dayfile中查询。
进行并行计算:
测试并行环境是否设置:
testpara_lapw
测试算例计算状态:
testpara1_lapw
testpara2_lapw
根据.machines文件不同决定进行k点或mpi并行计算:
K点:
granularity:
1
1:
node31:
1
1:
node31:
1
1:
node32:
1
1:
node32:
1
lapw0:
node31:
2node32:
2
extrafine:
1
mpi:
granularity:
1
1:
node31:
2
1:
node32:
2
lapw0:
node31:
2node32:
2
extrafine:
1
计算:
run_lapw-p
14、 采用作业调度提交作业
catwien2k.pbs
###########################################################################
# #
#Scriptforsubmittingparallelwien2k_09jobstoDawningcluster. #
# #
###########################################################################
###########################################################################
#Linesthatbeginwith#PBSarePBSdirectives(notcomments).
#Truecommentsbeginwith"#"(i,e.,#followedbyaspace).
###########################################################################
#PBS-S/bin/bash
#PBS-NTiO2
#PBS-joe
#PBS-lnodes=1:
ppn=8
#PBS-V
#############################################################################
# -S:
shellthejobwillrununder
# -o:
nameofthequeueerrorfilename
# -j:
mergesstdoutandstderrtothesamefile
# -l:
resourcesrequiredbythejob:
numberofnodesandprocessorspernode
# -l:
resourcesrequiredbythejob:
maximunjobtimelength
#############################################################################
#########parallelmodeismpi/kpoint############
PARALLEL=mpi //表示采用mpi并行或k点并行
echo$PARALLEL
################################################
NP=`cat${PBS_NODEFILE}|wc-l`
NODE_NUM=`cat$PBS_NODEFILE|uniq |wc-l`
NP_PER_NODE=`expr$NP/$NODE_NUM`
username=`whoami`
exportWIENROOT=/home/users/mjhe/wien2k_09/
exportPATH=$PATH:
$WIENROOT:
.
WIEN2K_RUNDIR=/scratch/${username}.${PBS_JOBID}
exportSCRATCH=${WIEN2K_RUNDIR}
#creatscratchdir
if[!
-a$WIEN2K_RUNDIR];then
echo"Scratchdirectory$WIEN2K_RUNDIRcreated."
mkdir-p$WIEN2K_RUNDIR
fi
cd$PBS_O_WORKDIR
###############creating.machines################
case$PARALLELin
mpi)
echo"granularity:
1">.machines
foriin`cat$PBS_NODEFILE|uniq`
do
echo"1:
"$i":
"$NP_PER_NODE>>.machines
done
printf"lapw0:
">>.machines
#####lapw0用mpi并行#############
foriin`cat${PBS_NODEFILE}|uniq`
do
printf$i:
$NP_PER_NODE"">>.machines
done
#################################
####lapw0用mpi并行报错的算例用以下mpierrorlapw0########
# printf`cat${PBS_NODEFILE}|uniq|head-1`:
1>>.machines
#############end#################
printf"\n">>.machines
echo"extrafine:
1">>.machines
;;
kpoint)
echo"granularity:
1">.machines
foriin`cat$PBS_NODEFILE`
do
echo"1:
"$i":
"1>>.machines
done
printf"lapw0:
">>.machines
#####lapw0用mpi并行#############
foriin`cat${PBS_NODEFILE}|uniq`
do
printf$i:
$NP_PER_NODE"">>.machines
done
#################################
####lapw0用mpi并行报错的算例用以下mpierrorlapw0########
# printf`cat${PBS_NODEFILE}|uniq|head-1`:
1>>.machines
#############end#################
printf"\n">>.machines
echo"extrafine:
1">>.machines
;;
esac
#################endcreating####################
#######Runtheparallelexecutable"WIEN2K"#########
instgen_lapw
init_lapw-b
clean-s
echo"##################starttimeis`date`########################"
run_lapw-p
echo"###################endtimeis`date`########################"
rm-rf$WIEN2K_RUNDIR
########################END########################
一般需要修改的地方已用红字标出
该脚本可以实现算例的初始化,必须在存在*.struct的前提下进行。
15、 性能benchmark
CB65
Shanghai2382:
16GB147GBSAS
1000Gb/mpichv1.2.7
TiO2算例:
NMATMAX=30000
2进程k点,mpi并行lapw0、k点并行lapw1、lapw2模块
4m44s
4进程k点,mpi并行lapw0、k点并行lapw1、lapw2模块
4m30s
8进程k点,mpi并行lapw0、k点并行lapw1、lapw2模块
6m29s
2进程mpi,mpi并行lapw0、lapw1、lapw2模块
7m53s
4进程mpi,mpi并行lapw0、lapw1、lapw2模块
6m56s
8进程mpi,mpi并行lapw0、lapw1、lapw2模块
9m5s
标准测试算例:
官方提供的测试算例:
串行:
test_case
exportOMP_NUM_THREADS=1
timexlapw1–c
SUMOFWALLCLOCKTIMES:
135.0(INIT= 1.0+K-POINTS= 133.9)
exportOMP_NUM_THREADS=4
timexlapw1–c
SUMOFWALLCLOCKTIMES:
62.0(INIT= 1.0+K-POINTS= 61.0)
exportOMP_NUM_THREADS=8
timexlapw1–c
SUMOFWALLCLOCKTIMES:
56.2(INIT= 1.0+K-POINTS= 55.2)
并行:
timexlapw1–p
test_case
2kpoint:
test_case.output1:
SUMOFWALLCLOCKTIMES:
62.0(INIT= 1.0+K-POINTS= 61.0)
test_case.output1_1:
SUMOFWALLCLOCKTIMES:
138.5(INIT= 1.0+K-POINTS= 137.5)
4kpoint:
test_case.output1:
SUMOFWALLCLOCKTIMES:
62.0(INIT= 1.0+K-POINTS= 61.0)
test_case.output1_1:
SUMOFWALLCLOCKTIMES:
134.9(INIT= 1.0+K-POINTS= 133.9)
mpi-benchmark
2process:
mpi-benchmark.output1_1:
TIMEHAMILT(CPU) = 134.1,HNS=116.4,HORB=0.0,DIAG=697.5
mpi-benchmark.output1_1:
TOTALCPU TIME:
950.0(INIT= 1.9+K-POINTS= 948.1)
mpi-benchmark.output1_1:
SUMOFWALLCLOCKTIMES:
1138.9(INIT=2.2+K-POINTS=1136.7)
4process:
mpi-benchmark.output1_1:
TIMEHAMILT(CPU) = 67.8,HNS= 70.5,HORB= 0.0,DIAG= 420.6
mpi-benchmark.output1_1:
TOTALCPU T
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- WIEN2K 并行 编译 过程