HPC被喻为是IT行业“金字塔上的明珠”,其部署、编译、运行、性能采集分析的门槛非常高,不同的机器上部署HPC应用耗费大量精力,而且很多情况下需要同时部署ARM/X86两套环境进行验证,增加了很多的重复性工作,无法聚焦核心算法优化。
目录/文件 | 说明 | 备注 |
---|---|---|
benchmark | HPL、Stream、矩阵运算、OpenMP、MPI、P2P等性能测试 | |
doc | 文档 | |
downloads | 存放依赖库源码包/压缩包 | |
examples | 性能小实验 | |
package | 存放安装脚本和FAQ | |
software | 依赖库二进制仓库(内置精度分析工具) | 自动生成 |
src | 贾维斯源码 | |
templates | 常用HPC应用的配置模板 | |
test | 贾维斯测试用例 | |
workloads | 常用HPC应用的算例合集 | |
init.sh | 贾维斯初始化文件 | |
jarvis | 贾维斯启动入口 |
1、开发应用模板
贾维斯中包含典型HPC应用模板, 位于目录”hpcrunner/template”中,可直接使用。如要新增应用模板,需遵循一定的格式新建自定义文件app.config。
配置文件格式如下所示
配置项 | 说明 | 示例 |
---|---|---|
[SERVER] | 指定节点列表,按行书写,用于自动生成hostfile | 11.11.11.11 22.22.22.22 |
[DOWNLOAD] | 格式:app/appversion download_url [alias] **注:**在没有网络场景下,可提前将下载好的安装包放置在hpcrunner/downloads目录下 |
cp2k/8.2 https://github.com/extdomains/github.com/cp2k/cp2k/releases/download/v8.2.0/cp2k-8.2.tar.bz2 |
[DEPENDENCY] | HPC应用所需安装的依赖软件 | ./jarvis -install gmp/6.2.0 clang ./jarvis -install boost/1.72.0 clang |
[ENV] | HPC应用编译运行所需的环境配置 | module use ./software/modulefiles module load bisheng/3.2.0 module load boost/1.72.0 |
[APP] | HPC应用信息,包括应用名、构建路径、二进制路径、算例路径 | app_name = CP2K build_dir = /home/cp2k-8.2/ binary_dir = /home/CP2K/cp2k-8.2/bin/ case_dir = /home/CP2K/cp2k-8.2/benchmarks/QS/ |
[BUILD] | HPC应用构建脚本 | ./configure make -j make install |
[CLEAN] | HPC应用编译清理脚本 | make clean |
[RUN] | HPC应用运行配置,包括前置命令、应用命令和节点个数 | run = mpirun -np 2 binary = cp2k.psmp H2O-256.inp nodes = 1 |
[JOB] | HPC应用作业调度运行配置 | 多瑙作业调度脚本 |
[BATCH] | HPC应用批量运行命令**** | #!/bin/bash mpirun -np 2 cp2k.psmp H2O-256.inp mpirun -np 2 cp2k.psmp H2O-512.inp |
[PERF] | 性能分析采集工具额外参数配置 | perf= -o nsys= ncu=--target-processes all --launch-skip 71434 --launch-count 1 |
2、生效应用模板
./jarvis -use /path/app.config
3、下载安装包
./jarvis -d
4、安装应用依赖
./jarvis -dp
5、编译应用
./jarvis -b
6、运行应用
./jarvis -r
使用默认的应用配置部署运行应用QE
./jarvis -use data.config
./jarvis -d
./jarvis -dp
./jarvis -b
./jarvis -r
功能 | 命令 | 示例/说明 |
---|---|---|
帮助信息 | ./jarvis -h | |
生效应用模板 | ./jarvis -use /path/app.config | 指定所需的应用模板配置文件 |
一键下载HPC应用 | ./jarvis -d | 应用将自动下载[DOWNLOAD]中指定的安装包到downloads目录。 **注:**在没有网络场景下,可提前将下载好的安装包放置到downloads目录下 |
安装依赖 | ./jarvis -install [package/][name/version/other] [option] | 支持安装的软件清单位于package目录下,可在package目录下获取[name/version/other]各字段信息,精确到”install.sh”的上一层目录 各参数具体含义: package:可选 name:软件名 version:软件版本 other:子版本,”install.sh”的上一层目录 option:指定依赖的编译工具,支持的选项如下表 示例如下: 1. 安装编译器 ./jarvis -install hpckit/x.x.x any module use xxx module load bisheng/xxx 2. 安装mpi ./jarvis -install hpckit/x.x.x any module use xxx module load hmpi/xxx 3. 安装依赖 module use software/module* module load bisheng/x.x.x module load hmpi/x.x.x export CC=mpicc CXX=mpicxx FC=mpifort ./jarvis -install hdf5/1.8.20/clang bisheng+mpi 4. 安装工具 ./jarvis -install hpckit/2025.3.30 any ./jarvis -install go/1.18 any |
一键卸载依赖 | ./jarvis -remove xxx | 支持模糊查询 ./jarvis -remove openblas/0.3.18 |
一键下载并安装所有依赖 | ./jarvis -dp | 需要提前指定应用模板./jarvis -use app.config 读取配置文件中的[DEPENDENCY]字段内容并按顺序执行 |
输出已安装的软件清单 | ./jarvis -l | 输出清单以相对路径列出 |
查询已安装的软件 | ./jarvis -f xxx | 查询openblas安装路径 ./jarvis -f openblas |
一键生成环境变量 | ./jarvis -e | 读取配置文件中的[ENV]字段内容并生成env.sh脚本,执行./jarvis -b或./jarvis -r会自动生成并生效 |
一键编译 | ./jarvis -b | 自动进入[APP]字段中的build_dir目录,读取配置文件中的[BUILD]字段内容并生成build.sh脚本执行 |
一键运行 | ./jarvis -r | 自动进入[APP]字段中的case_dir目录,读取配置文件中的[RUN]字段下内容并组装生成run.sh脚本执行 |
一键运行 | ./jarvis -rb | 自动进入[APP]字段中的case_dir目录,读取配置文件中的[BATCH]字段下内容并直接生成batch_run.sh脚本执行 |
一键CPU性能采集 | ./jarvis -p | 读取配置文件中的[PERF]字段下的perf选项内容,然后使用perf工具进行采集信息 |
一键GPU性能采集 | ./jarvis -gp | 读取配置文件中的[PERF]字段下的nsys选项内容,然后使用nsys工具进行采集信息 |
一键输出服务器信息 | ./jarvis -i | 输出CPU、网卡、OS、内存等信息 |
一键评测服务器性能 | ./jarvis -bench all ./jarvis -bench mpi ./jarvis -bench omp ./jarvis -bench gemm | 包括HPL、Stream、MPI、OMP、P2P等评测benchmark支持清单位于目录“hpcrunner/benchmark” |
一键生成Singularity容器定义文件 | ./jarvis -container docker-hub-address | 需要事先指定应用配置./jarvis -use data.config 参数"docker-hub-address"指定基础镜像 示例:./jarvis -container openeuler/openeuler |
更新依赖库的路径 | ./jarvis -u | 如果移动了贾维斯的路径,将自动更新software/modulefiles的路径 |
选项值 | 解释 | 安装目录 |
---|---|---|
com | 安装编译器 | software/compiler |
gcc | 使用gcc进行编译 | software/libs/gcc |
gcc+mpi | 使用gcc和当前生效的mpi进行编译 | software/libs/gcc/mpi |
bisheng | 使用毕昇进行编译 | software/libs/bisheng |
bisheng+mpi | 使用毕昇和当前生效的mpi进行编译 | software/libs/bisheng/mpi |
any | 安装工具软件 | software/utils |
Q1:如何在没有网络的环境下使用贾维斯部署软件?
A:将事先下载好的安装包放置到downloads目录下即可进行后续安装操作。
贾维斯项目欢迎您的专业技能和热情参与!
小的改进或修复总是值得赞赏的;先从文档开始可能是一个很好的起点。如果您正在考虑做出更大贡献,请提交一个issue或者在hpc.openeuler.org进行讨论。
编写代码并不是为贾维斯做出贡献的唯一方法。您还可以:
请添加openEuler HPC SIG微信群了解更多HPC部署调优知识
揭开HPC应用的神秘面纱:https://zhuanlan.zhihu.com/p/489828346
我和容器有个约会:https://zhuanlan.zhihu.com/p/499544308
贾维斯:完美而凛然HPC应用管家 https://zhuanlan.zhihu.com/p/518460349
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。