diff --git a/.gitignore b/.gitignore index 2d9cfd6d3d43ce1059fc03591aff2ee595b90a66..71ca34e8505adffc2f0f23ea13fff1ff9b1ea2fe 100644 --- a/.gitignore +++ b/.gitignore @@ -53,7 +53,7 @@ pip-wheel-metadata *.sqlite # Things specific to this project # ###################### -perf.data.* +perf.data* kperf.data.* env.sh build.sh @@ -65,4 +65,6 @@ downloads/* depend_install.sh build.sh .meta -software/* \ No newline at end of file +software/* +avg +installed* \ No newline at end of file diff --git a/README.md b/README.md index d2dc0a499778e5994dbe581c36ff38a789fe9340..bd4c6a8ef3ba3d7eb96aacda42dd6766717d75f6 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ | downloads | 存放依赖库源码包/压缩包 | | | examples | 性能小实验 | | | package | 存放安装脚本和FAQ | | -| software | 依赖库二进制仓库 | 自动生成 | +| software | 依赖库二进制仓库(内置精度分析工具) | 自动生成 | | src | 贾维斯源码 | | | templates | 常用HPC应用的配置模板 | | | test | 贾维斯测试用例 | | @@ -221,4 +221,4 @@ eg: 揭开HPC应用的神秘面纱:https://zhuanlan.zhihu.com/p/489828346 -我和容器有个约会:https://zhuanlan.zhihu.com/p/489828346 \ No newline at end of file +我和容器有个约会:https://zhuanlan.zhihu.com/p/499544308 \ No newline at end of file diff --git a/container/README.md b/container/README.md index bd48ef5d3a2c35610e7d38f74e0a5d2bab2c3090..589ef9eb0fddb1d6ae608bcd47f777f4af507274 100644 --- a/container/README.md +++ b/container/README.md @@ -50,7 +50,7 @@ source ./init.sh ``` ./jarvis -install go/1.18 com -./jarvis -install singularity/3.9.6 gcc +./jarvis -install singularity/3.9.6 any ``` 5.3 生成QE容器包 @@ -63,8 +63,7 @@ singularity build openeuler-kgcc9-openmpi4-qe-6.4.sif openeuler-kgcc9-openmpi4-q 5.4 安装和容器同版本的MPI库 ``` -cp ./templates/qe/6.4/data.qe.container.config ./ -./jarvis -use data.qe.container.config +./jarvis -use templates/qe/6.4/data.qe.container.config ./jarvis -d -dp -e source ./env.sh ``` diff --git a/container/openeuler-bisheng2-hmpi1-qe-6.4-opt.def b/container/openeuler-bisheng2-hmpi1-qe-6.4-opt.def index 016ce488c4f82fc7aaf485b94b47fe5a43dec6ad..51d5b59edf40f39823bbb207083d61af28f4500f 100644 --- a/container/openeuler-bisheng2-hmpi1-qe-6.4-opt.def +++ b/container/openeuler-bisheng2-hmpi1-qe-6.4-opt.def @@ -19,11 +19,8 @@ From: openeuler/openeuler cd hpcrunner source ./init.sh ./jarvis -i - cp ./templates/qe/6.4/data.qe.container.opt.config . - wget --no-check-certificate https://github.com/QEF/q-e/archive/refs/tags/qe-6.4.1.tar.gz - tar -xzvf qe-6.4.1.tar.gz # Switch config - ./jarvis -use data.qe.container.opt.config + ./jarvis -use templates/qe/6.4/data.qe.container.opt.config # download dependency ./jarvis -d # install dependency diff --git a/container/openeuler-kgcc9-openmpi4-qe-6.4.def b/container/openeuler-kgcc9-openmpi4-qe-6.4.def index ec9533786b51299c92d8075a4d0fe2553cfd3f37..8f848a98afae083a6d896c37ae169f6ede96fc53 100644 --- a/container/openeuler-kgcc9-openmpi4-qe-6.4.def +++ b/container/openeuler-kgcc9-openmpi4-qe-6.4.def @@ -19,11 +19,8 @@ From: openeuler/openeuler cd hpcrunner source ./init.sh ./jarvis -i - cp ./templates/qe/6.4/data.qe.container.config . - wget --no-check-certificate https://github.com/QEF/q-e/archive/refs/tags/qe-6.4.1.tar.gz - tar -xzvf qe-6.4.1.tar.gz # Switch config - ./jarvis -use data.qe.container.config + ./jarvis -use templates/qe/6.4/data.qe.container.config # download dependency ./jarvis -d # install dependency diff --git a/data.config b/data.config index 87e5346f10157328fc5ba44058e20598bcb148ab..755953c909ff5d9da77026a1069fdb17a498bed4 100644 --- a/data.config +++ b/data.config @@ -2,9 +2,11 @@ 11.11.11.11 [DOWNLOAD] -QE/6.4.1 https://github.com/QEF/q-e/archive/refs/tags/qe-6.4.1.tar.gz +qe/6.4 https://github.com/QEF/q-e/archive/refs/tags/qe-6.4.1.tar.gz q-e-qe-6.4.1.tar.gz [DEPENDENCY] +set -e +set -x ./jarvis -install kgcc/9.3.1 com module purge module use ./software/modulefiles @@ -16,7 +18,7 @@ export FC=`which gfortran` module load openmpi4/4.1.2 #test if mpi is normal ./jarvis -bench mpi -tar -xzvf ${JARVIS_DOWNLOAD}/qe-6.4.1.tar.gz +tar -xzvf ${JARVIS_DOWNLOAD}/q-e-qe-6.4.1.tar.gz [ENV] module purge @@ -32,13 +34,18 @@ case_dir = ${JARVIS_ROOT}/workloads/QE/qe-test [BUILD] ./configure F90=gfortran F77=gfortran MPIF90=mpifort MPIF77=mpifort CC=mpicc FCFLAGS="-O3" CFLAGS="-O3" --with-scalapack=no --enable-openmp -make -j 96 pwall +make -j pw make install [CLEAN] make clean [RUN] -run = mpirun --allow-run-as-root -x OMP_NUM_THREADS=1 -mca coll ^hcoll -mca btl ^vader,tcp,openib,uct -np 128 +run = mpirun --allow-run-as-root -x OMP_NUM_THREADS=1 -np 8 binary = pw.x -input test_3.in -nodes = 1 \ No newline at end of file +nodes = 1 + +[PERF] +perf= +nsys= +ncu=--target-processes all \ No newline at end of file diff --git a/images/wechat-group-qr.png b/images/wechat-group-qr.png index a7bab6c908197e6d26634b9fd316b03390d1123c..ae9910483692fabef392e73a216643879962742d 100644 Binary files a/images/wechat-group-qr.png and b/images/wechat-group-qr.png differ diff --git a/init.sh b/init.sh index 953abe1f24e0df7c6bd82ffb0cc5a0367e0c4451..bcc809cf081d0a1bbc6c67e501548871cddef97e 100644 --- a/init.sh +++ b/init.sh @@ -13,3 +13,5 @@ export JARVIS_UTILS=${CUR_PATH}/software/utils export JARVIS_DOWNLOAD=${CUR_PATH}/downloads export JARVIS_TMP=${CUR_PATH}/tmp export DOWNLOAD_TOOL=${CUR_PATH}/package/common/download.sh +#Install modules +yum install -y environment-modules diff --git a/src/installService.py b/src/installService.py index 9b50b62879f3abdd23a16862b80910be2f1024ac..f11e1b3c02d493f067153c181a11fd83491f3e83 100644 --- a/src/installService.py +++ b/src/installService.py @@ -131,7 +131,7 @@ class InstallService: return SType.LIB def get_suffix(self, software_info_list): - if len(software_info_list) == 3: + if len(software_info_list) >= 3: return software_info_list[2] return "" @@ -360,6 +360,7 @@ chmod +x {install_script} depend_file = 'depend_install.sh' print(f"start installing dependendcy of {DataService.app_name}") depend_content = f''' +source ./init.sh {DataService.dependency} ''' self.tool.write_file(depend_file, depend_content) diff --git a/src/perfService.py b/src/perfService.py index 4a7c0d03d34cda5fe256634f20d5020f23aac614..d4e9a8a27185d9daaf47ac5c568d2d8c847016f4 100644 --- a/src/perfService.py +++ b/src/perfService.py @@ -33,6 +33,7 @@ class PerfService: pid = self.get_pid() #start perf && analysis perf_cmd = f''' +yum install -y perf perf record {DataService.perf_para} -a -g -p {pid} perf report -i ./perf.data -F period,sample,overhead,symbol,dso,comm -s overhead --percent-limit 0.1% --stdio ''' diff --git a/templates/qe/6.4/data.qe.container.config b/templates/qe/6.4/data.qe.container.config index b9ea99efe2f55c9c1ab475d3f6a93c55a194edc0..9e2dae612c5cbcfa5e59c1bedc654cc3a40b3605 100644 --- a/templates/qe/6.4/data.qe.container.config +++ b/templates/qe/6.4/data.qe.container.config @@ -2,8 +2,7 @@ 11.11.11.11 [DOWNLOAD] -kgcc/9.3.1 https://mirrors.huaweicloud.com/kunpeng/archive/compiler/kunpeng_gcc/gcc-9.3.1-2021.03-aarch64-linux.tar.gz -openmpi/4.1.2 https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.2.tar.gz +qe/6.4 https://github.com/QEF/q-e/archive/refs/tags/qe-6.4.1.tar.gz q-e-qe-6.4.1.tar.gz [DEPENDENCY] ./jarvis -install kgcc/9.3.1 com @@ -17,6 +16,7 @@ export FC=`which gfortran` module load openmpi4/4.1.2 #test if mpi is normal ./jarvis -bench mpi +tar -xzvf ${JARVIS_DOWNLOAD}/q-e-qe-6.4.1.tar.gz [ENV] module purge @@ -32,7 +32,7 @@ case_dir = /hpcrunner/workloads/QE/qe-test [BUILD] ./configure F90=gfortran F77=gfortran MPIF90=mpifort MPIF77=mpifort CC=mpicc FCFLAGS="-O3" CFLAGS="-O3" --with-scalapack=no --enable-openmp -make -j 96 pwall +make -j pwall make install [CLEAN] diff --git a/templates/qe/6.4/data.qe.container.opt.config b/templates/qe/6.4/data.qe.container.opt.config index 2101d704671de058d289c11db6560c245352bd61..09b9dcd0cf5305ca105896427a65857ce6aade17 100644 --- a/templates/qe/6.4/data.qe.container.opt.config +++ b/templates/qe/6.4/data.qe.container.opt.config @@ -2,11 +2,7 @@ 11.11.11.11 [DOWNLOAD] -bisheng/2.1.0 https://mirrors.huaweicloud.com/kunpeng/archive/compiler/bisheng_compiler/bisheng-compiler-2.1.0-aarch64-linux.tar.gz -hmpi/1.1.1 https://github.com/kunpengcompute/hucx/archive/refs/tags/v1.1.1-huawei.zip hucx-1.1.1-huawei.zip -hmpi/1.1.1 https://github.com/kunpengcompute/hmpi/archive/refs/tags/v1.1.1-huawei.zip hmpi-1.1.1-huawei.zip -hmpi/1.1.1 https://github.com/kunpengcompute/xucg/archive/refs/tags/v1.1.1-huawei.zip xucg-1.1.1-huawei.zip -openblas/0.3.18 https://github.com/xianyi/OpenBLAS/releases/download/v0.3.18/OpenBLAS-0.3.18.tar.gz +qe/6.4 https://github.com/QEF/q-e/archive/refs/tags/qe-6.4.1.tar.gz q-e-qe-6.4.1.tar.gz [DEPENDENCY] set -x @@ -22,6 +18,7 @@ export FC=`which flang` module load hmpi1/1.1.1 ./jarvis -bench mpi ./jarvis -install openblas/0.3.18 bisheng +tar -xzvf ${JARVIS_DOWNLOAD}/q-e-qe-6.4.1.tar.gz [ENV] source /etc/profile @@ -44,7 +41,7 @@ case_dir = /hpcrunner/workloads/QE/qe-test [BUILD] ./configure F90=flang F77=flang MPIF90=mpifort MPIF77=mpifort CC=mpicc FCFLAGS="-O3" CFLAGS="-O3" --with-scalapack=no --enable-openmp -make -j 96 pwall +make -j pwall make install [CLEAN] diff --git a/templates/qe/6.4/data.qe.test.config b/templates/qe/6.4/data.qe.test.config index bcab7d4a116d994a0be7c2bc39d3629bcebe276c..755953c909ff5d9da77026a1069fdb17a498bed4 100644 --- a/templates/qe/6.4/data.qe.test.config +++ b/templates/qe/6.4/data.qe.test.config @@ -1,7 +1,12 @@ [SERVER] 11.11.11.11 +[DOWNLOAD] +qe/6.4 https://github.com/QEF/q-e/archive/refs/tags/qe-6.4.1.tar.gz q-e-qe-6.4.1.tar.gz + [DEPENDENCY] +set -e +set -x ./jarvis -install kgcc/9.3.1 com module purge module use ./software/modulefiles @@ -13,28 +18,34 @@ export FC=`which gfortran` module load openmpi4/4.1.2 #test if mpi is normal ./jarvis -bench mpi +tar -xzvf ${JARVIS_DOWNLOAD}/q-e-qe-6.4.1.tar.gz [ENV] module purge module use ./software/modulefiles -module load kgcc9 +module load kgcc9/9.3.1 module load openmpi4/4.1.2 [APP] app_name = QE -build_dir = /tmp/q-e-qe-6.4.1/ -binary_dir = /tmp/q-e-qe-6.4.1/bin/ -case_dir = /tmp/qe-test +build_dir = ${JARVIS_ROOT}/q-e-qe-6.4.1/ +binary_dir = ${JARVIS_ROOT}/q-e-qe-6.4.1/bin/ +case_dir = ${JARVIS_ROOT}/workloads/QE/qe-test [BUILD] ./configure F90=gfortran F77=gfortran MPIF90=mpifort MPIF77=mpifort CC=mpicc FCFLAGS="-O3" CFLAGS="-O3" --with-scalapack=no --enable-openmp -make -j 96 pwall +make -j pw make install [CLEAN] make clean [RUN] -run = mpirun --allow-run-as-root -x OMP_NUM_THREADS=1 -mca coll ^hcoll -mca btl ^vader,tcp,openib,uct -np 128 +run = mpirun --allow-run-as-root -x OMP_NUM_THREADS=1 -np 8 binary = pw.x -input test_3.in -nodes = 1 \ No newline at end of file +nodes = 1 + +[PERF] +perf= +nsys= +ncu=--target-processes all \ No newline at end of file diff --git a/templates/qe/6.4/data.qe.test.opt.config b/templates/qe/6.4/data.qe.test.opt.config index b191dcb5b6b7a92e60b412fba6ed046f2da15061..ea85cfac33ba6b981de97a01a45db732801e8ce5 100644 --- a/templates/qe/6.4/data.qe.test.opt.config +++ b/templates/qe/6.4/data.qe.test.opt.config @@ -1,6 +1,9 @@ [SERVER] 11.11.11.11 +[DOWNLOAD] +qe/6.4 https://github.com/QEF/q-e/archive/refs/tags/qe-6.4.1.tar.gz q-e-qe-6.4.1.tar.gz + [DEPENDENCY] set -x set -e @@ -15,6 +18,7 @@ export FC=`which flang` module load hmpi1/1.1.1 ./jarvis -bench mpi ./jarvis -install openblas/0.3.18 bisheng +tar -xzvf ${JARVIS_DOWNLOAD}/q-e-qe-6.4.1.tar.gz [ENV] source /etc/profile @@ -37,7 +41,7 @@ case_dir = /tmp/qe-test/ [BUILD] ./configure F90=flang F77=flang MPIF90=mpifort MPIF77=mpifort CC=mpicc FCFLAGS="-O3" CFLAGS="-O3" --with-scalapack=no --enable-openmp -make -j 96 pwall +make -j pwall make install [CLEAN]