diff --git a/README.md b/README.md index 3a2fa7c62eb661dbca2dca62c35f43a6332ce7fb..13837e4845d5036a55e39144e6340369ad3c4b05 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ # HPCRunner : 贾维斯智能助手 -## ***愿景:自动容器化助力极简部署,一站式调优HPC应用*** +## **愿景:自动容器化助力极简部署,一站式调优HPC应用** ![贾维斯](./images/jarvis-logo.png) -### 项目背景 +## 项目背景 ​ HPC被喻为是IT行业“金字塔上的明珠”,其部署、编译、运行、性能采集分析的门槛非常高,不同的机器上部署HPC应用耗费大量精力,而且很多情况下需要同时部署ARM/X86两套环境进行验证,增加了很多的重复性工作,无法聚焦核心算法优化。 ![贾维斯功能概览](./images/jarvis.png) -### 项目特色 +## 项目特色 - 支持ARM/X86,一键部署,采用业界权威依赖目录结构管理海量依赖,自动生成module file - 根据HPC配置实现一键编译运行、一键CPU/GPU性能采集、一键Benchmark. @@ -19,11 +19,11 @@ - (未来) 集群性能分析工具. - (未来) 智能调优. -### 目录结构 +## 目录结构 | 目录/文件 | 说明 | 备注 | | --------- | ---------------------------------- | -------- | -| benchmark | 矩阵运算、OpenMP、MPI、P2P性能测试 | | +| benchmark | HPL、Stream、矩阵运算、OpenMP、MPI、P2P等性能测试 | | | doc | 文档 | | | downloads | 存放依赖库源码包/压缩包 | | | examples | 性能小实验 | | @@ -36,252 +36,125 @@ | init.sh | 贾维斯初始化文件 | | | jarvis | 贾维斯启动入口 | | -### 支持安装的依赖列表 -| 软件名 | 软件信息 | 类别 | -| ------- | -------------- | --------- | -| antlr | 代码生成器,用于构建编译器和解释器 | 开发工具 | -| cairo | 2D图形库,支持多种输出设备和格式 | 图像处理 | -| fftw | 快速傅里叶变换库,支持多种算法和精度 | 数学库 | -| go | 编程语言,具有高效的垃圾回收和并发特性 | 开发工具 | -| htslib | 高通量测序数据处理库,支持多种常见格式的文件操作 | 数据库 | -| kfft | 快速傅里叶变换库鲲鹏版本 | 数学库 | -| libxml2 | 轻量级、可移植的XML解析库 | 开发工具 | -| nvhpc | NVIDIA HPC SDK,包含CUDA和Fortran编译器 | 开发工具 | -| osu | 基准测试套件,用于衡量系统性能 | 性能评估 | -| Porting | HPC应用迁移工具,支持将应用迁移到鲲鹏 | 应用迁移 | -| scotch | 科学计算软件包,包括图划分、矩阵操作等模块 | 科学计算 | -| vis5dplus | 五维数据可视化软件,支持多种数据格式和渲染方式 | 可视化 | -| arpack | 稀疏矩阵特征值计算库 | 数学库 | -| automake | GNU Autotools工具集的一部分,用于生成Makefile | 开发工具 | -| cmake | 用于管理C/C++软件构建和依赖关系的跨平台工具 | 开发工具 | -| freetype | TrueType字体渲染引擎 | 图像处理 | -| g2clib | 处理GRIB和GRIB2格式气象数据的库 | 数据库 | -| grads | 可视化气象数据的软件 | 可视化 | -| grib_api | 处理GRIB和BUFR格式气象数据的库 | 数据库 | -| Hyper-tuner | 高性能计算任务调优工具 | 性能优化 | -| hypre | 大规模稀疏线性系统求解器 | 数学库 | -| kgcc | 基于鲲鹏平台极致优化的GCC编译器 | 开发工具 | -| kml | 基于鲲鹏平台极致优化的数学库 | 数学库 | -| mesa | 开源3D图形库 | 图像处理 | -| metis | 图划分和重排列库 | 科学计算 | -| oneapi | Intel开发的工具包,支持各种体系结构的HPC应用 | 开发工具 | -| openblas | 线性代数库,实现BLAS接口 | 数学库 | -| parmetis | 划分大型稀疏图形的高性能库 | 科学计算 | -| petsc | 大规模科学计算软件包 | 科学计算 | -| precice | 进程耦合库,用于将不同物理学模型耦合起来 | 应用部署 | -| proj | 地理空间数据处理库 | 地理信息 | -| singularity | 容器化解决方案 | 应用部署 | -| slepc | 大规模特征值计算库 | 数学库 | -| wxWidgets | 跨平台窗口工具包 | 开发工具 | -| yaml-cpp | C++ YAML解析器和生成器 | 开发工具 | -| bedtools | 用于基因组特征分析的软件 | 数据库 | -| ctffind | 基于图像处理的电子显微镜聚焦软件 | 图像处理 | -| gatk | 基因组变异分析工具 | 序列分析 | -| gsl | GNU科学库,提供多种数学函数和数据结构 | 数学库 | -| ImageMagick | 处理图像的开源软件 | 图像处理 | -| lapack | 线性代数库,主要实现了BLAS接口 | 数学库 | -| mfem | 可扩展有限元方法库 | 数学库 | -| opencoarrays | 并行编程库 | 开发工具 | -| picard | 处理生物信息数据的Java库 | 序列分析 | -| python3 | Python编程语言的最新版本 | 开发工具 | -| spglib | 空间群处理库 | 科学计算 | -| zlib | 压缩库 | 工具库 | -| bisheng | 基于鲲鹏极致优化的毕晟编译器,基于LLVM体系 | 开发工具 | -| blas | 基本线性代数子程序 | 数学库 | -| curl | 数据传输工具 | 工具库 | -| cuda | NVIDIA的并行计算平台 | 并行编程 | -| gcc | GNU C和C++编译器 | 开发工具 | -| gdal | 用于地理空间数据转换和处理的开源库 | 地理信息 | -| hdf4 | HDF4数据文件格式处理库 | 科学计算 | -| hdf5 | HDF5数据文件格式处理库 | 科学计算 | -| ioapi | 常见大气化学模型输出和输入预处理库 | 数据库 | -| IPM | 描述HPC应用程序的性能测量的套件 | 性能优化 | -| libint | 提供高精度库令积分的C库 | 数学库 | -| libjpeg | JPEG图像压缩/解压缩库 | 图像处理 | -| mpich | 高性能消息传递接口库 | 并行编程 | -| mumps | 大规模稀疏线性系统求解器 | 数学库 | -| opencv | 开源计算机视觉和机器学习软件库 | 图像处理 | -| openjpeg | 用于压缩JPEG2000数据的开源库 | 图像处理 | -| pio | 访问并行IO的工具 | 数据库 | -| pixman | 图像处理和绘图库 | 图像处理 | -| R | 开源统计计算和绘图软件 | 开发工具 | -| spooles | 大规模稀疏线性代数Solver | 数学库 | -| szip | 压缩库 | 工具库 | -| boost | 十多年来一直是C++开发人员不可或缺的库 | 开发工具 | -| bowtie2 | 测序匹配工具 | 序列分析 | -| darshan | HPC应用程序性能分析工具,IO性能分析 | 性能优化 | -| eigen3 | C++模版实现的线性代数库 | 数学库 | -| glibc | GNU C语言库 | 工具库 | -| git | 分布式版本控制系统 | 开发工具 | -| hdf-eos2 | HDF-EOS2数据集处理库 | 科学计算 | -| hdf-eos5 | HDF-EOS5数据集处理库 | 科学计算 | -| jasper | 图像压缩/解压缩库 | 图像处理 | -| jellyfish | 海星组装工具 | 序列分析 | -| libpng | PNG图像格式处理库 | 图像处理 | -| libvori | 计算相邻格点之间夹角,适用于大尺寸网格 | 科学计算 | -| ncl | NCAR命令语言 | 开发工具 | -| ncview | 可视化海洋和气象数据 | 可视化 | -| openlb | 模拟流体现象的软件 | 科学计算 | -| openmpi | 高性能消息传递接口库 | 并行编程 | -| pkg-config | 安装GNU和Unix的编译器等工具所需的参数 | 工具库 | -| plumed | 对构象变化进行统计物理和化学分析的软件包 | 序列分析 | -| samtools | 处理NGS数据的磁盘和内存带索引文件的命令列表 | 数据库 | -| salmon | 快速准确地从RNA-seq读数估计转录本表达水平 | 数据库 | -| tau | HPC应用程序性能分析工具 | 性能优化 | -| udunits | 单位标准化的C程序中用于解释单位 | 开发工具 | -| bwa | 测序匹配工具 | 序列分析 | -| elpa | 提供多种实现和算法的Eigenvalue求解器 | 数学库 | -| gmp | 高精度计算库 | 数学库 | -| hmpi | 高性能消息传递接口库 | 并行编程 | -| kahip | 图划分库 | 图形计算 | -| libxc | C语言库,可用于从交换关联功能获得DFT近似 | 数学库 | -| netcdf | 处理气象和海洋科学等领域大型科学数据的C库 | 科学计算 | -| optimized-routines | BLAS,LAPACK和这些程序中相关库的优化版本 | 数学库 | -| pnetcdf | 访问并行I/O的工具库 | 数据库 | -| scalapack | 大规模稠密线性代数求解器 | 数学库 | -| valgrind | 内存调试和性能分析工具 | 开发工具 | - -### 支持安装的HPC应用列表 - -| 应用名 | 应用信息 | 领域 | -| ---------------- | --------------------------------------------- | --------- | -| abinit | 第一个完全自主实现密度泛函理论的程序 | 科学计算 | -| agcm | 气象局自主研发的全球大气环流谱模式 | 大气科学 | -| amber | 分子动力学模拟软件 | 生命科学 | -| bowtie2 | 测序匹配工具 | 序列分析 | -| bwa | 分析二代测序数据 | 序列分析 | -| calculix | 有限元分析代码 | 工程 | -| duns | 模拟大气化学反应 | 大气科学 | -| elmer | 多物理场模拟系统 | 数学库 | -| grapes | 气象预报应用 | 大气科学 | -| gromacs | 生物分子动力学软件 | 生命科学 | -| imb | Intel MPI Benchmarks | 性能优化 | -| ImageMagick | 图像处理命令行工具 | 图像处理 | -| ioapi | I/O API支持emission和achimie模型 | 大气科学 | -| mg-cfd | 并行计算流体力学软件 | 科学计算 | -| mfem | 软件库,解决非线性问题和超大规模的并行问题 | 数学库 | -| nco | 并行化Unix / Linux命令行工具,可用于处理NetCDF文件 | 科学计算 | -| nwchem | 高性能计算量子化学模拟软件 | 化学 | -| ncview | 可视化海洋和气象数据 | 可视化 | -| openfoam | 开源的CFD软件 | 科学计算 | -| openjpeg | 图像格式处理库 | 图像处理 | -| openlb | 模拟流体现象的软件 | 科学计算 | -| opencv | 开源计算机视觉库 | 计算机视觉 | -| pytorch | Python语言驱动的深度学习框架 | 机器学习 | -| qe | 第一个基于密度泛函理论的自由软件 | 科学计算 | -| qmcpack | 基于Monte Carlo方法的量子物理仿真程序 | 物理学 | -| samtools | 处理NGS数据的磁盘和内存带索引文件的命令列表 | 数据库 | -| scotch | 图划分库 | 图形计算 | -| siesta | 第一性原理计算软件 | 物理学 | -| SU2 | 开源大规模CFD程序 | 科学计算 | -| trinity | RNA-seq transcriptome拼装器 | 序列分析 | -| udunits | C程序中用于解释单位的库 | 开发工具 | -| bcc-esm | 全球气候系统模型 | 大气科学 | -| bedtools | 常见的基因组工具 | 生命科学 | -| blast | 序列匹配软件 | 序列分析 | -| CMAQ | 使用化学传输模型的空气质量建模工具 | 大气科学 | -| CP2K | 高精度物理和化学模拟 | 科学计算 | -| CESM | 全球气候模型 | 大气科学 | -| ctffind | 粒子旋转平均程序,用于酶成像等领域 | 生命科学 | -| fvcom | 具有海洋生态动力学和水质应用的三维浪涌模型 | 海洋科学 | -| gatk | 基因组变异检测框架 | 生命科学 | -| grads | 可视化大气-土壤系统模型 | 数据可视化 | -| hpcg | 并行HPC线性求解器性能基准 | 性能优化 | -| hpl | HPL CheckRecd性能基准 | 性能优化 | -| htslib | 用于高通量序列数据处理的C库 | 生命科学 | -| jasper | JPEG-2000图像压缩库 | 图像处理 | -| lammps | 大型分子动力学软件 | 生命科学 | -| libjpeg | 压缩和解压缩JPEG影象 | 图像处理 | -| miniFE | 有限元求解器 | 工程 | -| mumps | 并行稠密和稀疏直接线性求解器 | 数学库 | -| namd | 大规模分子动力学仿真软件 | 生命科学 | -| ncl | NCAR Command Language,用于气象和大气科学 | 大气科学 | -| octave | 数值计算软件包 | 数学库 | -| octopus | 有限成键密度泛函理论程序 | 科学计算 | -| OpenCoarrays | 使用Fortran COARRAYS的并行编程模式 | 并行编程 | -| op2 | 一种快速GPU加速的稠密矩阵操作库 | 数学库 | -| picard | 工具套件,用于操纵大规模数据集 | 生命科学 | -| petsc | 并行线性代数工具 | 数学库 | -| rmaps-now | 短时预报应用 | 大气科学 | -| relion | 单粒子冷冻电镜图像处理软件 | 生命科学 | -| roms | 海洋环境建模工具 | 海洋科学 | -| SPECFEM3D_GLOBE | 全球弹性波地震模拟 | 地球物理 | -| slepc | 大型特征值问题求解器 | 数学库 | -| stream | 用于衡量计算机系统内存带宽的性能,为数据读写的不同操作提供独立的评估 | 性能优化 | -| wannier90 | 转换Bloch波函数为Wannier函数的程序 | 物理学 | -| wrf | 天气预报和研究模型 | 大气科学 | -| wxWidgets | 用于创建跨平台GUI应用程序的开发工具 | 开发工具 | - - -### 使用说明 - -1.下载包解压之后初始化 +## 环境依赖 + +- 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、下载安装包 ``` -source ./init.sh +./jarvis -d ``` -2.修改data.config或者套用现有模板,各配置项说明如下所示: - -| 配置项 | 说明 | 示例 | -| :----------: | :----------------------------------------------------------- | :----------------------------------------------------------- | -| [SERVER] | 服务器节点列表,多节点时用于自动生成hostfile,每行一个节点 | 11.11.11.11 | -| [DOWNLOAD] | 每行一个软件的版本和下载链接,默认下载到downloads目录(可设置别名) | cp2k/8.2 https://xxx cp2k.8.2.tar.gz | -| [DEPENDENCY] | HPC应用依赖安装脚本 | ./jarvis -install gcc/9.3.1 com
module use ./software/modulefiles
module load gcc9 | -| [ENV] | HPC应用编译运行环境配置 | source env.sh | -| [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应用构建脚本 | make -j 128 | -| [CLEAN] | HPC应用编译清理脚本 | make -j 128 clean | -| [RUN] | HPC应用运行配置,包括前置命令、应用命令和节点个数 | run = mpirun -np 2
binary = cp2k.psmp H2O-256.inp
nodes = 1 | -| [JOB] | HPC应用作业调度运行配置 | 多瑙作业调度脚本 | -| [BATCH] | HPC应用批量运行命令 | #!/bin/bash
nvidia-smi -pm 1
nvidia-smi -ac 1215,1410 | -| [LOOP] | HPC循环优化工具 | 将循环代码自动生成可进行性能分析和精度对比的程序 | -| [PERF] | 性能工具额外参数 | perf= -o
nsys=
ncu=--target-processes all --launch-skip 71434 --launch-count 1 | - -3.贾维斯命令大全 -| 功能 | 命令 | 示例/说明 | -| --- | --- | --- | -| 一键下载HPC应用 | ./jarvis -d | 应用将自动下载[DOWNLOAD]中地址到downloads目录 | -| 安装依赖 | ./jarvis -install [package/][name/version/other] [option] | ./jarvis -install bisheng/2.1.0 com | -| 一键卸载依赖 | ./jarvis -remove xxx | 支持模糊查询 ./jarvis -remove openblas/0.3.18 | -| 一键下载并安装所有依赖 | ./jarvis -dp |读取配置文件中的[DEPENDENCY]字段内容并按顺序执行 | -| 输出已安装的软件清单 | ./jarvis -l | 输出清单以相对路径列出 | -| 查询已安装的软件 | ./jarvis -f xxx | 查询openblas安装路径 ./jarvis -f openblas | -| 一键生成环境变量| ./jarvis -e | 读取配置文件中的[ENV]字段内容并生成env.sh脚本执行,执行-b/-r会自动生成 | -| 一键编译 | ./jarvis -b | 自动进入[APP]字段中的build_dir目录,读取配置文件中的[BUILD]字段内容并生成build.sh脚本执行 | -| 一键运行 | ./jarvis -r | 自动进入[APP]字段中的case_dir目录,读取配置文件中的[RUN]字段内容并生成run.sh脚本执行 | -| 一键CPU性能采集 | ./jarvis -p | 读取配置文件中的[PERF]字段内容的perf选项 | -| 一键GPU性能采集 | ./jarvis -gp | 需安装CUDA驱动 | -| 一键输出服务器信息 | ./jarvis -i | 输出CPU、网卡、OS、内存等信息| -| 一键服务器性能评测 | ./jarvis -bench all
./jarvis -bench mpi
./jarvis -bench omp
./jarvis -bench gemm | 包括MPI、OMP、P2P等评测 | -| 切换配置| ./jarvis -use XXX.config | 优先读取环境变量中的JARVIS_CONFIG,否则读取XXX.config,配置文件路径会保存到.meta文件中 | -| 根据当前配置生成Singularity容器定义文件 | ./jarvis -container docker-hub-address | ./jarvis -container openeuler:openeuler | -| 更新依赖库的路径 | ./jarvis -u | 如果移动了贾维斯的路径,将自动更新software/modulefiles的路径 | -| 生成Fortran循环优化代码 | ./jarvis -loop | | -| 帮助信息 | ./jarvis -h | | - -安装依赖的option支持列表如下所示 - -| 选项值 | 解释 | 安装目录 | -| ----------- | ----------------------------- | ------------------------- | -| 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/utils | - -### 路标 +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](./images/roadmap.png) -### 欢迎贡献 +## FAQ + +Q1:如何在没有网络的环境下使用贾维斯部署软件? + +A:将事先下载好的安装包放置到downloads目录下即可进行后续安装操作。 + +## 欢迎贡献 贾维斯项目欢迎您的专业技能和热情参与! @@ -299,7 +172,7 @@ source ./init.sh ![微信群](./images/wechat-group-qr.png) -### 技术文章 +## 技术文章 揭开HPC应用的神秘面纱:https://zhuanlan.zhihu.com/p/489828346