16 Star 51 Fork 82

openEuler/hpcrunner

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
.workflow
benchmark
container
doc
downloads
examples
images
package
software
src
templates
test
tunning
workloads
.gitignore
CONTRIBUTING.md
LICENSE
README.md
data.config
init.sh
jarvis
proxy.sh
setemail.sh
test-blast.sh
克隆/下载
README.md 11.73 KB
一键复制 编辑 原始数据 按行查看 历史
DFRJ 提交于 9小时前 . update README.md

HPCRunner : 贾维斯智能助手

愿景:自动容器化助力极简部署,一站式调优HPC应用

贾维斯

项目背景

​ HPC被喻为是IT行业“金字塔上的明珠”,其部署、编译、运行、性能采集分析的门槛非常高,不同的机器上部署HPC应用耗费大量精力,而且很多情况下需要同时部署ARM/X86两套环境进行验证,增加了很多的重复性工作,无法聚焦核心算法优化。

贾维斯功能概览

项目特色

  • 支持ARM/X86,一键部署,采用业界权威依赖目录结构管理海量依赖,自动生成module file
  • 根据HPC配置实现一键编译运行、一键CPU/GPU性能采集、一键Benchmark.
  • 所有配置仅用一个文件记录,HPC应用部署到不同的机器仅需修改配置文件.
  • 日志管理系统自动记录HPC应用部署过程中的所有信息.
  • 软件本身无需编译开箱即用,仅依赖Python环境.
  • HPC应用容器化-目前QE已经实现,参考container目录.
  • (未来) 集成HPC领域常用性能调优手段、核心算法.
  • (未来) 集群性能分析工具.
  • (未来) 智能调优.

目录结构

目录/文件 说明 备注
benchmark HPL、Stream、矩阵运算、OpenMP、MPI、P2P等性能测试
doc 文档
downloads 存放依赖库源码包/压缩包
examples 性能小实验
package 存放安装脚本和FAQ
software 依赖库二进制仓库(内置精度分析工具) 自动生成
src 贾维斯源码
templates 常用HPC应用的配置模板
test 贾维斯测试用例
workloads 常用HPC应用的算例合集
init.sh 贾维斯初始化文件
jarvis 贾维斯启动入口

环境依赖

  • X86/ARM架构
  • python3
  • LinuxOS

贾维斯使用流程

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的路径

option支持列表如下所示

选项值 解释 安装目录
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

路标

RoadMap

FAQ

Q1:如何在没有网络的环境下使用贾维斯部署软件?

A:将事先下载好的安装包放置到downloads目录下即可进行后续安装操作。

欢迎贡献

贾维斯项目欢迎您的专业技能和热情参与!

小的改进或修复总是值得赞赏的;先从文档开始可能是一个很好的起点。如果您正在考虑做出更大贡献,请提交一个issue或者在hpc.openeuler.org进行讨论。

编写代码并不是为贾维斯做出贡献的唯一方法。您还可以:

  • 贡献安装脚本
  • 帮助我们测试新的HPC应用
  • 开发教程、演示
  • 为我们宣传
  • 帮助新的贡献者加入

请添加openEuler HPC SIG微信群了解更多HPC部署调优知识

微信群

技术文章

揭开HPC应用的神秘面纱:https://zhuanlan.zhihu.com/p/489828346

我和容器有个约会:https://zhuanlan.zhihu.com/p/499544308

贾维斯:完美而凛然HPC应用管家 https://zhuanlan.zhihu.com/p/518460349

Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/openeuler/hpcrunner.git
git@gitee.com:openeuler/hpcrunner.git
openeuler
hpcrunner
hpcrunner
master

搜索帮助