diff --git a/container/openeuler-bisheng2-bowtie2-2.4.5.def b/container/bowtie2/openeuler-bisheng2-bowtie2-2.4.5.def similarity index 100% rename from container/openeuler-bisheng2-bowtie2-2.4.5.def rename to container/bowtie2/openeuler-bisheng2-bowtie2-2.4.5.def diff --git a/container/openeuler-gcc-9.3.0-bowtie2-2.4.5.def b/container/bowtie2/openeuler-gcc-9.3.0-bowtie2-2.4.5.def similarity index 100% rename from container/openeuler-gcc-9.3.0-bowtie2-2.4.5.def rename to container/bowtie2/openeuler-gcc-9.3.0-bowtie2-2.4.5.def diff --git a/container/duns/openeuler-bisheng2-duns-2.7.1.def b/container/duns/openeuler-bisheng2-duns-2.7.1.def new file mode 100644 index 0000000000000000000000000000000000000000..626b6e9dbfef03420af28692b89bd40c3eecc5d5 --- /dev/null +++ b/container/duns/openeuler-bisheng2-duns-2.7.1.def @@ -0,0 +1,36 @@ +BootStrap: docker +From: openeuler/openeuler + +%environment + source /etc/profile || true + source /etc/profile.d/modules.sh + cd /hpcrunner + source env.sh + +%post + # Install the necessary development environment + yum install -y environment-modules git wget unzip make flex tar + # Install base gcc + yum install -y gcc gcc-c++ make cmake automake libX11-devel + source /etc/profile || true + git config --global http.sslVerify false + git clone https://gitee.com/openeuler/hpcrunner.git + cd hpcrunner + source ./init.sh + source /etc/profile.d/modules.sh + ./jarvis -i + # Switch config + ./jarvis -use templates/duns/2.7.1/data.duns.arm.cpu.config + # downloads duns + ./jarvis -d + # install dependency + ./jarvis -dp + # build duns + ./jarvis -b + # run duns + ./jarvis -r + # clean downloads directory + rm -rf downloads + +%labels + Author Zu \ No newline at end of file diff --git a/container/duns/openeuler-gcc-9.3.0-duns-2.7.1.def b/container/duns/openeuler-gcc-9.3.0-duns-2.7.1.def new file mode 100644 index 0000000000000000000000000000000000000000..3318438bc94359a4caec3b49d22083de5e3cecfc --- /dev/null +++ b/container/duns/openeuler-gcc-9.3.0-duns-2.7.1.def @@ -0,0 +1,36 @@ +BootStrap: docker +From: openeuler/openeuler + +%environment + source /etc/profile || true + source /etc/profile.d/modules.sh + cd /hpcrunner + source env.sh + +%post + # Install the necessary development environment + yum install -y environment-modules git wget unzip make flex tar + # Install base gcc + yum install -y gcc gcc-c++ make cmake automake libX11-devel + source /etc/profile || true + git config --global http.sslVerify false + git clone https://gitee.com/openeuler/hpcrunner.git + cd hpcrunner + source ./init.sh + source /etc/profile.d/modules.sh + ./jarvis -i + # Switch config + ./jarvis -use templates/duns/2.7.1/data.duns.x86.cpu.config + # downloads duns + ./jarvis -d + # install dependency + ./jarvis -dp + # build duns + ./jarvis -b + # run duns + ./jarvis -r + # clean downloads directory + rm -rf downloads + +%labels + Author Zu \ No newline at end of file diff --git a/container/openeuler-bisheng2-hmpi1-mfem-4.4.def b/container/mfem/openeuler-bisheng2-hmpi1-mfem-4.4.def similarity index 100% rename from container/openeuler-bisheng2-hmpi1-mfem-4.4.def rename to container/mfem/openeuler-bisheng2-hmpi1-mfem-4.4.def diff --git a/container/openeuler-bisheng2-hmpi1-qe-6.4-opt.def b/container/qe/openeuler-bisheng2-hmpi1-qe-6.4-opt.def similarity index 100% rename from container/openeuler-bisheng2-hmpi1-qe-6.4-opt.def rename to container/qe/openeuler-bisheng2-hmpi1-qe-6.4-opt.def diff --git a/container/openeuler-kgcc9-openmpi4-qe-6.4.def b/container/qe/openeuler-kgcc9-openmpi4-qe-6.4.def similarity index 100% rename from container/openeuler-kgcc9-openmpi4-qe-6.4.def rename to container/qe/openeuler-kgcc9-openmpi4-qe-6.4.def diff --git a/container/openeuler-bisheng2-hmpi1-qmcpack-3.13.0.def b/container/qmcpack/openeuler-bisheng2-hmpi1-qmcpack-3.13.0.def similarity index 100% rename from container/openeuler-bisheng2-hmpi1-qmcpack-3.13.0.def rename to container/qmcpack/openeuler-bisheng2-hmpi1-qmcpack-3.13.0.def diff --git a/container/openeuler-gcc-9.3.0-hmpi1-qmcpack-3.13.0.def b/container/qmcpack/openeuler-gcc-9.3.0-hmpi1-qmcpack-3.13.0.def similarity index 100% rename from container/openeuler-gcc-9.3.0-hmpi1-qmcpack-3.13.0.def rename to container/qmcpack/openeuler-gcc-9.3.0-hmpi1-qmcpack-3.13.0.def diff --git a/container/openeuler-bisheng2-trinity-2.14.0.def b/container/trinity/openeuler-bisheng2-trinity-2.14.0.def similarity index 100% rename from container/openeuler-bisheng2-trinity-2.14.0.def rename to container/trinity/openeuler-bisheng2-trinity-2.14.0.def diff --git a/container/openeuler-gcc-9.3.0-trinity-2.14.0.def b/container/trinity/openeuler-gcc-9.3.0-trinity-2.14.0.def similarity index 100% rename from container/openeuler-gcc-9.3.0-trinity-2.14.0.def rename to container/trinity/openeuler-gcc-9.3.0-trinity-2.14.0.def diff --git a/container/openeuler.wannier90.arm.cpu.config.def b/container/wannier90/openeuler.wannier90.arm.cpu.config.def similarity index 100% rename from container/openeuler.wannier90.arm.cpu.config.def rename to container/wannier90/openeuler.wannier90.arm.cpu.config.def diff --git a/container/openeuler.wannier90.x86.cpu.config.def b/container/wannier90/openeuler.wannier90.x86.cpu.config.def similarity index 100% rename from container/openeuler.wannier90.x86.cpu.config.def rename to container/wannier90/openeuler.wannier90.x86.cpu.config.def diff --git "a/doc/duns/\343\200\212\345\237\272\344\272\216openEuler\347\232\204duns\350\275\257\344\273\266\346\265\213\350\257\225\346\212\245\345\221\212\343\200\213.md" "b/doc/duns/\343\200\212\345\237\272\344\272\216openEuler\347\232\204duns\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..1ee1e85872530a5ab98010067e49404dcec88197 --- /dev/null +++ "b/doc/duns/\343\200\212\345\237\272\344\272\216openEuler\347\232\204duns\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,595 @@ +# 《基于openEuler的DUNS软件测试报告》 + +## 1.规范性自检 + +DUNS于2003年之后就停止更新,其代码更是由Fortran77编写,现网支持的fortran格式化工具fprettify也只支持f90以及更高的版本,因此这里无法对DUNS进行代码格式测试。 + +### 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])) +``` + +在duns项目根目录下运行,运行结果如下 + +```bash +python run.py +/root/duns-2.7.1 +当前文件夹下共有[.F]的文件80个 +当前文件夹下共有[]的文件31个 +当前文件夹下共有[.Inc]的文件28个 +当前文件夹下共有[.f]的文件19个 +当前文件夹下共有[.html]的文件10个 +当前文件夹下共有[.cpp]的文件6个 +当前文件夹下共有[.c]的文件2个 +当前文件夹下共有[.ps]的文件2个 +当前文件夹下共有[.inc]的文件1个 +当前文件夹下共有[.sgml]的文件1个 +当前文件夹下共有[.txt]的文件1个 +当前文件夹下共有[.eps]的文件1个 +当前文件夹下共有[.py]的文件1个 +当前文件夹下共有[.doc]的文件1个 +``` + +查看上述结果可知主要源码文件后缀名为 `.F`,`.Inc`,`.f` + +### 1.2.统计源码总行数 + +统计所有源码文件的代码行数 + +```bash + find ./ -regex ".*\.F90\|.*\.f90\|.*\.py"\|.*\.sh"\|.*\.gfort"\ + | xargs wc -l +``` + +统计结果 + +```bash + 48446 total +``` + +### 1.3 文件列表 + +```bash +duns-2.7.1 +|-- CHANGES +|-- COPYING +|-- doc +| |-- algorithm.ps +| |-- duns_tut-1.html +| |-- duns_tut-2.html +| |-- duns_tut-3.html +| |-- duns_tut-4.html +| |-- duns_tut-5.html +| |-- duns_tut-6.html +| |-- duns_tut-7.html +| |-- duns_tut-8.html +| |-- duns_tut-9.html +| |-- duns_tut.html +| |-- duns_tut.ps +| |-- duns_tut.sgml +| |-- duns_tut.txt +| `-- fig1.eps +|-- HISTORY +|-- INSTALL +|-- lib +| |-- acklib.f +| |-- amach.f +| |-- blocksolver.f +| |-- ckinterp.f +| |-- cklib.f +| |-- ckstrt.f +| |-- cmach.f +| |-- dmach.f +| |-- graficV3.f +| |-- grcomn.inc +| |-- grctrl.f +| |-- Makefile +| |-- math.f +| |-- mbgrafic.f +| |-- mbgrctrl.f +| |-- mcklib.f +| |-- pcmach.f +| |-- tranfit.f +| |-- tranlib.f +| |-- vode.f +| |-- xerror.f +| |-- Xnounderscore.c +| `-- Xunderscore.c +|-- makesystem +| |-- Makesystem_aix +| |-- Makesystem_aixpar +| |-- Makesystem_alpha +| |-- Makesystem_cray +| |-- Makesystem_hp +| |-- Makesystem_hp1 +| |-- Makesystem_linux +| |-- Makesystem_linuxf2c +| |-- Makesystem_linuxfpar +| |-- Makesystem_linuxic +| |-- Makesystem_linuxpar +| |-- Makesystem_linuxRH7 +| `-- Makesystem_sgi +|-- pregrid +| |-- assemble.F +| |-- bcassemble.F +| |-- config.F +| |-- corners.F +| |-- duns.F +| |-- getaxismap.F +| |-- getintgc.F +| |-- getside.F +| |-- getsurface.F +| |-- getsurfacen.F +| |-- gridread.F +| |-- include +| | |-- bounds.Inc +| | |-- dualtime.Inc +| | |-- execution.Inc +| | |-- flowfield.Inc +| | |-- grid.Inc +| | |-- parallel.Inc +| | |-- properties.Inc +| | |-- reactions.Inc +| | |-- solblock.Inc +| | |-- solver.Inc +| | |-- stab.Inc +| | |-- timestep.Inc +| | |-- turbulence.Inc +| | `-- variables.Inc +| |-- inprepar.F +| |-- inread.F +| |-- interp.F +| |-- main.cpp +| |-- Makefile +| |-- metric.F +| |-- parameters +| |-- parprepar.F +| |-- pregrid.F +| |-- prepar.F +| |-- rdist.F +| `-- readcom.F +|-- README +|-- REVISION +|-- set_me_up +|-- src +| |-- assemble.F +| |-- bcassemble.F +| |-- bc.F +| |-- blockadi.F +| |-- blockbc.F +| |-- blocklhs.F +| |-- blocksolver.F +| |-- boundwrite.F +| |-- calcwi.F +| |-- check.F +| |-- config.F +| |-- configplot.F +| |-- corners.F +| |-- diagadi.F +| |-- duns.F +| |-- dunsplot.F +| |-- eos.F +| |-- getaxismap.F +| |-- getintgc.F +| |-- getside.F +| |-- getsurface.F +| |-- gridread.F +| |-- inbc.F +| |-- include +| | |-- bounds.Inc +| | |-- dualtime.Inc +| | |-- execution.Inc +| | |-- flowfield.Inc +| | |-- grid.Inc +| | |-- parallel.Inc +| | |-- properties.Inc +| | |-- reactions.Inc +| | |-- solblock.Inc +| | |-- solver.Inc +| | |-- stab.Inc +| | |-- timestep.Inc +| | |-- turbulence.Inc +| | `-- variables.Inc +| |-- inprepar.F +| |-- inread.F +| |-- interp2.F +| |-- interp.F +| |-- interpold.F +| |-- intupdate.F +| |-- jaccal.F +| |-- lhs.F +| |-- lineq.F +| |-- main.cpp +| |-- mainplot.cpp +| |-- Makefile +| |-- metric.F +| |-- mocbc.F +| |-- outbc.F +| |-- parameters +| |-- parprepar.F +| |-- parupdate.F +| |-- plot.cpp +| |-- plot.doc +| |-- prepar.F +| |-- preset.F +| |-- qread.F +| |-- rdist.F +| |-- reactck.F +| |-- react.F +| |-- readcom.F +| |-- restart.F +| |-- rhsupwind.F +| |-- setsignals.cpp +| |-- sigaction.F +| |-- spropck.F +| |-- sprop.F +| |-- stabbc.F +| |-- stabprepar.F +| |-- step1.F +| |-- tecmovie.F +| |-- tecout.F +| |-- timer.cpp +| |-- timestp.F +| |-- turbeddy.F +| |-- turbsource.F +| |-- update.F +| |-- vnjac.F +| `-- wallbc.F +|-- TODO +|-- util +| |-- dunsdiff +| |-- dunssource +| `-- dunstest +`-- VERSION +``` + +## 2.功能性测试 + +官方给出诸多测试,如`airfoil`,`bfs`,`cduct`,`cylinder`等,这里对每个测试案例进行测试 + +### 2.1.测试脚本 + +每个测试用例下都有其各自的测试脚本,`bfs`下的测试脚本如下,其他测试脚本大致相同 + +```bash +#!/bin/sh + +DUNSSOURCE=$DUNSPATH27/util/dunssource +RETVAL=0 + +case "$1" in + + run ) + $DUNSSOURCE -d . 3d + cp parameters duns-3d + cd duns-3d + make duns-opt.e + make clean + cd .. + ./duns-3d/duns-opt.e -nv > out6.dat + ;; + + clean ) + \rm -rf core dunsout.* crash.* save.* out6.dat duns-3d + ;; + * ) + RETVAL=1 + echo "Usage: $0 run / clean" +esac + +exit $RETVAL +``` + +进行cduct目录下进行测试: +```bash +./testscript run +``` + +### 2.2.运行结果 + +```bash +[root@host trinityrnaseq-v2.14.0]# ./testscript run &> /dev/null && cat out.dat +DUNS Version 2.7.1 + + + + + + + +> grid +> formatted + + + + + + Number of blocks for grid = 3 + Block 1 30 21 21 + Block 2 30 21 21 + Block 3 30 21 21 + + Reading connectivity file duns.conn +B 1 s 1 0 0 b 0 2 123 s 3 0 0 s 4 0 0 s 5 0 0 s 6 0 0 +B 2 b 0 1 123 b 0 3 123 s 3 0 0 s 4 0 0 s 5 0 0 s 6 0 0 +B 3 b 2 0 123 s 2 0 0 s 3 0 0 s 4 0 0 s 5 0 0 s 6 0 0 + + Assembling sweep blocks + Sweep block: 1 + 1 1123 2 2123 3 3123 + 1 2 + 0 0 + Sweep block: 2 + 1 1213 + 3 4 + 0 0 + Sweep block: 3 + 2 2213 + 3 4 + 0 0 + Sweep block: 4 + 3 3213 + 3 4 + 0 0 + Sweep block: 5 + 1 1312 + 5 6 + 0 0 + Sweep block: 6 + 2 2312 + 5 6 + 0 0 + Sweep block: 7 + 3 3312 + 5 6 + 0 0 + + **** nmx: 45012 **** + **** iblkmx: 133100 **** + **** iimx: 89 **** + **** iimx2: 31 **** + + **** surfmax: 8160 **** + **** bindmax: 4576 **** + number of interior ghost cells : 1200 + Tolerance = 3.3870972E-06 +> flow-field +> viscous + + + + + +> gas-properties +> compressible +> gas-constant 287. +> gamma 1.4 +> viscosity 5.8e-2 +> prandtl-number 0.7 + + + + + +> initialize +> temperature 300. +> u-velocity 1. +> pressure 1e5 + + + + + +> boundary-conditions +> surface 1 +> subsonic-inflow +> velocity 15. +> temperature 315. +> surface 2 +> subsonic-outflow +> pressure 1e5 +> surface 3 4 5 6 +> viscous-wall +> adiabatic + + + + + +> spatial-accuracy +> third + + + + + +> precondition +> inviscid on +> viscous on +> pressure 1e5 +> velocity 15. + + + + + +> run +> min-cfl +> max-vnn +> cfl 2.0 +> vnn 2.0 +> print-conv 5 +> print-rstrt 100 +> steps 1000 + + + + + +Running for 1000 steps ntmn = 1 + ntmx = 1000 + Number of interpolated points: 852 + + dunsout output at step 100 + + Error reading in dunsout.v variables. Using defaults. + + dunsout output at step 200 + + + dunsout output at step 300 + + + dunsout output at step 400 + + + dunsout output at step 500 + + + dunsout output at step 600 + + + dunsout output at step 700 + + + dunsout output at step 800 + + + dunsout output at step 900 + + + dunsout output at step 1000 + + +cpu time for solution: 61.9410 sec + +cpu time/iteration/point: 1.376100 microsec + timestep: 0.067301 microsec + righthand side: 0.886477 microsec + lefthand side: 0.380931 microsec + stiff solver: 0.000000 microsec + equation of state: 0.012568 microsec + boundary condition: 0.006360 microsec + + Timings: 1.376 0.6730E-01 0.8865 0.3809 0.000 0.1257E-01 0.6360E-02 + +> save-restart +> filename save + + + + + +> save-plotting +> filename save +> cell-centered 0 +> variables p1 u v w t + + + save output at step 1000 + +> quit +Exiting DUNS program with value 0. +``` + +## 3.性能测试 + +### 3.1.测试平台信息对比 + +| | arm信息 | x86信息 | +| -------- | --------------------------------------------- | --------------------------- | +| 操作系统 | openEuler 20.09 | openEuler 20.09 | +| 内核版本 | 4.19.90-2110.8.0.0119.oe1.aarch64 | 4.19.90-2003.4.0.0036.oe1.x86_64 | + +### 3.2.测试软件环境信息对比 + +| | arm信息 | x86信息 | +| ----- | ------------- | --------- | +| gcc | bisheng 2.1.0 | gcc 9.3.0 | +| bowtie2 | 2.4.5 | 2.4.5 | +| trinity | 2.14.0 | 2.14.0 | + +### 3.3.测试硬件性能信息对比 + +| | arm信息 | x86信息 | +| ------ | ----------- | ---------- | +| cpu | Kunpeng 920 | Intel(R) Xeon(R) Platinum 8255C CPU| +| 核心数 | 8 | 4 | +| 内存 | 16 GB | 8 GB | +| 磁盘io | 1.3 GB/s | 1.3 MB/s | +| 虚拟化 | KVM | KVM | + +### 3.4.各测试用例比对 + +| airfoil | arm | x86 | +| ----------- | ---------- | --------- | +| 实际CPU时间 | 0m29.587s | 0m20.158s | +| 用户时间 | 0m29.019s | 0m19.566 | + +| bfs | arm | x86 | +| ----------- | ---------- | --------- | +| 实际CPU时间 | 0m16.917s | 0m10.420s | +| 用户时间 | 0m16.397s | 0m9.901s | + +| cduct | arm | x86 | +| ----------- | ---------- | --------- | +| 实际CPU时间 | 1m18.574s | 0m56.856s | +| 用户时间 | 1m18.163s | 0m56.247s | + +| cylinder | arm | x86 | +| ----------- | ---------- | --------- | +| 实际CPU时间 | 4m40.808s | 3m32.234s | +| 用户时间 | 4m39.537s | 3m30.153s | + +| cylinder-ext | arm | x86 | +| ----------- | ---------- | --------- | +| 实际CPU时间 | 1m23.231s | 1m1.296s | +| 用户时间 | 1m22.873s | 1m0.593s | + +| rbcc | arm | x86 | +| ----------- | ---------- | --------- | +| 实际CPU时间 | 2m49.730s | 1m59.213s | +| 用户时间 | 2m48.522s | 1m58.397s | + +| shear | arm | x86 | +| ----------- | ---------- | --------- | +| 实际CPU时间 | 2m49.730s | 1m59.213s | +| 用户时间 | 2m48.522s | 1m58.397s | + +| swirl | arm | x86 | +| ----------- | ---------- | --------- | +| 实际CPU时间 | 0m17.004s | 0m10.356s | +| 用户时间 | 0m16.471s | 0m9.803s | \ No newline at end of file diff --git "a/doc/duns/\343\200\212\345\237\272\344\272\216openEuler\347\232\204duns\350\275\257\344\273\266\347\247\273\346\244\215\346\214\207\345\215\227\343\200\213.md" "b/doc/duns/\343\200\212\345\237\272\344\272\216openEuler\347\232\204duns\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..1fe257b75ac30641cd7a816d28301e4e533565e0 --- /dev/null +++ "b/doc/duns/\343\200\212\345\237\272\344\272\216openEuler\347\232\204duns\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,260 @@ +# 《基于openEuler的duns软件移植指南》 + +## 1.介绍 + +- DUNS(对角化上风Navier-Stokes)代码是带有q-ω湍流模型的2D / 3D,结构化,多块,多种类,React性,稳定/不稳定的Navier Stokes流体动力学代码。 + +- 官方地址(含源码及指导手册):https://duns.sourceforge.net/ + +- 下载地址:https://sourceforge.net/projects/duns/files/duns/duns-2.7.1/duns-2.7.1-src.tar.bz2/download + +## 2.环境要求 + +- 操作系统:openeuler arm/x86 (本文档以 x86 架构为例) + +## 3.配置编译环境 + +配置环境指导,手动进行配置依赖环境。 + +### 3.1.环境总览 + +- 编译器:gcc + +- 其他类库:`Cmake` + +- 具体版本和下载地址如下 + +| 名称 | 版本 | 软件下载地址 | +| -------- | ------ | -------------------------------------------------------- | +| gcc | 9.3.0 | | +| gfortran | 9.3.0 | | + +### 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.安装环境依赖和gcc编译器 + +```bash +#环境依赖 +yum -y install gcc gcc-c++ wget tar libatomic + +#安装gcc编译器 +wget -P $DEP_DOWNLOAD_DIR https://ftp.gnu.org/gnu/gcc/gcc-9.3.0/gcc-9.3.0.tar.gz +tar -xf $DEP_DOWNLOAD_DIR/gcc-9.3.0.tar.gz -C $DEP_INSTALL_DIR +sed -i "35s/ftp/http/g" ./contrib/download_prerequisites +./contrib/download_prerequisites +./configure --disable-multilib --enable-languages="c,c++,fortran" --prefix=$1 --disable-static --enable-shared +make -j && make install +#设置环境变量 +echo "export PATH=$DEP_INSTALL_DIR/gcc-9.3.0/bin:$PATH" >> ~/.bashrc && source ~/.bashrc +export CC=`which gcc` +export CXX=`which g++` +``` + +## 4.编译duns + +### 4.1.下载并编译duns + +获取duns软件源码并解压文件 +```bash +# 下载源码文件 +wget https://sourceforge.net/projects/duns/files/duns/duns-2.7.1/duns-2.7.1-src.tar.bz2 +tar -xjf duns-2.7.1-src.tar.bz2 -C $DEP_BUILD_DIR +cd $DEP_BUILD_DIR/duns-2.7.1 +export DUNSARCH=linux +export DUNSPATH27=`pwd` +export PATH=$DUNSPATH27/util:$PATH +sed -i '10s/g77/gfortran/' makesystem/Makesystem_linux +sed -i "28s#.*#SYSLIBS = -L${JARVIS_COMPILER}/gcc/9.3.0/lib64 -Wl,-Bdynamic -lgcc_s -lm -lgfortran#" makesystem/Makesystem_linux +sed -i '29s#.*#GRAFLIBS = -lmbgrafic -lgrafic -L/usr/lib -Wl,-Bdynamic -lX11#' makesystem/Makesystem_linux +sed -i 's/getline/getline1/g' `grep getline -rl --include="*" src/*` +cd lib +make && make install +cd .. +dunssource 3d all # 这里根据自己的需要构建程序 +cd duns-3d-all +line=`expr $(grep -n -m 1 "^c .*" assemble.f |awk -F: '{print $1}') - 1` +sed -i "1,${line}d" *.f *.c include/* +make -j +``` + +### 4.2. 运行测试文件 + +运行duns项目测试文件 + +```bash +cd $DEP_BUILD_DIR/duns-2.7.1 +wget https://sourceforge.net/projects/duns/files/duns/duns-2.7.1/duns-2.7.1-test.tar.bz2 +tar -xjf duns-2.7.1-test.tar.bz2 +cd test/serial/cduct +sed -i "/cd duns.*/a\ sed -i '1,42d' *.f include/*" testscript +./testscript run +``` + +## 附A:使用hpcrunner进行一键安装DUNS + +推荐使用hpcrunner进行安装DUNS + +### 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/duns/2.7.1/data.duns.arm.cpu.config` + + ```bash + ./jarvis -use templates/duns/2.7.1/data.duns.arm.cpu.config + ``` + +- x86 平台的配置文件为 `templates/duns/2.7.1/data.duns.x86.cpu.config` + + ```bash + ./jarvis -use templates/duns/2.7.1/data.duns.x86.cpu.config + ``` + +### 4.下载duns源码 + +```bash +./jarvis -d +``` + +### 5.一键配置依赖环境 + +```bash +./jarvis -dp +``` + +### 6.一键进行编译 + +```bash +./jarvis -b +``` + +### 7.一键进行运行测试 + +```bash +./jarvis -r +``` + +## 附B:使用singularity运行容器 + +### 使用教程 + +### 下载容器镜像 + +通过链接下载: +[百度云盘](https://pan.baidu.com/s/1OVQQoe_U8qMMW9tXJ9UJig ) +提取码: 2514 + +或者扫码下载: + +![百度云](data:image/jpeg;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-duns-2.7.1.def +# arm +singularity build ./name-of-image.sif openeuler-bisheng2-9.3.1-duns-2.7.1.def +# 转换为沙盒 +singularity build --sandbox image-sandbox name-of-image.sif +``` + +#### 3.在沙盒中运行 + +```shell +#进入沙盒 +singularity shell -w image-sandbox +#在沙盒中运行内置的测试案例 +cd /hpcrunner +./jarvis -r +``` \ No newline at end of file diff --git a/templates/duns/2.7.1/data.duns.arm.cpu.config b/templates/duns/2.7.1/data.duns.arm.cpu.config new file mode 100644 index 0000000000000000000000000000000000000000..ddc3e3a16747337fa9f9f54d3067e1eff2121936 --- /dev/null +++ b/templates/duns/2.7.1/data.duns.arm.cpu.config @@ -0,0 +1,56 @@ +[SERVER] +11.11.11.11 + +[DOWNLOAD] +duns/2.7.1 https://sourceforge.net/projects/duns/files/duns/duns-2.7.1/duns-2.7.1-src.tar.bz2 + +[DEPENDENCY] +set -e +set -x +./jarvis -install bisheng/2.1.0 com +module purge +module use ./software/modulefiles +module load bisheng2/2.1.0 +cd ${JARVIS_TMP} +tar -xvf ${JARVIS_DOWNLOAD}/duns-2.7.1-src.tar.bz2 -C ${JARVIS_TMP} +. ${DOWNLOAD_TOOL} -u https://sourceforge.net/projects/duns/files/duns/duns-2.7.1/duns-2.7.1-test.tar.bz2 +tar -xvf ${JARVIS_DOWNLOAD}/duns-2.7.1-test.tar.bz2 -C ${JARVIS_TMP} +cd ${JARVIS_TMP}/duns-2.7.1 +sed -i '10s/g77/flang/' makesystem/Makesystem_linux +sed -i '11s/gcc/clang/' makesystem/Makesystem_linux +sed -i '12s/g++/clang++/' makesystem/Makesystem_linux +sed -i '13s/gcc/clang/' makesystem/Makesystem_linux +sed -i '14s/gcc/clang/' makesystem/Makesystem_linux +sed -i "28s#.*#SYSLIBS = -L${JARVIS_COMPILER}/bisheng/2.1.0/lib -Wl,-Bdynamic -lgcc_s -lm -lflang -lpgmath#" makesystem/Makesystem_linux +sed -i '29s#.*#GRAFLIBS = -lmbgrafic -lgrafic -L/lib64 -Wl,-Bdynamic -lX11 -lflang#' makesystem/Makesystem_linux + +sed -i '339s/help()/help(0)/' src/main.cpp +sed -i '345s/help()/help(0)/' src/main.cpp +sed -i '349s/help()/help(0)/' src/main.cpp +sed -i 's/getline/getline1/g' `grep getline -rl --include="*" ./` + +[ENV] +module use ./software/modulefiles +module load bisheng2/2.1.0 +export DUNSARCH=linux +export DUNSPATH27=${JARVIS_TMP}/duns-2.7.1 +export PATH=$DUNSPATH27/util:$PATH + +[APP] +app_name = duns +build_dir = ${JARVIS_TMP}/duns-2.7.1 +binary_dir = +case_dir = ${JARVIS_TMP}/duns-2.7.1/test/serial/cduct + +[BUILD] +cd lib; make && make install +cd ..; dunssource 3d all +cd duns-3d-all +make +mkdir -p ${JARVIS_LIBS}/bisheng2/duns/2.7.1/bin +cp duns.e dunsplot.e ${JARVIS_LIBS}/bisheng2/duns/2.7.1/bin + +[RUN] +run = ./testscript run +binary = +nodes = 1 \ No newline at end of file diff --git a/templates/duns/2.7.1/data.duns.x86.cpu.config b/templates/duns/2.7.1/data.duns.x86.cpu.config new file mode 100644 index 0000000000000000000000000000000000000000..be330056069899f938975801382f5f0d16c82797 --- /dev/null +++ b/templates/duns/2.7.1/data.duns.x86.cpu.config @@ -0,0 +1,50 @@ +[SERVER] +11.11.11.11 + +[DOWNLOAD] +duns/2.7.1 https://sourceforge.net/projects/duns/files/duns/duns-2.7.1/duns-2.7.1-src.tar.bz2 + +[DEPENDENCY] +set -e +set -x +./jarvis -install gcc/9.3.0 com +module purge +module use ./software/modulefiles +module load gcc9/9.3.0 +cd ${JARVIS_TMP} +tar -xvf ${JARVIS_DOWNLOAD}/duns-2.7.1-src.tar.bz2 -C ${JARVIS_TMP} +. ${DOWNLOAD_TOOL} -u https://sourceforge.net/projects/duns/files/duns/duns-2.7.1/duns-2.7.1-test.tar.bz2 +tar -xvf ${JARVIS_DOWNLOAD}/duns-2.7.1-test.tar.bz2 -C ${JARVIS_TMP} +cd ${JARVIS_TMP}/duns-2.7.1 +sed -i '10s/g77/gfortran/' makesystem/Makesystem_linux +sed -i "28s#.*#SYSLIBS = -L${JARVIS_COMPILER}/gcc/9.3.0/lib64 -Wl,-Bdynamic -lgcc_s -lm -lgfortran#" makesystem/Makesystem_linux +sed -i '29s#.*#GRAFLIBS = -lmbgrafic -lgrafic -L/usr/lib -Wl,-Bdynamic -lX11#' makesystem/Makesystem_linux +sed -i 's/getline/getline1/g' `grep getline -rl --include="*" src/*` + +[ENV] +module use ./software/modulefiles +module load gcc9/9.3.0 +export DUNSARCH=linux +export DUNSPATH27=${JARVIS_TMP}/duns-2.7.1 +export PATH=$DUNSPATH27/util:$PATH + +[APP] +app_name = duns +build_dir = ${JARVIS_TMP}/duns-2.7.1 +binary_dir = +case_dir = ${JARVIS_TMP}/duns-2.7.1/test/serial/cduct + +[BUILD] +cd lib; make && make install +cd ..; dunssource 3d all +cd duns-3d-all +line=`expr $(grep -n -m 1 "^c .*" assemble.f |awk -F: '{print $1}') - 1` +sed -i "1,${line}d" *.f *.c include/* +make -j +mkdir -p ${JARVIS_LIBS}/bisheng2/duns/2.7.1/bin +cp duns.e dunsplot.e ${JARVIS_LIBS}/bisheng2/duns/2.7.1/bin + +[RUN] +run = sed -i "/cd duns.*/a\ sed -i '1,42d' *.f include/*" testscript && ./testscript run +binary = +nodes = 1 \ No newline at end of file diff --git a/test/test-duns.sh b/test/test-duns.sh new file mode 100644 index 0000000000000000000000000000000000000000..5e27a853296836e7330bcee1801a2d82bf000dd9 --- /dev/null +++ b/test/test-duns.sh @@ -0,0 +1,16 @@ +#!/bin/bash +cd .. +# release duns src code +rm -rf tmp/duns-2.7.1 +# copy templates +cp -rf templates/duns/2.7.1/data.duns.x86.cpu.config ./ +# switch to config +./jarvis -use data.duns.x86.cpu.config +# download duns src code +./jarvis -d +# install dependency +./jarvis -dp +# build +./jarvis -b +# run +./jarvis -r \ No newline at end of file