鲲鹏社区首页
中文
注册
开发者
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

使用HPCRunner一键构建容器

前置条件

  • 待构建镜像的节点已挂载配置YUM源。

    YUM源挂载配置建议使用全量的ISO Everything包。

  • 待构建镜像的节点需要服务器有外网权限。如无外网权限请先配置外网权限或外网代理。

安装步骤

  1. 使用PuTTY工具,以root用户登录节点。
  2. 克隆仓库。如已通过手动下载了贾维斯智能助手(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.
  3. 初始化HPCRunner。执行如下命令:

    cd hpcrunner

    source init.sh

    hpcrunner表示HPCRunner安装目录。可根据实际情况调整。

  4. 安装go。执行如下命令:

    ./jarvis -install go/1.18 com

    • 若网络条件不佳或在线下载较慢,可提前将go软件的安装包提前下载至HPCRunner的downloads目录,以避免解压或编译安装失败。

      go软件的下载地址为:https://go.dev/dl/go1.18.linux-arm64

    回显结果包含如下示例内容,表示go安装成功:

    ...
    SUCCESSFULLY EXECUTED AT 2025-10-13 09:51:31, CONGRATULATIONS!!!
  5. 配置加载go环境变量。执行如下命令:

    module load ${JARVIS_ROOT}/software/modulefiles/go/1.18

    无回显结果表示正常。

  6. 安装singularity。执行如下命令:

    ./jarvis -install singularity/3.9.6 any

    若网络条件不佳或在线下载较慢,可提前将singularity软件的安装包提前下载至HPCRunner的downloads目录,以避免解压或编译安装失败。

    singularity软件的下载地址为:https://github.com/sylabs/singularity/releases/download/v3.9.6/singularity-ce-3.9.6.tar.gz

    回显结果包含如下示例内容,表示singularity安装成功:

    ...
    SUCCESSFULLY EXECUTED AT 2025-10-13 09:55:31, CONGRATULATIONS!!!
  7. 配置加载singularity环境变量。执行如下命令:

    module load ${JARVIS_ROOT}/software/modulefiles/singularity/3.9.6

    无回显结果表示正常。

  8. 使用singularity构建镜像。执行如下命令:

    singularity build NCL_6.6.2.sif container/ncl/6.6.2/data.NCL662-gcc.arm.cpu.config.def

    回显结果包含如下示例内容,表示镜像构建成功:

    • 构建完成之后生成的.sif文件保存到当前目录。
  9. 运行测试生成的镜像。执行如下命令拷贝算例:

    singularity exec -B ${PWD} NCL_6.6.2.sif cp -r /hpcrunner/software/utils/ncl/6.6.2/gcc/lib/ncarg/nclex/gsun ./

    singularity exec -B ${PWD} NCL_6.6.2.sif cp -r /hpcrunner/software/utils/ncl/6.6.2/gcc/lib/ncarg/nclex/nug ./

  10. 进入算例目录
    cd nug
  11. 创建测试脚本
    vim test.sh
    #!/bin/bash
    wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/CNTASN_1m_200103_grid_T_curvilinear_grid.nc
    wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/rectilinear_grid_2D.nc
    wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/T2M_ERAINT_rectilinear_grid_2D.nc
    wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/r2b4_amip.nc
    wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/tas_mon_1961-1990_rectilinear_grid_2D.nc
    wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/MITgcm_rectilinear_grid_3D.nc
    wget http://www.ncl.ucar.edu/Images/NCLLogoWeb.jpg
    wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/thetao_curvilinear_ocean.nc
    wget http://www.ncl.ucar.edu/Document/Manuals/NCL_User_Guide/Data/tripolar_grid_STORM.nc[d(2] 
    cat > ex01.f << EOF
    C NCLFORTSTART
          subroutine cquad (a, b, c, nq, x, quad)
          real x(nq), quad(nq)
    C NCLEND
    C
    C  Calculate quadratic polynomial values.
    C
          do 10 i=1,nq
            quad(i) = a*x(i)**2 + b*x(i) + c
       10 continue
     
          return
          end
     
    C NCLFORTSTART
          function arcln (numpnt, pointx, pointy)
          dimension pointx(numpnt),pointy(numpnt)
    C NCLEND
     
    C
    C  Calculate arc lengths.
    C
          if (numpnt .lt. 2) then
            print *, 'arcln: number of points must be at least 2'
            stop
          endif
          arcln = 0.
          do 10 i=2,numpnt
            pdist = sqrt((pointx(i)-pointx(i-1))**2 +
         +                        (pointy(i)-pointy(i-1))**2)
            arcln = arcln + pdist
       10 continue
     
          return
          end
    EOF
     
    WRAPIT ex01.f
     
    for file in *.ncl;do
           if [ -e "$file" ];then
               echo "============test $file=============="
               ncl $file
           fi
    done
  12. 执行测试脚本
    singularity exec -B `pwd` ../NCL_6.6.2.sif bash ./test.sh

    测试回显:

    由于http://cmip-pcmdi.llnl.gov/CMIP5/dataLocation网站和http://www.gadm.org/country网站已失效,所以需要该网站数据的部分算例无法测试。如NUG_regrid_unstructured_to_rectilinear_bilinear_wgts_ESMF.ncl和NUG_regrid_unstructured_to_rectilinear_bilinear_wgts_destgrid_ESMF.ncl

  13. 执行以下命令进入另一个测试目录
    cd ../gsun
  14. 创建测试脚本
    vim test.sh
    cp $NCARG_ROOT/share/ncarg/data/asc/u.cocos ./
    for file in gsun*n.ncl
    do
        ncl $file
    done
  15. 执行测试脚本
    singularity exec -B `pwd` ../NCL_6.6.2.sif bash ./test.sh

    测试显示X11弹窗,点击画面关闭