使用HPCRunner一键安装CDO
前置条件
YUM源挂载配置建议使用全量的ISO Everything包。
安装步骤
- 使用PuTTY工具,以root用户登录待安装CDO应用的节点。
- 安装基础依赖包。执行如下命令:
yum -y install git time zlib zlib-devel gcc gcc-c++ environment-modules python python3 python3-devel python3-libs python3-pip cmake make numactl numactl-devel numactl-libs rpmdevtools wget libtirpc libtirpc-devel unzip flex tar patch glibc-devel rpcbind csh perl-XML-LibXML xorg-x11-xauth curl curl-devel libcurl-devel libxml2-devel
- 克隆仓库。如已通过手动下载了贾维斯智能助手(HPCRunner),则忽略该步骤,否则执行如下命令:
git clone https://gitee.com/openeuler/hpcrunner.git
回显结果包含如下示例内容,表示HPCRunner克隆成功:
... Cloning into 'hpcrunner'... remote: Enumerating objects: 13018, done. remote: Counting objects: 100% (171/171), done. remote: Compressing objects: 100% (142/142), done. remote: Total 13018 (delta 89), reused 57 (delta 23), pack-reused 12847 (from 1) Receiving objects: 100% (13018/13018), 72.71 MiB | 2.57 MiB/s, done. Resolving deltas: 100% (6150/6150), done.
- 初始化HPCRunner。执行如下命令:
cd hpcrunner
source init.sh
hpcrunner表示HPCRunner安装目录,可根据实际情况调整。
- 选择配置文件,执行如下命令:
./jarvis -use templates/cdo/1.9.8/cdo.arm.hpckit25.2.0.config
回显结果包含如下示例内容,表示配置文件选择成功:
... Switch config file to templates/cdo/1.9.8/cdo.arm.hpckit25.2.0.config Successfully switched. config file saved in file .meta
- 下载CDO应用源码,执行如下命令:
./jarvis -d
如已提前手动下载CDO应用且已放置到HPCRunner的downloads目录,则示例结果回显如下:
... FILE cdo-1.9.8.tar.gz already DOWNLOADED 否则,示例结果回显如下:
否则,示例结果回显如下:
... Saving to: ‘/home/hpcrunner/downloads/cdo-1.9.8.tar.gz’ /home/hpcrun 100%[============================================================>] 10.29M 568KB/s in 19s 2025-10-13 15:26:44 (546 KB/s) - ‘/home/hpcrunner/downloads/cdo-1.9.8.tar.gz’ saved [10793380/10793380]
- 一键配置依赖环境。执行如下命令:
./jarvis -dp
回显结果包含如下示例内容,表示一键配置依赖环境成功:
... SUCCESSFULLY EXECUTED AT 2025-10-13 08:51:01, CONGRATULATIONS!!!
- 一键进行编译。执行如下命令:
./jarvis -b
回显结果包含如下示例内容,表示一键编译成功:
... SUCCESSFULLY EXECUTED AT 2025-10-13 08:51:31, CONGRATULATIONS!!!
- 一键进行安装测试,执行如下命令:
./jarvis -r
回显结果包含如下示例内容,表示安装测试成功:
... Climate Data Operators version 1.9.8 (https://mpimet.mpg.de/cdo) System: aarch64-unknown-linux-gnu CXX Compiler: mpicxx -g -O2 -fopenmp CXX version : unknown C Compiler: mpicc -g -O2 -fopenmp C version : unknown F77 Compiler: mpif90 -g F77 version : unknown Features: 502GB 160threads C++17 Fortran DATA PTHREADS OpenMP HDF5 NC4/HDF5 Libraries: HDF5/1.13.0 Filetypes: srv ext ieg grb1 grb2 nc1 nc2 nc4 nc4c nc5 CDI library version : 1.9.8 cgrbex library version : 1.9.4 ecCodes library version : 1.21.0 NetCDF library version : 4.9.3 of Oct 13 2025 08:44:55 $ hdf5 library version : 1.13.0 exse library version : 1.4.1 FILE library version : 1.8.3 total time used: 2s SUCCESSFULLY EXECUTED AT 2025-10-13 09:02:49, CONGRATULATIONS!!!
运行和验证
通过验证源码自带的单元测试用例,确保核心功能模块的正确性和软件安装的完整性。以下是具体的测试步骤:
- 使用PuTTY工具,以root用户登录已安装CDO应用的节点。
- 加载环境变量。执行如下命令:
cd ${JARVIS_ROOT}
source init.sh
source env.sh
${JARVIS_ROOT} 表示HPCRunner所在目录。
- 执行如下命令,切换到CDO源码单元测试用例目录。
cd ${JARVIS_ROOT}/software/apps/cdo-1.9.8/test
- 编写集成测试脚本。
- 打开文件“test_all.sh”。
vi test_all.sh
- 按“i”进入编辑模式,填充如下信息。
#!/bin/bash echo 3 > /proc/sys/vm/drop_caches rm -f test.log error.log result.log touch test.log error.log result.log for i in *.test; do echo "Testing ${i}..." 2>&1 | tee -a test.log ./${i} > content.log 2>&1 ret=$? cat content.log >> test.log if [ "$ret" -ne 0 ] || grep -q "not ok" content.log || grep -q "command not found" content.log || grep -q "error while loading" content.log; then echo "ERROR: TEST ${i} FAILED." 2>&1 | tee -a error.log cat content.log >> error.log else echo "TEST ${i} PASSED." 2>&1 | tee -a result.log fi done rm -rf content.log - 修改完成后,按“Esc”,输入:wq!,按“Enter”保存并退出文件编辑。
- 打开文件“test_all.sh”。
- 执行集成测试脚本。执行如下命令:
bash test_all.sh
如遇“ERROR: TEST tsformat.test FAILED.”错误,可参见《故障排除》相关章节。
- 验证通过说明。
- 集成测试脚本的回显结果应类似以下示例:
Testing Afterburner.test.. TEST Afterburner.test PASSED. Testing Arithc.test.. TEST Arithc.test PASSED. Testing Arith.test.. TEST Arith.test PASSED. Testing Cat.test.. TEST Cat.test PASSED. ...
- 生成的test.log和result.log文件应包含内容,而error.log文件应为空。
- result.log文件应包含60行,每行均为“TEST XXX.test PASSED.”样式。
- 集成测试脚本的回显结果应类似以下示例: