diff --git a/container/openeuler.wannier90.arm.cpu.config.def b/container/openeuler.wannier90.arm.cpu.config.def new file mode 100644 index 0000000000000000000000000000000000000000..4764063ba81caedef2d818d07f01e2c502e0accb --- /dev/null +++ b/container/openeuler.wannier90.arm.cpu.config.def @@ -0,0 +1,35 @@ +BootStrap: docker +From: openeuler/openeuler + +%environment + source /etc/profile || true + cd /hpcrunner + source env.sh + +%post + # Install the necessary development environment + yum install -y environment-modules git dmidecode pciutils wget vim + # Install base gcc + yum install -y gcc gcc-c++ gcc-gfortran glibc-devel make libgfortran unzip cmake python lapack lapack-devel + # install network package + yum install -y tcsh tcl lsof tk bc + source /etc/profile || true + git config --global http.sslVerify false + git clone https://gitee.com/openeuler/hpcrunner + cd hpcrunner + source ./init.sh + # add your personal files here + export LD_LIBRARY_PATH=/usr/local/lib64:$LD_LIBRARY_PATH + sed -i '6c tar -xvf ${JARVIS_DOWNLOAD}/v3.10.1.tar.gz' package/lapack/3.10.1/install.sh + # Switch config + ./jarvis -use templates/wannier90/3.1.0/data.wannier90.arm.cpu.kgcc.config + # download dependency + ./jarvis -d + # install dependency + ./jarvis -dp + # build hpc + ./jarvis -b + # run hpc + ./jarvis -r + # clean tmp directory + rm -rf downloads tmp diff --git a/container/openeuler.wannier90.x86.cpu.config.def b/container/openeuler.wannier90.x86.cpu.config.def new file mode 100644 index 0000000000000000000000000000000000000000..0110ab10a8c07a9a3cd45782398b066a34f4aaa1 --- /dev/null +++ b/container/openeuler.wannier90.x86.cpu.config.def @@ -0,0 +1,36 @@ +BootStrap: docker +From: openeuler/openeuler + +%environment + source /etc/profile || true + cd /hpcrunner + source env.sh + +%post + # Install the necessary development environment + yum install -y environment-modules git dmidecode pciutils wget vim + # Install base gcc + yum install -y gcc gcc-c++ gcc-gfortran glibc-devel make libgfortran python lapack lapack-devel + # install network package + yum install -y tcsh tcl lsof tk bc + source /etc/profile || true + git config --global http.sslVerify false + git clone https://gitee.com/openeuler/hpcrunner + cd hpcrunner + source ./init.sh + # add your personal files here + sed -i '12c make -j2 && make install' package/gcc/10.3.0/install.sh + sed -i '$c make -j2 install' package/openmpi/4.1.2/install.sh + sed -i '6c tar -xvf ${JARVIS_DOWNLOAD}/v3.10.1.tar.gz' package/lapack/3.10.1/install.sh + # Switch config + ./jarvis -use templates/wannier90/3.1.0/data.wannier90.amd.cpu.config + # download dependency + ./jarvis -d + # install dependency + ./jarvis -dp + # build hpc + ./jarvis -b + # run hpc + ./jarvis -r + # clean tmp directory + rm -rf downloads tmp diff --git "a/doc/wannier90/\343\200\212\345\237\272\344\272\216openEuler\347\232\204wannier90\350\275\257\344\273\266\346\265\213\350\257\225\346\212\245\345\221\212\343\200\213.md" "b/doc/wannier90/\343\200\212\345\237\272\344\272\216openEuler\347\232\204wannier90\350\275\257\344\273\266\346\265\213\350\257\225\346\212\245\345\221\212\343\200\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..4ea6e7bda93fd9e6825b3d3398e29f92e5f0a7fa --- /dev/null +++ "b/doc/wannier90/\343\200\212\345\237\272\344\272\216openEuler\347\232\204wannier90\350\275\257\344\273\266\346\265\213\350\257\225\346\212\245\345\221\212\343\200\213.md" @@ -0,0 +1,1119 @@ +# 《基于openEuler的QMCPACK软件测试报告》 + +## 1.规范性自检 + +项目使用了fprettify对文件进行格式化 + +fprettify 是现代化的 Fortran 代码的自动格式化程序,它采用 Python 编写,对Fortran代码进行严格的空格格式化 + +格式化范例如下,设置中限制了一行最大字符数,所以并非所有行进行了代码添加。 + +``` +program demo +integer :: endif,if,elseif +integer,DIMENSION(2) :: function +endif=3;if=2 +if(endif==2)then +endif=5 +elseif=if+4*(endif+& +2**10) +elseif(endif==3)then +function(if)=endif/elseif +print*,endif +endif +end program +------------------fprettify---------------------------- +program demo + integer :: endif, if, elseif + integer, DIMENSION(2) :: function + endif = 3; if = 2 + if (endif == 2) then + endif = 5 + elseif = if + 4*(endif + & + 2**10) + elseif (endif == 3) then + function(if) = endif/elseif + print *, endif + endif +end program +``` + +对于当前项目,检查代码规范性,可以通过使用fprettify对所有源码进行重新格式化,然后使用git查看文件修改。 + +统计代码不规范内容。 + +### 1.1.选择统计文件类型 + +统计项目文件类型及其文件数量 + +使用python编写脚本文件 + +```python +import os + +print(os.getcwd()) + +def getAllFiles(targetDir): + files = [] + listFiles = os.listdir(targetDir) + for i in range(0, len(listFiles)): + path = os.path.join(targetDir, listFiles[i]) + if os.path.isdir(path): + files.extend(getAllFiles(path)) + elif os.path.isfile(path): + files.append(path) + return files + +all_files = getAllFiles(os.curdir) +type_dict = dict() + +for each_file in all_files: + if os.path.isdir(each_file): + type_dict.setdefault("directory", 0) + type_dict["directory"] += 1 + else: + ext = os.path.splitext(each_file)[1] + type_dict.setdefault(ext, 0) + type_dict[ext] += 1 + +for each_type in dict(sorted(type_dict.items(), reverse=True, key=lambda item: item[1])).keys(): + print("当前文件夹下共有[%s]的文件%d个" % (each_type, type_dict[each_type])) +``` + +在qmcpack项目根目录下运行,运行结果如下 + +```bash +python run.py +/root/hpcrunner/downloads/wannier90-3.1.0 +当前文件夹下共有[]的文件74个 +当前文件夹下共有[.sh]的文件8个 +当前文件夹下共有[.f90]的文件19个 +当前文件夹下共有[.in]的文件2个 +当前文件夹下共有[.pl]的文件1个 +当前文件夹下共有[.travisci]的文件1个 +当前文件夹下共有[.kpt]的文件9个 +当前文件夹下共有[.gnu]的文件6个 +当前文件夹下共有[.g95]的文件1个 +当前文件夹下共有[.wpout-NOA]的文件2个 +当前文件夹下共有[.gfort]的文件2个 +当前文件夹下共有[.md]的文件6个 +当前文件夹下共有[.inc_more]的文件1个 +当前文件夹下共有[.py]的文件57个 +当前文件夹下共有[.mod]的文件33个 +当前文件夹下共有[.chk]的文件58个 +当前文件夹下共有[.wpout]的文件29个 +当前文件夹下共有[.macports]的文件1个 +当前文件夹下共有[.proj]的文件1个 +当前文件夹下共有[.sym]的文件2个 +当前文件夹下共有[.win]的文件1108个 +当前文件夹下共有[.mmn]的文件64个 +当前文件夹下共有[.fig]的文件1个 +当前文件夹下共有[.UPF]的文件27个 +当前文件夹下共有[.yaml]的文件1个 +当前文件夹下共有[.yml]的文件2个 +当前文件夹下共有[.ifort_tcm]的文件1个 +当前文件夹下共有[.gfort+openmpi]的文件1个 +当前文件夹下共有[.amn]的文件69个 +当前文件夹下共有[.rst]的文件2个 +当前文件夹下共有[.dat]的文件87个 +当前文件夹下共有[.inc]的文件24个 +当前文件夹下共有[.x]的文件3个 +当前文件夹下共有[.log]的文件31个 +当前文件夹下共有[.pathscale]的文件1个 +当前文件夹下共有[.pw2wan]的文件43个 +当前文件夹下共有[.1]的文件24个 +当前文件夹下共有[.scf]的文件39个 +当前文件夹下共有[.spn]的文件6个 +当前文件夹下共有[.out]的文件4个 +当前文件夹下共有[.ifort]的文件1个 +当前文件夹下共有[.eps]的文件16个 +当前文件夹下共有[.vdw]的文件4个 +当前文件夹下共有[.nag]的文件1个 +当前文件夹下共有[.upf]的文件1个 +当前文件夹下共有[.wout]的文件12个 +当前文件夹下共有[.inp]的文件5个 +当前文件夹下共有[.xlf]的文件1个 +当前文件夹下共有[.eig]的文件67个 +当前文件夹下共有[.wpout-gyrotropic]的文件2个 +当前文件夹下共有[.F90]的文件31个 +当前文件夹下共有[.bib]的文件2个 +当前文件夹下共有[.qe]的文件1个 +当前文件夹下共有[.nscf]的文件41个 +当前文件夹下共有[.pgf90]的文件1个 +当前文件夹下共有[.2]的文件1个 +当前文件夹下共有[.homebrew]的文件1个 +当前文件夹下共有[.dmn]的文件2个 +当前文件夹下共有[.tex]的文件54个 +当前文件夹下共有[.pyc]的文件33个 +当前文件夹下共有[.png]的文件129个 +当前文件夹下共有[.m]的文件1个 +当前文件夹下共有[.header]的文件1个 +当前文件夹下共有[.o]的文件32个 +当前文件夹下共有[.sun]的文件1个 +当前文件夹下共有[.c]的文件1个 +当前文件夹下共有[.alpha]的文件1个 +当前文件夹下共有[.xyz]的文件2个 +当前文件夹下共有[.uHu]的文件16个 +当前文件夹下共有[.bz2]的文件98个 +当前文件夹下共有[.dynlib]的文件1个 +当前文件夹下共有[.gz]的文件2个 +当前文件夹下共有[.txt]的文件10个 +当前文件夹下共有[.pov]的文件1个 +当前文件夹下共有[.install]的文件1个 +当前文件夹下共有[.pdf]的文件83个 +当前文件夹下共有[.args=-pp]的文件68个 + +``` + +查看上述结果可知主要源码文件后缀名为 `F90`,`f90`,`py`,`sh`,`gfort`。 + +### 1.2.统计源码总行数 + +统计所有源码文件的代码行数 + +```bash + find ./ -regex ".*\.F90\|.*\.f90\|.*\.py"\|.*\.sh"\|.*\.gfort"\ + | xargs wc -l +``` + +统计结果 + +```bash + 82082 total +``` + +### 1.3.统计不符合要求的总行数 + +对文件后缀名为 `f90`,`hpp`,`h`,`py`,`sh`,`c`,`csh`,`cc`,`pl`, 的所有文件进行格式 +通过git与clang-format结合的方式进行统计 + +```bash +[root@ecs-4200 wannier90]#fprettify -r ./ +57 files changed, 96082 insertions(+), 96213 deletions(-) + rewrite pwscf/v3.2.3/pw2wannier90.f90 (78%) + rewrite pwscf/v4.0/pw2wannier90.f90 (73%) + rewrite pwscf/v4.1/pw2wannier90.f90 (73%) + rewrite pwscf/v5.0/pw2wannier90.f90 (79%) + rewrite pwscf/v6.0/pw2wannier90.f90 (77%) + rewrite pwscf/v6.2.1/pw2wannier90.f90 (77%) + rewrite pwscf/v6.3/pw2wannier90.f90 (76%) + rewrite pwscf/v6.3/pw2wannier90_legacy.f90 (77%) + rewrite pwscf/v6.4/pw2wannier90.f90 (76%) + rewrite pwscf/v6.5/pw2wannier90.f90 (76%) + rewrite src/comms.F90 (85%) + rewrite src/constants.F90 (60%) + rewrite src/disentangle.F90 (88%) + rewrite src/error.F90 (77%) + rewrite src/hamiltonian.F90 (88%) + rewrite src/io.F90 (80%) + rewrite src/kmesh.F90 (90%) + rewrite src/overlap.F90 (75%) + rewrite src/plot.F90 (91%) + rewrite src/postw90/berry.F90 (92%) + rewrite src/postw90/boltzwann.F90 (87%) + rewrite src/postw90/dos.F90 (65%) + rewrite src/postw90/geninterp.F90 (86%) + rewrite src/postw90/get_oper.F90 (92%) + rewrite src/postw90/gyrotropic.F90 (94%) + rewrite src/postw90/kpath.F90 (93%) + rewrite src/postw90/kslice.F90 (89%) + rewrite src/postw90/postw90.F90 (89%) + rewrite src/postw90/postw90_common.F90 (85%) + rewrite src/postw90/postw90_readwrite.F90 (93%) + rewrite src/postw90/postw90_types.F90 (61%) + rewrite src/postw90/spin.F90 (88%) + rewrite src/postw90/wan_ham.F90 (91%) + rewrite src/readwrite.F90 (88%) + rewrite src/sitesym.F90 (92%) + rewrite src/transport.F90 (90%) + rewrite src/utility.F90 (84%) + rewrite src/w90chk2chk.F90 (91%) + rewrite src/w90spn2spn.F90 (85%) + rewrite src/wannier90_readwrite.F90 (93%) + rewrite src/wannier90_types.F90 (61%) + rewrite src/wannier_lib.F90 (82%) + rewrite src/wannier_prog.F90 (83%) + rewrite src/wannierise.F90 (86%) + rewrite src/ws_distance.F90 (81%) + rewrite test-suite/library-mode-test/test_library.F90 (88%) + rewrite utility/PL_assessment/PL_assess.f90 (81%) + rewrite utility/w90pov/src/driver.f90 (95%) + rewrite utility/w90pov/src/io.f90 (85%) + rewrite utility/w90vdw/w90vdw.f90 (86%) +``` + +### 1.4.统计结果 + +综上信息,项目中代码规范性自检检查结果为 + +通过率 : 0.2% 1-96213/96400*100% + +不通过率 : 99.8% 96213/96400*100% + +## 2.功能性测试 + +### 2.1.所选测试案例 + +qmcpack内置了大量的单元测试,可以使用其进行单元测试文件内容。 + +单元测试文件列表(部分)如下 + +```bash +[root@host- build]# tree tests +test-suite/ +├── checkpoints +│ ├── cu_postw90 +│ │ └── copper.chk.fmt.bz2 +│ ├── example02 +│ │ ├── lead.amn +│ │ ├── lead.chk.fmt.bz2 +│ │ ├── lead.eig +│ │ ├── lead.mmn +│ │ ├── lead.win +│ │ └── Makefile +│ ├── fe_postw90 +│ │ ├── Fe.amn +│ │ ├── Fe.chk.fmt.bz2 +│ │ ├── Fe.eig +│ │ ├── Fe.mmn.bz2 +│ │ ├── Fe.uHu.bz2 +│ │ ├── Fe.win +│ │ └── Makefile +│ ├── gaas_postw90 +│ │ ├── gaas.amn +│ │ ├── gaas.chk.fmt.bz2 +│ │ ├── gaas.eig +│ │ ├── gaas.mmn +│ │ ├── gaas.mmn.bz2 +│ │ ├── gaas.win +│ │ └── Makefile +│ ├── gaas_shc_postw90 +│ │ ├── GaAs.amn.bz2 +│ │ ├── GaAs.chk.fmt.bz2 +│ │ ├── GaAs.eig +│ │ ├── GaAs.mmn.bz2 +│ │ ├── GaAs.win +│ │ └── Makefile +│ ├── pt_shc_postw90 +│ │ ├── Makefile +│ │ ├── Pt.amn.bz2 +│ │ ├── Pt.chk.fmt.bz2 +│ │ ├── Pt.eig +│ │ ├── Pt.mmn.bz2 +│ │ ├── Pt.spn.bz2 +│ │ └── Pt.win +│ ├── README.txt +│ ├── si_geninterp +│ │ ├── Makefile +│ │ ├── silicon.amn +│ │ ├── silicon.chk.fmt.bz2 +│ │ ├── silicon.eig +│ │ ├── silicon.mmn.bz2 +│ │ └── silicon.win +│ ├── si_geninterp_wsdistance +│ │ ├── Makefile +│ │ ├── silicon.amn +│ │ ├── silicon.chk.fmt.bz2 +│ │ ├── silicon.eig +│ │ └── silicon.win +│ └── te_postw90 +│ ├── Te.chk.fmt.bz2 +│ └── Te.uHu.bz2 +├── clean_tests +├── config +│ ├── README.md +│ └── TestFarm +│ ├── farm2_gcc520.inc +│ ├── farm2_intel13.inc +│ ├── farm2_intel15.inc +│ ├── farm2_nag6.inc +│ ├── farm2_pgi15.inc +│ ├── farmer3_gcc493.inc +│ ├── farmer3_intel15.inc +│ ├── farmer4_gcc485_openblas.inc +│ ├── farmer_gcc485.inc +│ ├── farmer_gcc485_serial.inc +│ ├── farmer_gcc640_serial.inc +│ ├── farmer_gcc730_openmpi1107.inc +│ ├── farmer_intel12.inc +│ ├── farmer_intel13.inc +│ ├── farmer_intel15.inc +│ ├── farmer_intel17_impi.inc +│ ├── farmer_intel17_openmpi313.inc +│ ├── farmer_intel18_openmpi313.inc +│ └── farmer_pgi18_mvapich23b.inc +├── library-mode-test +│ ├── CELL +│ ├── compare_results.py +│ ├── EIG +│ ├── gaas.amn +│ ├── gaas.eig +│ ├── gaas.mmn +│ ├── gaas.win +│ ├── KPOINTS +│ ├── Makefile +│ ├── PARAMS +│ ├── POSITIONS +│ ├── README +│ ├── ref +│ │ ├── gaas.amn -> ../gaas.amn +│ │ ├── gaas.eig -> ../gaas.eig +│ │ ├── gaas.mmn -> ../gaas.mmn +│ │ ├── gaas_ref.wout +│ │ ├── gaas.win -> ../gaas.win +│ │ ├── README.txt +│ │ └── results_ref.dat +│ ├── run.sh +│ └── test_library.F90 +├── README.md +├── run_tests +├── testcode +│ ├── bin +│ │ └── testcode.py +│ ├── lib +│ │ └── testcode2 +│ │ ├── ansi.py +│ │ ├── compatibility.py +│ │ ├── config.py +│ │ ├── dir_lock.py +│ │ ├── exceptions.py +│ │ ├── _functools_dummy.py +│ │ ├── __init__.py +│ │ ├── queues.py +│ │ ├── util.py +│ │ ├── validation.py +│ │ └── vcs.py +│ ├── LICENSE +│ └── README.rst +├── testcode-README.txt +├── tests +│ ├── jobconfig +│ ├── partestw90_mpierr +│ │ ├── benchmark.out.default.inp=wannier.win +│ │ ├── wannier.amn +│ │ ├── wannier.mmn +│ │ └── wannier.win +│ ├── testpostw90_boltzwann +│ │ ├── benchmark.out.default.inp=silicon.win +│ │ ├── Makefile +│ │ ├── silicon.amn +│ │ ├── silicon.chk.fmt.bz2 -> ../../checkpoints/si_geninterp_wsdistance/silicon.chk.fmt.bz2 +│ │ ├── silicon.eig +│ │ ├── silicon.mmn.bz2 -> ../../checkpoints/si_geninterp/silicon.mmn.bz2 +│ │ └── silicon.win +│ ├── testpostw90_example04_dos +│ │ ├── benchmark.out.default.inp=copper.win +│ │ ├── copper.chk.fmt.bz2 -> ../../checkpoints/cu_postw90/copper.chk.fmt.bz2 +│ │ ├── copper.eig +│ │ ├── copper.win +│ │ └── Makefile +│ ├── testpostw90_example04_pdos +│ │ ├── benchmark.out.default.inp=copper.win +│ │ ├── copper.chk.fmt.bz2 -> ../../checkpoints/cu_postw90/copper.chk.fmt.bz2 +│ │ ├── copper.eig +│ │ ├── copper.win +│ │ └── Makefile +│ ├── testpostw90_fe_ahc +│ │ ├── benchmark.out.default.inp=Fe.win +│ │ ├── Fe.amn +│ │ ├── Fe.chk.fmt.bz2 -> ../../checkpoints/fe_postw90/Fe.chk.fmt.bz2 +│ │ ├── Fe.eig +│ │ ├── Fe.mmn.bz2 -> ../../checkpoints/fe_postw90/Fe.mmn.bz2 +│ │ ├── Fe.win +│ │ └── Makefile +│ ├── testpostw90_fe_ahc_adaptandfermi +│ │ ├── benchmark.out.default.inp=Fe.win +│ │ ├── Fe.amn -> ../testpostw90_fe_ahc/Fe.amn +│ │ ├── Fe.chk.fmt.bz2 -> ../testpostw90_fe_ahc/Fe.chk.fmt.bz2 +│ │ ├── Fe.eig -> ../testpostw90_fe_ahc/Fe.eig +│ │ ├── Fe.mmn.bz2 -> ../testpostw90_fe_ahc/Fe.mmn.bz2 +│ │ ├── Fe.win +│ │ └── Makefile +│ ├── testpostw90_fe_dos_spin +│ │ ├── benchmark.out.default.inp=Fe.win +│ │ ├── Fe.amn -> ../../checkpoints/fe_postw90/Fe.amn +│ │ ├── Fe.chk.fmt.bz2 -> ../../checkpoints/fe_postw90/Fe.chk.fmt.bz2 +│ │ ├── Fe.eig -> ../../checkpoints/fe_postw90/Fe.eig +│ │ ├── Fe.mmn.bz2 -> ../../checkpoints/fe_postw90/Fe.mmn.bz2 +│ │ ├── Fe.spn +│ │ ├── Fe.win +│ │ └── Makefile +│ ├── testpostw90_fe_kpathcurv +│ │ ├── benchmark.out.default.inp=Fe.win +│ │ ├── Fe.amn +│ │ ├── Fe.chk.fmt.bz2 -> ../../checkpoints/fe_postw90/Fe.chk.fmt.bz2 +│ │ ├── Fe.eig +│ │ ├── Fe.mmn.bz2 -> ../../checkpoints/fe_postw90/Fe.mmn.bz2 +│ │ ├── Fe.uHu.bz2 -> ../../checkpoints/fe_postw90/Fe.uHu.bz2 +│ │ ├── Fe.win +│ │ └── Makefile +│ ├── testpostw90_fe_kpathmorbcurv +│ │ ├── benchmark.out.default.inp=Fe.win +│ │ ├── Fe.amn +│ │ ├── Fe.chk.fmt.bz2 -> ../../checkpoints/fe_postw90/Fe.chk.fmt.bz2 +│ │ ├── Fe.eig +│ │ ├── Fe.mmn.bz2 -> ../../checkpoints/fe_postw90/Fe.mmn.bz2 +│ │ ├── Fe.uHu.bz2 -> ../../checkpoints/fe_postw90/Fe.uHu.bz2 +│ │ ├── Fe.win +│ │ └── Makefile +│ ├── testpostw90_fe_kpathmorbcurv_ws +│ │ ├── benchmark.out.default.inp=Fe.win +│ │ ├── Fe.amn -> ../../checkpoints/fe_postw90/Fe.amn +│ │ ├── Fe.chk.fmt.bz2 -> ../../checkpoints/fe_postw90/Fe.chk.fmt.bz2 +│ │ ├── Fe.eig -> ../../checkpoints/fe_postw90/Fe.eig +│ │ ├── Fe.mmn.bz2 -> ../../checkpoints/fe_postw90/Fe.mmn.bz2 +│ │ ├── Fe.uHu.bz2 -> ../../checkpoints/fe_postw90/Fe.uHu.bz2 +│ │ ├── Fe.win +│ │ └── Makefile +│ ├── testpostw90_fe_kslicecurv +│ │ ├── benchmark.out.default.inp=Fe.win +│ │ ├── Fe.amn +│ │ ├── Fe.chk.fmt.bz2 -> ../../checkpoints/fe_postw90/Fe.chk.fmt.bz2 +│ │ ├── Fe.eig +│ │ ├── Fe.mmn.bz2 -> ../../checkpoints/fe_postw90/Fe.mmn.bz2 +│ │ ├── Fe.uHu.bz2 -> ../../checkpoints/fe_postw90/Fe.uHu.bz2 +│ │ ├── Fe.win +│ │ └── Makefile +... +``` + +在项目根目录下执行命令来运行单元测试和确定性测试 + +```bash +export OMPI_ALLOW_RUN_AS_ROOT=1 +export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 +make tests +``` + +### 2.2.运行结果 + +```bash +(cd ./src/obj && make -f ../Makefile.2 w90chk2chk) +make[1]: Entering directory '/root/hpcrunner/software/libs/wannier90/src/obj' +make[1]: Nothing to be done for 'w90chk2chk'. +make[1]: Leaving directory '/root/hpcrunner/software/libs/wannier90/src/obj' +(cd ./src/obj && make -f ../Makefile.2 wannier) +make[1]: Entering directory '/root/hpcrunner/software/libs/wannier90/src/obj' +make[1]: Nothing to be done for 'wannier'. +make[1]: Leaving directory '/root/hpcrunner/software/libs/wannier90/src/obj' +(cd ./src/obj && make -f ../Makefile.2 post) +make[1]: Entering directory '/root/hpcrunner/software/libs/wannier90/src/obj' +make[1]: Nothing to be done for 'post'. +make[1]: Leaving directory '/root/hpcrunner/software/libs/wannier90/src/obj' +(cd ./test-suite && ./run_tests --category=default ) +Using executable: /root/hpcrunner/software/libs/wannier90/test-suite/tests/../../wannier90.x. +Using executable: /root/hpcrunner/software/libs/wannier90/test-suite/tests/../../postw90.x. +Test id: 25092022-2. +Benchmark: default. + +tests/testpostw90_boltzwann - silicon.win: Passed. + +tests/testpostw90_example04_dos - copper.win: Passed. + +tests/testpostw90_example04_pdos - copper.win: Passed. + +tests/testpostw90_fe_ahc - Fe.win: Passed. + +tests/testpostw90_fe_ahc_adaptandfermi - Fe.win: Passed. + +tests/testpostw90_fe_dos_spin - Fe.win: Passed. + +tests/testpostw90_fe_kpathcurv - Fe.win: Passed. + +tests/testpostw90_fe_kpathmorbcurv - Fe.win: Passed. + +tests/testpostw90_fe_kpathmorbcurv_ws - Fe.win: Passed. + +tests/testpostw90_fe_kslicecurv - Fe.win: Passed. + +tests/testpostw90_fe_kslicemorb - Fe.win: Passed. + +tests/testpostw90_fe_kubo_Axy - Fe.win: Passed. + +tests/testpostw90_fe_kubo_Szz - Fe.win: Passed. + +tests/testpostw90_fe_kubo_jdos - Fe.win: Passed. + +tests/testpostw90_fe_morb - Fe.win: Passed. + +tests/testpostw90_fe_morbandahc - Fe.win: Passed. + +tests/testpostw90_fe_spin - Fe.win: Passed. + +tests/testpostw90_gaas_kdotp - gaas.win: Passed. + +tests/testpostw90_gaas_sc_eta_corr - gaas.win: Passed. + +tests/testpostw90_gaas_sc_xyz - gaas.win: Passed. + +tests/testpostw90_gaas_sc_xyz_scphase2 - gaas.win: Passed. + +tests/testpostw90_gaas_sc_xyz_scphase2_ws - gaas.win: Passed. + +tests/testpostw90_gaas_sc_xyz_ws - gaas.win: Passed. + +tests/testpostw90_gaas_shc - GaAs.win: Passed. + +tests/testpostw90_pt_kpathbandsshc - Pt.win: Passed. + +tests/testpostw90_pt_kpathshc - Pt.win: Passed. + +tests/testpostw90_pt_ksliceshc - Pt.win: Passed. + +tests/testpostw90_pt_shc - Pt.win: Passed. + +tests/testpostw90_pt_shc_ryoo - Pt.win: Passed. + +tests/testpostw90_si_geninterp - silicon.win: Passed. + +tests/testpostw90_si_geninterp_wsdistance - silicon.win: Passed. + +tests/testpostw90_te_gyrotropic - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_C - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_D0 - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_Dw - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_K - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_NOA - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_dos - Te.win: Passed. + +tests/testw90_basic1 - wannier.win: Passed. + +tests/testw90_basic2 - wannier.win: Passed. + +tests/testw90_benzene_gamma_val - benzene.win: Passed. + +tests/testw90_benzene_gamma_val_hexcell - benzene.win: Passed. + +tests/testw90_benzene_gamma_valcond - benzene.win: Passed. + +tests/testw90_bvec - lead.win: Passed. + +tests/testw90_cube_format - gaas.win: Passed. + +tests/testw90_disentanglement_sawfs - H3S.win: Passed. + +tests/testw90_example01 - gaas.win: Passed. + +tests/testw90_example02 - lead.win: Passed. + +tests/testw90_example02_restart - lead.win: Passed. + +tests/testw90_example03 - silicon.win: Passed. + +tests/testw90_example03_labelinfo - silicon.win: Passed. + +tests/testw90_example03_optmem - silicon.win: Passed. + +tests/testw90_example04 - copper.win: Passed. + +tests/testw90_example05 - diamond.win: Passed. + +tests/testw90_example07 - silane.win: Passed. + +tests/testw90_example11_1 - silicon.win: Passed. + +tests/testw90_example11_2 - silicon.win: Passed. + +tests/testw90_example21_As_sp - GaAs.win: Passed. + +tests/testw90_example26 - gaas.win: Passed. + +tests/testw90_gaas_disentanglement_issue192 - gaas.win: Passed. + +tests/testw90_lavo3_dissphere - LaVO3.win: Passed. + +tests/testw90_na_chain_gamma - Na_chain.win: Passed. + +tests/testw90_nnkpt1 - wannier.win (arg(s): -pp): Passed. + +tests/testw90_nnkpt2 - wannier.win (arg(s): -pp): Passed. + +tests/testw90_nnkpt3 - wannier.win (arg(s): -pp): Passed. + +tests/testw90_nnkpt4 - wannier.win (arg(s): -pp): Passed. + +tests/testw90_nnkpt5 - wannier.win: Passed. + +tests/testw90_precond_1 - gaas1.win: Passed. + +tests/testw90_precond_2 - gaas2.win: Passed. + +tests/testw90_write_u_matrices - gaas.win: Passed. + +All done. 70 out of 70 tests passed. +(cd ./test-suite && ./run_tests --category=par --numprocs=4 ) +Using executable: /root/hpcrunner/software/libs/wannier90/test-suite/tests/../../wannier90.x. +Using executable: /root/hpcrunner/software/libs/wannier90/test-suite/tests/../../postw90.x. +Test id: 25092022-3. +Benchmark: default. + +tests/partestw90_mpierr - wannier.win: Passed. + +tests/testpostw90_boltzwann - silicon.win: Passed. + +tests/testpostw90_example04_dos - copper.win: Passed. + +tests/testpostw90_example04_pdos - copper.win: Passed. + +tests/testpostw90_fe_ahc - Fe.win: Passed. + +tests/testpostw90_fe_ahc_adaptandfermi - Fe.win: Passed. + +tests/testpostw90_fe_dos_spin - Fe.win: Passed. + +tests/testpostw90_fe_kpathcurv - Fe.win: Passed. + +tests/testpostw90_fe_kpathmorbcurv - Fe.win: Passed. + +tests/testpostw90_fe_kpathmorbcurv_ws - Fe.win: Passed. + +tests/testpostw90_fe_kslicecurv - Fe.win: Passed. + +tests/testpostw90_fe_kslicemorb - Fe.win: Passed. + +tests/testpostw90_fe_kubo_Axy - Fe.win: Passed. + +tests/testpostw90_fe_kubo_Szz - Fe.win: Passed. + +tests/testpostw90_fe_kubo_jdos - Fe.win: Passed. + +tests/testpostw90_fe_morb - Fe.win: Passed. + +tests/testpostw90_fe_morbandahc - Fe.win: Passed. + +tests/testpostw90_fe_spin - Fe.win: Passed. + +tests/testpostw90_gaas_kdotp - gaas.win: Passed. + +tests/testpostw90_gaas_sc_eta_corr - gaas.win: Passed. + +tests/testpostw90_gaas_sc_xyz - gaas.win: Passed. + +tests/testpostw90_gaas_sc_xyz_scphase2 - gaas.win: Passed. + +tests/testpostw90_gaas_sc_xyz_scphase2_ws - gaas.win: Passed. + +tests/testpostw90_gaas_sc_xyz_ws - gaas.win: Passed. + +tests/testpostw90_gaas_shc - GaAs.win: Passed. + +tests/testpostw90_pt_kpathbandsshc - Pt.win: Passed. + +tests/testpostw90_pt_kpathshc - Pt.win: Passed. + +tests/testpostw90_pt_ksliceshc - Pt.win: Passed. + +tests/testpostw90_pt_shc - Pt.win: Passed. + +tests/testpostw90_pt_shc_ryoo - Pt.win: Passed. + +tests/testpostw90_si_geninterp - silicon.win: Passed. + +tests/testpostw90_si_geninterp_wsdistance - silicon.win: Passed. + +tests/testpostw90_te_gyrotropic - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_C - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_D0 - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_Dw - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_K - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_NOA - Te.win: Passed. + +tests/testpostw90_te_gyrotropic_dos - Te.win: Passed. + +tests/testw90_basic1 - wannier.win: Passed. + +tests/testw90_basic2 - wannier.win: Passed. + +tests/testw90_benzene_gamma_val - benzene.win: Passed. + +tests/testw90_benzene_gamma_val_hexcell - benzene.win: Passed. + +tests/testw90_benzene_gamma_valcond - benzene.win: Passed. + +tests/testw90_bvec - lead.win: Passed. + +tests/testw90_cube_format - gaas.win: Passed. + +tests/testw90_disentanglement_sawfs - H3S.win: Passed. + +tests/testw90_example01 - gaas.win: Passed. + +tests/testw90_example02 - lead.win: Passed. + +tests/testw90_example02_restart - lead.win: Passed. + +tests/testw90_example03 - silicon.win: Passed. + +tests/testw90_example03_labelinfo - silicon.win: Passed. + +tests/testw90_example03_optmem - silicon.win: Passed. + +tests/testw90_example04 - copper.win: Passed. + +tests/testw90_example05 - diamond.win: Passed. + +tests/testw90_example07 - silane.win: Passed. + +tests/testw90_example11_1 - silicon.win: Passed. + +tests/testw90_example11_2 - silicon.win: Passed. + +tests/testw90_example21_As_sp - GaAs.win: Passed. + +tests/testw90_example26 - gaas.win: Passed. + +tests/testw90_gaas_disentanglement_issue192 - gaas.win: Passed. + +tests/testw90_lavo3_dissphere - LaVO3.win: Passed. + +tests/testw90_na_chain_gamma - Na_chain.win: Passed. + +tests/testw90_nnkpt1 - wannier.win (arg(s): -pp): Passed. + +tests/testw90_nnkpt2 - wannier.win (arg(s): -pp): Passed. + +tests/testw90_nnkpt3 - wannier.win (arg(s): -pp): Passed. + +tests/testw90_nnkpt4 - wannier.win (arg(s): -pp): Passed. + +tests/testw90_nnkpt5 - wannier.win: Passed. + +tests/testw90_precond_1 - gaas1.win: Passed. + +tests/testw90_precond_2 - gaas2.win: Passed. + +tests/testw90_write_u_matrices - gaas.win: Passed. + +All done. 71 out of 71 tests passed. +``` + +测试结果 + +单元测试运行正常,说明各类型函数和功能都响应正常。测试通过。 + +## 3.性能测试 + +### 3.1.测试平台信息对比 + +todo x86 + +| | arm信息 | x86信息 | +| -------- | --------------------------------- | -------------------------------- | +| 操作系统 | openEuler 20.03 (LTS) | openEuler 20.03 (LTS) | +| 内核版本 | 4.19.90-2003.4.0.0036.oe1.aarch64 | 4.19.90-2112.8.0.0131.oe1.x86_64 | + +### 3.2.测试软件环境信息对比 + +| | arm信息 | x86信息 | +| -------- | ------------- | --------- | +| gcc | kgcc 10.3.1 | gcc 10.3.0 | +| mpi | hmpi1.2.0 | openmpi4.1.2 | +| BLAS | 3.10.0 | 3.10.0 | +| lapack | 3.10.1 | 3.10.1 | + +### 3.3.测试硬件性能信息对比 + +| | arm信息 | x86信息 | +| ------ | ----------- | -------- | +| cpu | Kunpeng 920 | Intel(R) Xeon(R) Gold 6278C CPU @ 2.60GHz | +| 核心数 | 8 | 4 | +| 内存 | 16 GB | 16 GB | +| 磁盘io | 1.3 GB/s | 132.57 MB/s| +| 虚拟化 | KVM | KVM | + +### 3.4.测试选择的案例 + +examples/molecules/H2O 目录下的文件 simple-H2O.xml + +对水分子进行一个简短的扩散蒙特卡罗计算 + +测试文件(部分)如下 + +```xml +! Gallium Arsenide: Tutorial Example 1 + + num_wann = 4 + num_iter = 20 + + +! SYSTEM + +begin unit_cell_cart +bohr +-5.367 0.000 5.367 + 0.000 5.367 5.367 +-5.367 5.367 0.000 +end unit_cell_cart + +begin atoms_frac +Ga 0.00 0.00 0.00 +As 0.25 0.25 0.25 +end atoms_frac + +begin projections +As:sp3 +end projections + +! KPOINTS + +mp_grid : 2 2 2 + +begin kpoints +0.0 0.0 0.0 +0.0 0.0 0.5 +0.0 0.5 0.0 +0.0 0.5 0.5 +0.5 0.0 0.0 +0.5 0.0 0.5 +0.5 0.5 0.0 +0.5 0.5 0.5 +end kpoints + +!We set this flag to read the bloch states from +!a formatted file. This is to ensure the example +!works on all platforms. The default (.false.) state +!should be used on production runs +wvfn_formatted=.true. + +``` + +### 3.6.单线程 + +单线程运行测试时间对比(五次运行取平均值) + +| | arm | x86 | +| ----------- | ---------- | -------- | +| 实际CPU时间 | 4.142s | 2.707s | +| 用户时间 | 4.065s | 2.628s | + +### 3.7.多线程 + +多线程运行测试时间对比(五次运行取平均值) + +| | arm | x86 | +| ----------- | ---------- | --------- | +| 线程数 | 4 | 4 | +| 实际CPU时间 | 0.154s | 0.118s | +| 用户时间 | 0.0289s | 0.202s | + +arm多线程时间耗费数据表: + +| 线程 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | +| :------------ | -------- | ------- | ------- | -------- | ------- | -------- | ------- | ------- | +| 用户时间(s) | 4.142| 2.205 | 1.599 | 1.255 | 1.067 | 0.935 | 0.876 | 0.811 | +| 用户态时间(s) | 4.065 | 4.241 | 4.529 | 4.674 | 4.889 | 5.102 | 5.491 | 5.680 | +| 内核态时间(s) | 0.028 | 0.044 | 0.068 | 0.071 | 0.069 | 0.116 | 0.144 | 0.557 | + +x86多线程时间耗费数据表: + +| 线程 | 1 | 2 | 3 | 4 | +| --------------- | ------ | ------ | ------- | ------- | +| 用户时间 (s) | 2.707 | 1.492 | 1.107 | 0.892 | +| 用户态时间(s) | 2.628 | 2.801 | 3.041 | 3.158 | +| 内核态时间(s) | 0.031 | 0.055 | 0.079 | 0.130 | + +由上表可知,在线程逐渐增加的情况下,所减少的用户时间并非线性关系,线程数增加后,运算用时并未显著下降,且系统调用的时间有较为明显的上升趋势。 + +### 3.8.测试总结 + +arm平台内核态时间,在相同线程数下比x86平台耗费更少。随着线程数的增加,两个平台的对于同一个应用的所耗费的时间差距逐渐减少。 + +且线程增加并不会无限制减少应用的实际耗费时间,在合理的范围内分配线程数才能更好的利用算力资源。 + +## 4.精度测试 + +### 4.1.所选测试案例 + +test-suite/tests/testpostw90_boltzwann 目录下的文件 silicon.win + + +测试文件(部分)如下 + +``` +num_bands = 12 +num_wann = 8 +use_ws_distance = true +search_shells=12 + +boltzwann = true +boltz_calc_also_dos = true +boltz_dos_energy_step = 0.1 +smr_type = gauss +boltz_dos_adpt_smr = false +boltz_dos_smr_fixed_en_width = 0.03 +kmesh = 20 +boltz_mu_min = 5. +boltz_mu_max = 5. +boltz_mu_step = 0.01 +boltz_temp_min = 300. +boltz_temp_max = 300. +boltz_temp_step = 50 +boltz_relax_time = 10. + +dis_win_max = 17.0d0 +dis_froz_max = 6.4d0 +dis_num_iter = 120 +dis_mix_ratio = 1.d0 +dis_conv_tol = 1.0e-13 + +num_iter = 300 +num_print_cycles = 10 + +Begin Atoms_Frac +Si -0.25 0.75 -0.25 +Si 0.00 0.00 0.00 +End Atoms_Frac + +Begin Projections +Si : sp3 +End Projections + +begin kpoint_path +L 0.50000 0.50000 0.5000 G 0.00000 0.00000 0.0000 +G 0.00000 0.00000 0.0000 X 0.50000 0.00000 0.5000 +X 0.50000 -0.50000 0.0000 K 0.37500 -0.37500 0.0000 +K 0.37500 -0.37500 0.0000 G 0.00000 0.00000 0.0000 +end kpoint_path + + +Begin Unit_Cell_Cart +-2.6988 0.0000 2.6988 + 0.0000 2.6988 2.6988 +-2.6988 2.6988 0.0000 +End Unit_Cell_Cart + + +mp_grid = 4 4 4 + + +begin kpoints +0.0000 0.0000 0.0000 +0.0000 0.2500 0.0000 +0.0000 0.5000 0.0000 +0.0000 0.7500 0.0000 +0.2500 0.0000 0.0000 +0.2500 0.2500 0.0000 +0.2500 0.5000 0.0000 +0.2500 0.7500 0.0000 +0.5000 0.0000 0.0000 +0.5000 0.2500 0.0000 +0.5000 0.5000 0.0000 +0.5000 0.7500 0.0000 +0.7500 0.0000 0.0000 +0.7500 0.2500 0.0000 +0.7500 0.5000 0.0000 +0.7500 0.7500 0.0000 +0.0000 0.0000 0.2500 +0.0000 0.2500 0.2500 +0.0000 0.5000 0.2500 +0.0000 0.7500 0.2500 +0.2500 0.0000 0.2500 +0.2500 0.2500 0.2500 +0.2500 0.5000 0.2500 +0.2500 0.7500 0.2500 +0.5000 0.0000 0.2500 +0.5000 0.2500 0.2500 +0.5000 0.5000 0.2500 +0.5000 0.7500 0.2500 +0.7500 0.0000 0.2500 +0.7500 0.2500 0.2500 +0.7500 0.5000 0.2500 +0.7500 0.7500 0.2500 +0.0000 0.0000 0.5000 +0.0000 0.2500 0.5000 +0.0000 0.5000 0.5000 +0.0000 0.7500 0.5000 +0.2500 0.0000 0.5000 +0.2500 0.2500 0.5000 +0.2500 0.5000 0.5000 +0.2500 0.7500 0.5000 +0.5000 0.0000 0.5000 +0.5000 0.2500 0.5000 +0.5000 0.5000 0.5000 +0.5000 0.7500 0.5000 +0.7500 0.0000 0.5000 +0.7500 0.2500 0.5000 +0.7500 0.5000 0.5000 +0.7500 0.7500 0.5000 +0.0000 0.0000 0.7500 +0.0000 0.2500 0.7500 +0.0000 0.5000 0.7500 +0.0000 0.7500 0.7500 +0.2500 0.0000 0.7500 +0.2500 0.2500 0.7500 +0.2500 0.5000 0.7500 +0.2500 0.7500 0.7500 +0.5000 0.0000 0.7500 +0.5000 0.2500 0.7500 +0.5000 0.5000 0.7500 +0.5000 0.7500 0.7500 +0.7500 0.0000 0.7500 +0.7500 0.2500 0.7500 +0.7500 0.5000 0.7500 +0.7500 0.7500 0.7500 +End Kpoints + +``` + +### 4.2.获得对比数据 + +arm 运行结果(部分) + +```bash +# Written by the BoltzWann module of the Wannier90 code. +# [Electrical conductivity in SI units, i.e. in 1/Ohm/m] +# Mu(eV) Temp(K) ElCond_xx ElCond_xy ElCond_yy ElCond_xz ElCond_yz ElCond_zz + 5.000000000 300.0000000 6504318.581 -207173.9444 6669730.424 200281.2121 209188.4582 6478066.903 + +``` + + +x86运行结果 + +```bash +# Written by the BoltzWann module of the Wannier90 code. +# [Electrical conductivity in SI units, i.e. in 1/Ohm/m] +# Mu(eV) Temp(K) ElCond_xx ElCond_xy ElCond_yy ElCond_xz ElCond_yz ElCond_zz + 5.000000000 300.0000000 6504319.606 -207173.9934 6669730.426 200280.1797 209188.5069 6478067.945 +``` + + + +使用以上数据进行误差计算 + +```python + +x86 = [5.000000000,300.0000000 , 6504319.606,-207173.9934 ,6669730.426 ,200280.1797, 209188.5069, 6478067.945 ] +arm = [5.000000000 ,300.0000000 ,6504318.581,-207173.9444,6669730.424 ,200281.2121, 209188.4582, 6478066.903] + +for i in range(len(arm)): + print(abs((x86[i]-arm[i]) / x86[i]) * 100, '%') +``` + +### 4.3.误差运算结果 + +```bash +0.0 % +0.0 % +1.575875820271318e-05 % +2.3651617268612574e-05 % +2.998622433118328e-08 % +0.000515477867826386 % +2.3280437694984702e-05 % +1.608504278145663e-05 % +``` + +### 4.4.测试总结 + +所有运算结果偏差在1%以内,偏差较小。 diff --git "a/doc/wannier90/\343\200\212\345\237\272\344\272\216openEuler\347\232\204wannier90\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" "b/doc/wannier90/\343\200\212\345\237\272\344\272\216openEuler\347\232\204wannier90\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" new file mode 100644 index 0000000000000000000000000000000000000000..3b41af7e2e0c4569b51df224e06a3dfc0caf793c --- /dev/null +++ "b/doc/wannier90/\343\200\212\345\237\272\344\272\216openEuler\347\232\204wannier90\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" @@ -0,0 +1,345 @@ +# 《基于openEuler的QMCPACK软件移植指南》 + +## 1.介绍 + +- wannier90 Wannier90是一个构建局域轨道基组的有力工具,一般用来计算紧束缚模型中的占位能和跳跃积分,再结合杂化泛函或GW方法,插值得到更为准确的能带结构,或者计算极化、输运、拓扑不变量等物理性质 + +- 官网地址: + +- GITHUB托管地址: + +- 特性: + + - Marzari和Vanderbilt的方法(MV) + - 最大局域化瓦尼尔函数计算 + - 使用Souza,Marzari,Vanderbilt的方法(SMV) + - FLAPW的电子结构代码结合使用 + - 还有很多。。。 + +## 2.环境要求 + +- 操作系统:OpenEuler arm/x86 (本文档以 arm 架构为例) + +## 3.配置编译环境 + +配置环境指导,手动进行配置依赖环境。 + +### 3.1.环境总览 + +- 编译器: gcc for openeuler + +- MPI:openmpi + +- 其他类库:`BLAS``Python3`, `lapack` + + 具体版本和下载地址如下 + +| 名称 | 版本 | 软件下载地址 | +| -------- | ------ | ---------------------------------------------------------------------------------------------- | +| hmpi | 1.2.0 | | +| kgcc | 10.3.1 | | +| BLAS | 3.10.1 | | +| Python3 | 3.7.10 | | +| lapack | 3.10.1 | | + +### 3.2.创建文件夹 + +```bash +mkdir -p $HOME/build +mkdir -p $HOME/install +mkdir -p $HOME/tmp +``` + +### 3.3.安装预设 + +设置环境变量,方便修改自定义安装目录 + +- 编译目录为 $HOME/build , 根据实际情况进行修改 +- 软件安装目录为 $HOME/install , 根据实际情况进行修改 +- 下载目录为 $HOME/tmp , 根据实际情况进行修改 + +```bash +#为了方便自定义软件安装目录 +#环境变量DEP_INSTALL_DIR将在后文中作为软件安装目录的根目录 +export DEP_INSTALL_DIR=$HOME/install +#环境变量DEP_BUILD_DIR将在后文中作为编译的根目录 +export DEP_BUILD_DIR=$HOME/build +#环境变量DEP_DOWNLOAD_DIR将在后文中作为下载文件的保存目录 +export DEP_DOWNLOAD_DIR=$HOME/tmp + +#注: 以上变量只在一次会话中有效。如果中途断开ssh会话,则在后续的安装过程中不会生效,需要重新运行 +``` + +### 3.4.安装环境依赖和kgcc编译器 + +```bash +#环境依赖 +yum -y install wget tar libatomic + +#安装kgcc编译器 +wget -P $DEP_DOWNLOAD_DIR https://mirrors.huaweicloud.com/kunpeng/archive/compiler/kunpeng_gcc/gcc-10.3.1-2021.09-aarch64-linux.tar.gz +tar -xf $DEP_DOWNLOAD_DIR/gcc-10.3.1-2021.09-aarch64-linux.tar.gz -C $DEP_INSTALL_DIR + + + +#设置环境变量 +echo "export PATH=$DEP_INSTALL_DIR/gcc-9.3.0/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +export CC=`which clang` +export CXX=`which clang++` +``` + +## 3.5.下载并编译hmpi + +```bash +yum -y install libstdc++ libstdc++-devel +yum -y install unzip make autoconf automake git libtool +#下载解压源码文件 +wget https://github.com/kunpengcompute/hucx/archive/refs/tags/v1.2.0-huawei.zip -O $DEP_DOWNLOAD_DIR/hucx-1.2.0-huawei.zip +wget https://github.com/kunpengcompute/xucg/archive/refs/tags/v1.2.0-huawei.zip -O $DEP_DOWNLOAD_DIR/xucg-1.2.0-huawei.zip +wget https://github.com/kunpengcompute/hmpi/archive/refs/tags/v1.2.0-huawei.zip -O $DEP_DOWNLOAD_DIR/hmpi-1.2.0-huawei.zip + +cd $DEP_BUILD_DIR +unzip -q $DEP_DOWNLOAD_DIR/hucx-1.2.0-huawei.zip +unzip -q $DEP_DOWNLOAD_DIR/xucg-1.2.0-huawei.zip +unzip -q $DEP_DOWNLOAD_DIR/hmpi-1.2.0-huawei.zip +cp -rf xucg-1.2.0-huawei/* hucx-1.2.0-huawei/src/ucg/ + +#编译hucx +cd $DEP_BUILD_DIR/hucx-1.2.0-huawei +./autogen.sh +./contrib/configure-opt --prefix=$DEP_INSTALL_DIR/hmpi/hucx CFLAGS="-DHAVE___CLEAR_CACHE=1" --disable-numa --without-java +for file in `find . -name Makefile`;do sed -i "s/-Werror//g" $file;done +for file in `find . -name Makefile`;do sed -i "s/-implicit-function-declaration//g" $file;done +make -j +make install + +yum -y install flex +#编译hmpi +cd $DEP_BUILD_DIR/hmpi-1.2.0-huawei +./autogen.pl +./configure --prefix=$DEP_INSTALL_DIR/hmpi --with-platform=contrib/platform/mellanox/optimized --enable-mpi1-compatibility --with-ucx=$DEP_INSTALL_DIR/hmpi/hucx +make -j +make install + +echo "export PATH=$DEP_INSTALL_DIR/hmpi/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +export CC=mpicc CXX=mpicxx FC=mpifort F77=mpifort +``` + +## 3.6.下载并编译`BLAS`, `lapack`, `python3` + +```bash + + +# 下载并编译BLAS +wget -u http://www.netlib.org/blas/blas-3.10.0.tgz $DEP_DOWNLOAD_DIR/blas-3.10.0.tgz +cd $DEP_DOWNLOAD_DIR +tar -xzvf $DEP_DOWNLOAD_DIR/blas-3.10.0.tgz +cd BLAS-3.10.0 +gfortran -c -O3 ./*.f +ar rv libblas.a ./*.o +cp libblas.a /usr/local/lib + +# 下载并编译Python3 +yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make libffi-devel +wget https://repo.huaweicloud.com/python/3.7.10/Python-3.7.10.tgz -O $DEP_DOWNLOAD_DIR/Python-3.7.10.tgz +tar -zxvf $DEP_DOWNLOAD_DIR/Python-3.7.10.tgz -C $DEP_BUILD_DIR +cd $DEP_BUILD_DIR/Python-3.7.10 +./configure --prefix=$DEP_INSTALL_DIR/python3 +make -j +make install +echo "export PATH=$DEP_INSTALL_DIR/python3/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +echo "export LD_LIBRARY_PATH=$DEP_INSTALL_DIR/python3/lib:$LD_LIBRARY_PATH" >> ~/.bashrc && source ~/.bashrc + +# 下载并编译lapack +wget -u https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.10.1.tar.gz -O $DEP_DOWNLOAD_DIR/lapack=3.10.1.tar.gz +cd $DEP_DOWNLOAD_DIR +tar -xvf $DEP_DOWNLOAD_DIR/lapack-3.10.1.tar.gz +cd lapack-3.10.1 +cp make.inc.example make.inc +make -j +cd LAPACKE +make -j +cd .. +cp *.a /usr/local/lib + +``` + +## 4.编译wannier90 + +### 4.1.下载并编译wannier90 + +获取QMCPACK软件源码并解压文件 + +```bash + +# 下载源码文件 +cd $DEP_DOWNLOAD_DIR +git clone https://github.com/wannier-developers/wannier90.git +# 解压源码文件 +cd $DEP_BUILD_DIR/wannier90 +#编译源码 +cp config/make.inc.gfortran ./make.inc +sed -i '4c F90 = gfortran' make.inc +sed -i '8c MPIF90 = mpif90' make.inc +sed -i '7c COMMS= mpi' make.inc +sed -i '14c FCOPTS = -fstrict-aliasing -fno-omit-frame-pointer -fno-realloc-lhs -fcheck=bounds,do,recursion,pointer -ffree-form -Wall -Waliasing -Wsurprising -Wline-truncation -Wno-tabs -Wno-uninitialized -Wno-unused-dummy-argument -Wno-unused -Wno-character-truncation -O1 -g -fbacktrace' make.inc +sed -i '15c LDOPTS = -fstrict-aliasing -fno-omit-frame-pointer -fno-realloc-lhs -fcheck=bounds,do,recursion,pointer -ffree-form -Wall -Waliasing -Wsurprising -Wline-truncation -Wno-tabs -Wno-uninitialized -Wno-unused-dummy-argument -Wno-unused -Wno-character-truncation -O1 -g -fbacktrace' make.inc + +make +make install +``` + +### 4.2. 运行测试文件 + +运行wannier90项目测试文件 + +```bash +export OMPI_ALLOW_RUN_AS_ROOT=1; +export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1; +make tests +make test-serial +make test-parallel +``` + +## 附A:使用hpcrunner进行一键安装wannier90 + +推荐使用hpcrunner进行安装wannier90 + +### 1.克隆仓库 + +```bash +git clone https://gitee.com/openeuler/hpcrunner.git +``` + +## 2.初始化hpcrunner 和 安装必要软件包 + +初始化项目助手 + +```bash +cd hpcrunner +source init.sh +``` + +安装必要软件包 + +**arm / x86 需要的软件包不同,根据实际环境进行选择** + +```bash +# arm +yum install -y environment-odules git wget unzip make flex tar +# x86 +yum install -y environment-modules git wget unzip make flex tar +yum install -y gcc gcc-c++ gcc-gfortran glibc-devel libgfortran +yum install -y tcsh tcl lsof tk bc +``` + +### 3.选择平台对应配置文件 + +- arm平台的配置文件为 `templates/wannier90/3.1.0/data.wannier90.arm.cpu.config` + + ```bash + ./jarvis -use templates/wannier90/3.1.0/data.wannier90.arm.cpu.config + ``` + +- x86 平台的配置文件为 `templates/wannier90/3.1.0/data.wannier90.amd.cpu.config` + + ```bash + ./jarvis -use templates/wannier90/3.1.0/data.wannier90.amd.cpu.config + ``` + +### 4.下载QMCPACK源码 + +```bash +./jarvis -d +``` + +### 5.一键配置依赖环境 + +```bash +./jarvis -dp +``` + +### 6.一键进行编译 + +```bash +./jarvis -b +``` + +### 7.一键进行运行测试 + +```bash +./jarvis -r +``` + +## 附B:使用singularity运行容器 + +### 使用教程 + +### 下载容器镜像 + +通过链接下载: + +[百度云盘](https://pan.baidu.com/s/1UjHiv6DN_oOVXcuohP5Uqg?pwd=vxit) + +或者扫码下载: + +![百度云](data:image/png;base64,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) + +#### 1.安装singularity + +安装singularity, + +具体步骤如下 + +```bash +mkdir -p ~/install +mkdir -p ~/build + +#安装编译所需依赖 +yum -y install libatomic libstdc++ libstdc++-devel libseccomp-devel glib2-devel gcc squashfs-tools tar + +#安装bisheng编译器 +cd ~/build +wget https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_compiler/bisheng-compiler-2.1.0-aarch64-linux.tar.gz +tar -C ~/install -xf bisheng-compiler-2.1.0-aarch64-linux.tar.gz +echo "export PATH=$HOME/install/bisheng-compiler-2.1.0-aarch64-linux/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +export CC=`which clang` +export CXX=`which clang++` + +#安装go编译器 +cd ~/build +wget https://go.dev/dl/go1.19.linux-arm64.tar.gz +tar -C ~/install -xf go1.19.linux-arm64.tar.gz +echo "export PATH=$HOME/install/go/bin:$PATH" >> ~/.bashrc && source ~/.bashrc + +#安装singularity +cd ~/build +wget https://github.com/sylabs/singularity/releases/download/v3.10.2/singularity-ce-3.10.2.tar.gz +tar -xf singularity-ce-3.10.2.tar.gz +cd singularity-ce-3.10.2 +./mconfig --prefix=$HOME/install/singularity +make -C ./builddir +make -C ./builddir install +echo "export PATH=$HOME/install/singularity/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +``` + +#### 2.构建镜像 + +```shell +# x86 +singularity build ./name-of-image.sif openeuler-gcc-9.3.0-hmpi1-qmcpack-3.13.0.def +# arm +singularity build ./name-of-image.sif openeuler-bisheng2-hmpi1-qmcpack-3.13.0.def +# 转换为沙盒 +singularity build --sandbox image-sandbox name-of-image.sif +``` + +#### 3.在沙盒中运行 + +```shell +#进入沙盒 +singularity shell -w image-sandbox +#在沙盒中运行内置的测试案例 +cd /hpcrunner +./jarvis -r +``` diff --git a/templates/wannier90/3.1.0/data.wannier90.amd.cpu.config b/templates/wannier90/3.1.0/data.wannier90.amd.cpu.config new file mode 100644 index 0000000000000000000000000000000000000000..660464d652bbe660a9ea9e74aa8263ab71647eb2 --- /dev/null +++ b/templates/wannier90/3.1.0/data.wannier90.amd.cpu.config @@ -0,0 +1,49 @@ +[SERVER] +11.11.11.11 + +[DOWNLOAD] + +[DEPENDENCY] +set -e +set -x +module purge +git clone https://github.com/wannier-developers/wannier90.git tmp/wannier90 +./jarvis -install gcc/10.3.0 com +module use ./software/modulefiles +module load gcc10/10.3.0 +./jarvis -install blas/3.10.0 gcc +sed -i '10,12d ' package/lapack/3.8.0/install.sh +sed -i '$a mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=ON && make && make install && export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64 ' package/lapack/3.8.0/install.sh +./jarvis -install lapack/3.8.0 gcc +./jarvis -install openmpi/4.1.2 gcc +module load openmpi4/4.1.2 + + +[ENV] +module purge +module use ./software/modulefiles +module load gcc10/10.3.0 +module load openmpi4 + + +[APP] +app_name = wannier90 +build_dir = ${JARVIS_TMP}/wannier90 +binary_dir = ${JARVIS_LIBS}/gcc10/wannier90 +case_dir = ${JARVIS_LIBS}/gcc10/wannier90 + +[BUILD] + +cp config/make.inc.gfort make.inc +sed -i '8c MPIF90 = mpif90' make.inc +sed -i '7c COMMS= mpi' make.inc +sed -i '14c FCOPTS = -fstrict-aliasing -fno-omit-frame-pointer -fno-realloc-lhs -fcheck=bounds,do,recursion,pointer -ffree-form -Wall -Waliasing -Wsurprising -Wline-truncation -Wno-tabs -Wno-uninitialized -Wno-unused-dummy-argument -Wno-unused -Wno-character-truncation -O1 -g -fbacktrace' make.inc +sed -i '15c LDOPTS = -fstrict-aliasing -fno-omit-frame-pointer -fno-realloc-lhs -fcheck=bounds,do,recursion,pointer -ffree-form -Wall -Waliasing -Wsurprising -Wline-truncation -Wno-tabs -Wno-uninitialized -Wno-unused-dummy-argument -Wno-unused -Wno-character-truncation -O1 -g -fbacktrace' make.inc +sed -i '16c FCOPTS += -fallow-argument-mismatch' make.inc +make +make install +cp -r ${JARVIS_TMP}/wannier90 ${JARVIS_LIBS}/gcc10/ +[RUN] +run = export OMPI_ALLOW_RUN_AS_ROOT=1 && export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 && make tests +binary = +nodes = 1 diff --git a/templates/wannier90/3.1.0/data.wannier90.arm.cpu.bisheng.config b/templates/wannier90/3.1.0/data.wannier90.arm.cpu.bisheng.config new file mode 100644 index 0000000000000000000000000000000000000000..2ead1cc535ed747fa53115a565aa02c6290fc325 --- /dev/null +++ b/templates/wannier90/3.1.0/data.wannier90.arm.cpu.bisheng.config @@ -0,0 +1,62 @@ +[SERVER] +11.11.11.11 + +[DOWNLOAD] + + +[DEPENDENCY] +set -e +set -x +module purge +git clone https://github.com/wannier-developers/wannier90.git tmp/wannier90 +./jarvis -install bisheng/2.1.0 com +module use ./software/modulefiles +module load bisheng2/2.1.0 +export CC=`which clang` +export CXX=`which clang++` +export FC=`which flang` +#./jarvis -install blas/3.10.0/clang bisheng +./jarvis -install openblas/0.3.18 bisheng +module load openblas/0.3.18 +sed -i '$a mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=ON && make && cp lib/* /usr/local/lib' package/lapack/3.8.0/bisheng/install.sh +./jarvis -install lapack/3.8.0/bisheng bisheng +module load blas-clang +module load lapack-bisheng +./jarvis -install hmpi/1.2.0 bisheng +module load hmpi1 + + +[ENV] +module purge +module use ./software/modulefiles +module load bisheng2/2.1.0 +#module load blas-clang + +module load lapack-bisheng +module load hmpi1 +export CC=`which clang` +export CXX=`which clang++` +export FC=`which flang` + +[APP] +app_name = wannier90 +build_dir = ${JARVIS_TMP}/wannier90 +binary_dir = ${JARVIS_LIBS}/bisheng2/wannier90 +case_dir = ${JARVIS_LIBS}/bisheng2/wannier90 + +[BUILD] + +cp config/make.inc.gfort make.inc +sed -i '4c F90 = flang' make.inc +sed -i '8c MPIF90 = mpif90' make.inc +sed -i '7c COMMS= mpi' make.inc +sed -i '14c FCOPTS = -fstrict-aliasing -fno-omit-frame-pointer -fno-realloc-lhs -ffree-form -Wall -Wno-uninitialized -Wno-unused -O1 -g' make.inc +sed -i '15c LDOPTS = -fstrict-aliasing -fno-omit-frame-pointer -fno-realloc-lhs -ffree-form -Wall -Wno-uninitialized -Wno-unused -O1 -g' make.inc +#sed -i '16c FCOPTS += -fallow-argument-mismatch' make.inc +make +make install +cp -r ${JARVIS_TMP}/wannier90 ${JARVIS_LIBS}/bisheng2/ +[RUN] +run = export OMPI_ALLOW_RUN_AS_ROOT=1 && export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 && make test-serial && make test-parallel +binary = +nodes = 1 diff --git a/templates/wannier90/3.1.0/data.wannier90.arm.cpu.kgcc.config b/templates/wannier90/3.1.0/data.wannier90.arm.cpu.kgcc.config new file mode 100644 index 0000000000000000000000000000000000000000..5b4b90eec5eaf4f0908f2db500b46658b40ec8ab --- /dev/null +++ b/templates/wannier90/3.1.0/data.wannier90.arm.cpu.kgcc.config @@ -0,0 +1,51 @@ +[SERVER] +11.11.11.11 + +[DOWNLOAD] + + +[DEPENDENCY] +set -e +set -x +module purge +git clone https://github.com/wannier-developers/wannier90.git tmp/wannier90 +./jarvis -install kgcc/10.3.1 com +module use ./software/modulefiles +module load kgcc10 +./jarvis -install blas/3.10.0 gcc +sed -i '10,12d ' package/lapack/3.8.0/install.sh +sed -i '$a mkdir build && cd build && cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DBUILD_SHARED_LIBS=ON && make && make install && export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/local/lib64' package/lapack/3.8.0/install.sh +./jarvis -install lapack/3.8.0 gcc +./jarvis -install hmpi/1.2.0 gcc +module load hmpi1 + + +[ENV] +module purge +module use ./software/modulefiles +module load kgcc10 +module load hmpi1 + + +[APP] +app_name = wannier90 +build_dir = ${JARVIS_TMP}/wannier90 +binary_dir = ${JARVIS_LIBS}/kgcc10/wannier90 +case_dir = ${JARVIS_LIBS}/kgcc10/wannier90 + +[BUILD] + +cp config/make.inc.gfort make.inc +sed -i '4c F90 = gfortran' make.inc +sed -i '8c MPIF90 = mpif90' make.inc +sed -i '7c COMMS= mpi' make.inc +sed -i '14c FCOPTS = -fstrict-aliasing -fno-omit-frame-pointer -fno-realloc-lhs -fcheck=bounds,do,recursion,pointer -ffree-form -Wall -Waliasing -Wsurprising -Wline-truncation -Wno-tabs -Wno-uninitialized -Wno-unused-dummy-argument -Wno-unused -Wno-character-truncation -O1 -g -fbacktrace' make.inc +sed -i '15c LDOPTS = -fstrict-aliasing -fno-omit-frame-pointer -fno-realloc-lhs -fcheck=bounds,do,recursion,pointer -ffree-form -Wall -Waliasing -Wsurprising -Wline-truncation -Wno-tabs -Wno-uninitialized -Wno-unused-dummy-argument -Wno-unused -Wno-character-truncation -O1 -g -fbacktrace' make.inc +#sed -i '16c FCOPTS += -fallow-argument-mismatch' make.inc +make +make install +cp -r ${JARVIS_TMP}/wannier90 ${JARVIS_LIBS}/kgcc10/ +[RUN] +run = export OMPI_ALLOW_RUN_AS_ROOT=1 && export OMPI_ALLOW_RUN_AS_ROOT_CONFIRM=1 && make tests +binary = +nodes = 1 diff --git a/test/test-wannier90.sh b/test/test-wannier90.sh new file mode 100644 index 0000000000000000000000000000000000000000..fada8f3404d149b0ac4176683ac1446b11582ef4 --- /dev/null +++ b/test/test-wannier90.sh @@ -0,0 +1,14 @@ +#!/bin/bash +cd .. +# release wannier90 src code +rm -rf tmp/wannier90 +# copy templates +cp -rf templates/wannier90/3.1.0/data.wannier90.amd.cpu.config ./ +# switch to config +./jarvis -use data.wannier90.amd.cpu.config +# install dependency +./jarvis -dp +# build +./jarvis -b +# run +./jarvis -r \ No newline at end of file