diff --git a/.gitignore b/.gitignore index 0bdf2b68aad5b0ab2f7b6da79ed5e620ef5396c2..3d2d3e5fb4dd75bfaa02914665f23c45db894597 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,8 @@ hostfile test.* porting* HPC-info* -tmp \ No newline at end of file +tmp +downloads/* +runner.log +depend_install.sh +.meta \ No newline at end of file diff --git a/README.md b/README.md index 2cb97f9facd3572b7fc794f90b9eec92068b063e..b71739b3036aa3d88c4681a060fd725abbfff894 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ ### 项目背景 -因为HPC应用的复杂性,其依赖安装、环境配置、编译、运行、CPU/GPU性能采集分析的门槛比较高,导致迁移和调优的工作量大,不同的人在不同的机器上跑同样的应用和算例基本上是重头开始,费时费力,而且很多情况下需要同时部署鲲鹏/X86两套环境进行验证,增加了很多的重复性工作,无法聚焦软件算法优化。 +因为HPC应用的复杂性,其依赖安装、环境配置、编译、运行、CPU/GPU性能采集分析的门槛比较高,导致迁移和调优的工作量大,不同的人在不同的机器上跑同样的应用和算例基本上是重头开始,费时费力,而且很多情况下需要同时部署ARM/X86两套环境进行验证,增加了很多的重复性工作,无法聚焦软件算法优化。 ### 项目特色 @@ -11,7 +11,6 @@ - 根据HPC配置一键生成环境脚本、一键编译、一键运行、一键性能采集、一键Benchmark. - 所有配置仅用一个文件记录,HPC应用部署到不同的机器仅需修改配置文件. - 日志管理系统自动记录HPC应用部署过程中的所有信息. -- 常用HPC工具软件开箱即用. - 软件本身无需编译开箱即用,仅依赖Python环境. - (未来) 集成HPC领域常用性能调优手段、核心算法. - (未来) 集群性能分析工具. @@ -93,22 +92,33 @@ source init.sh option支持列表如下所示 -| 选项值 | 解释 | 安装目录 | -| ------------------ | ----------------------------- | ----------------------- | -| gcc | 使用当前gcc进行编译 | software/libs/gcc | -| gcc+mpi | 使用当前gcc+当前mpi进行编译 | software/libs/gcc/mpi | -| clang(bisheng) | 使用当前clang进行编译 | software/libs/clang | -| clang(bisheng)+mpi | 使用当前clang+当前mpi进行编译 | software/libs/clang/mpi | -| nvc | 使用当前nvc进行编译 | software/libs/nvc | -| nvc+mpi | 使用当前nvc+当前mpi进行编译 | software/libs/nvc/mpi | -| icc | 使用当前icc进行编译 | software/libs/icc | -| icc+mpi | 使用当前icc+当前mpi进行编译 | software/libs/icc/mpi | -| com | 安装编译器 | software/compiler | -| any | 安装工具软件 | software/compiler/utils | +| 选项值 | 解释 | 安装目录 | +| ----------- | ----------------------------- | ------------------------- | +| gcc | 使用当前gcc进行编译 | software/libs/gcc | +| gcc+mpi | 使用当前gcc+当前mpi进行编译 | software/libs/gcc/mpi | +| clang | 使用当前clang进行编译 | software/libs/clang | +| clang+mpi | 使用当前clang+当前mpi进行编译 | software/libs/clang/mpi | +| bisheng | 使用毕晟进行编译 | software/libs/bisheng | +| bisheng+mpi | 使用毕晟+当前mpi进行编译 | software/libs/bisheng/mpi | +| nvc | 使用当前nvc进行编译 | software/libs/nvc | +| nvc+mpi | 使用当前nvc+当前mpi进行编译 | software/libs/nvc/mpi | +| icc | 使用当前icc进行编译 | software/libs/icc | +| icc+mpi | 使用当前icc+当前mpi进行编译 | software/libs/icc/mpi | +| com | 安装编译器 | software/compiler | +| any | 安装工具软件 | software/compiler/utils | 注意,如果软件为MPI通信软件(如hmpi、openmpi),会安装到software/mpi目录 -(eg: ./jarvis -install fftw/3.3.8 gcc) +eg: + +``` +./jarvis -install bisheng/2.1.0 com #安装毕晟编译器 +./jarvis -install fftw/3.3.8 gcc+mpi #使用gcc和mpi编译fftw 3.3.8版本 +./jarvis -install openmpi/4.1.2 gcc #使用gcc编译openmpi 4.1.2版本 +``` + + + 5.一键安装所有依赖 ``` @@ -139,25 +149,19 @@ option支持列表如下所示 ./jarvis -p ``` -10.一键Kperf性能采集(生成TopDown) - -``` -./jarvis -kp -``` - -11.一键GPU性能采集(需安装nsys、ncu) +10.一键GPU性能采集(需安装nsys、ncu) ``` ./jarvis -gp ``` -12.一键输出服务器信息(包括CPU、网卡、OS、内存等) +11.一键输出服务器信息(包括CPU、网卡、OS、内存等) ``` ./jarvis -i ``` -13.一键服务器性能评测(包括MPI、OMP、P2P等) +12.一键服务器性能评测(包括MPI、OMP、P2P等) ``` ./jarvis -bench all #运行所有benchmark @@ -166,13 +170,13 @@ option支持列表如下所示 ./jarvis -bench gemm #运行矩阵运算 benchmark ``` -14.切换配置 +13.切换配置 ``` ./jarvis -use XXX.config ``` -15.其它功能查看(网络检测) +14.其它功能查看(网络检测) ``` ./jarvis -h @@ -184,7 +188,7 @@ option支持列表如下所示 贾维斯项目欢迎您的专业技能和热情参与! -小的改进或修复总是值得赞赏的;先从文档开始可能是一个很好的起点。如果您正在考虑对源代码的更大贡献,请先提交一个issue或者在maillist进行讨论。 +小的改进或修复总是值得赞赏的;先从文档开始可能是一个很好的起点。如果您正在考虑做出更大贡献,请提交一个issue或者在hpc.openeuler.org进行讨论。 编写代码并不是为贾维斯做出贡献的唯一方法。您还可以: diff --git a/package/go/1.18/install.sh b/package/go/1.18/install.sh new file mode 100755 index 0000000000000000000000000000000000000000..a99b4445a9aaf2fb511cce903155b6ab367392e8 --- /dev/null +++ b/package/go/1.18/install.sh @@ -0,0 +1,7 @@ +#!/bin/bash +#Download: https://go.dev/dl/ +set -x +set -e +cd ${JARVIS_TMP} +rm -rf /usr/local/go +tar -xzvf ${JARVIS_DOWNLOAD}/go1.18.linux-arm64.tar.gz -C /usr/local diff --git a/src/analysis.py b/src/analysis.py index 1492550b3db69d68f1cc61ebeb532a68183e256f..8e68366e0e28fb9aa41558445b7f795152412dba 100644 --- a/src/analysis.py +++ b/src/analysis.py @@ -545,7 +545,10 @@ yum makecache continue download_url = self.gen_wget_url(self.download_path, url) self.tool.prt_content("DOWNLOAD " + filename) - os.popen(download_url) + output = os.popen(download_url) + data = output.read() + output.close() + if not download_flag: print("The download list is empty!") class Test: diff --git a/templates/qe/6.4/data.qe.test.opt.config b/templates/qe/6.4/data.qe.test.opt.config index 4b6d44762ffb73fffe94ead7fdb2d2ebd675a534..b191dcb5b6b7a92e60b412fba6ed046f2da15061 100644 --- a/templates/qe/6.4/data.qe.test.opt.config +++ b/templates/qe/6.4/data.qe.test.opt.config @@ -2,6 +2,8 @@ 11.11.11.11 [DEPENDENCY] +set -x +set -e ./jarvis -install bisheng/2.1.0 com module purge module use ./software/modulefiles @@ -12,7 +14,7 @@ export FC=`which flang` ./jarvis -install hmpi/1.1.1 bisheng module load hmpi1/1.1.1 ./jarvis -bench mpi -./jarvis -install kml/1.4.0/bisheng bisheng +./jarvis -install openblas/0.3.18 bisheng [ENV] source /etc/profile @@ -23,8 +25,9 @@ export CC=`which clang` export CXX=`which clang++` export FC=`which flang` module load hmpi1/1.1.1 -export BLAS_LIBS="-L/usr/local/kml/lib/kblas/omp -lkblas" -export LAPACK_LIBS="-L/usr/local/kml/lib/ -lklapack_full" +module load openblas/0.3.18 +export BLAS_LIBS="-L${JARVIS_LIBS}/bisheng2/openblas/0.3.18/lib -lopenblas" +export LAPACK_LIBS="-L${JARVIS_LIBS}/bisheng2/openblas/0.3.18/lib -lopenblas" [APP] app_name = QE diff --git a/templates/singularity/singularity.config b/templates/singularity/singularity.config new file mode 100644 index 0000000000000000000000000000000000000000..00846a2fa829d236585303eee71e4d02d85d1d78 --- /dev/null +++ b/templates/singularity/singularity.config @@ -0,0 +1,32 @@ +[SERVER] +11.11.11.11 + +[DEPENDENCY] +set -e +# Install RPM packages for dependencies +sudo yum install -y libseccomp-devel squashfs-tools cryptsetup +./jarvis -install go/1.18 gcc +export PATH=/usr/local/go/bin:$PATH +# Install singrarity from https://github.com/sylabs/singularity.git + +[ENV] +export PATH=/usr/local/go/bin:$PATH + +[APP] +app_name = singularity +build_dir = /tmp/hpcrunner/singularity-ce-3.9.6/ +binary_dir = +case_dir = + +[BUILD] +./mconfig +make -C builddir +sudo make -C builddir install + +[CLEAN] +make clean + +[RUN] +run = +binary = singularity version +nodes = 1 \ No newline at end of file