华为云计算 云知识 ROMs是什么

ROMs是什么

简介

ROMs(Regional Ocean Modeling System)是海洋研究机构常用的区域和大洋环流模式,已经在CO-OPS开始得到大量使用,并且将其列为业务化海洋模式之一。ROMS模式采用F90/F95编写,代码结构依据网格特点编写,支持共享存储和消息传递两种多处理器体系架构,其对集群性能要求较高,具有计算密集、IO读写量较大、网络延迟带宽要求高的特点。模式依据问题规模可达到较好扩展性,规模较小时可加速到将近100core,较大时可达到400-1000core。同时,该应用也可跟气象海洋上其他模式组成耦合模式,或者作为其他气象海洋应用的驱动程序,在国内海洋机构中的应用也比较多。

配置流程

1.获取源代码和测试数据

本文档所测试版本为:ROMs 916

软件获取路径为:官网注册申请通过后使用SVN检出(https://www.myroms.org/svn/src/trunk),如下:

svn checkout https://www.myroms.org/svn/src/trunk ROMs_916

根据提示输入本机root密码,官网注册通过的用户名、用户名对应的密码。

上述命令执行完成后,变更版本至916,如下:

cd ROMs_916
svn update-r 916
cd-
ROMs官网:https://www.myroms.org/

本文以ROMs 916为例,编译安装ROMs。

2.基础环境安装

1)执行如下命令,安装必要的系统组件

yum install-y curl-devel libcurl-devel zlib-devel dos2unix

2)执行如下命令下载基础环境软件包

wget https://ftp.gnu.org/gnu/gcc/gcc-9.1.0/gcc-9.1.0.tar.gz
wget https://download.open-mpi.org/release/open-mpi/v3.1/openmpi-3.1.4.tar.gz
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.5/src/hdf5-1.10.5.tar.gz
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-c-4.7.0.tar.gz
wget ftp://ftp.unidata.ucar.edu/pub/netcdf/netcdf-fortran-4.4.5.tar.gz

3)依次执行如下命令升级安装最新版gcc编译器(当前为gcc v9.1.0)

tar-zxvf gcc-9.1.0.tar.gz
cd gcc-9.1.0
./contrib/download_prerequisites
./configure--prefix=/usr/local/gcc/9.1.0
make-j 4
make install
cd-

4)依次执行如下命令安装并行库OpenMPI(v3.1.4)

export GCC_HOME=/usr/local/gcc/9.1.0/
export PATH=$GCC_HOME/bin:$PATH
export LD_LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64:$LD_LIBRARY_PATH
export INCLUDE=$GCC_HOME/include:$INCLUDE
tar-zxvf openmpi-3.1.4.tar.gz
cd openmpi-3.1.4
./configure--prefix=/usr/local/openmpi3--enable-orterun-prefix-by-default
make-j 4
make install
cd-

5)依次执行如下命令安装数据格式库HDF5(v1.10.5)

export MPI_HOME=/usr/local/openmpi3
export PATH=$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
export INCLUDE=$MPI_HOME/include:$INCLUDE
tar-zxvf hdf5-1.10.5.tar.gz
cd hdf5-1.10.5
./configure--prefix=/usr/local//hdf5--enable-fortran--enable-parallel CC=mpicc FC=mpif90 CXX=mpicxx
make-j 4
make install
cd-

6)依次执行如下命令安装数据格式库NetCDF(v4.x.x)

export HDF5=/usr/local/hdf5
export PATH=$HDF5/bin:$PATH
export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH
export INCLUDE=$HDF5/include:$INCLUDE
tar-zxvf netcdf-c-4.7.0.tar.gz
cd netcdf-c-4.7.0
./configure--prefix=/usr/local/netcdf LDFLAGS="-L$HDF5/lib"CPPFLAGS="-I$HDF5/include"CC=mpicc--disable-dap
make-j 4
make install
cd-
export NETCDF=/usr/local/netcdf
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
export INCLUDE=$NETCDF/include:$INCLUDE
tar-zxvf netcdf-fortran-4.4.5.tar.gz
cd netcdf-fortran-4.4.5
./configure--prefix=/usr/local/netcdf CPPFLAGS="-I$HDF5/include-I$NETCDF/include"LDFLAGS="-L$HDF5/lib-L$NETCDF/lib"CC=mpicc FC=mpif90 F77=mpif90
make-j 4
make install
cd-

3.主程序编译

1)依次执行如下命令,建立安装目录、拷贝源码并进入安装目录

mkdir-p/usr/local/ROMs/
cp-r ROMs_916/usr/local/ROMs/
cd/usr/local/ROMs/

2)依次使用如下命令,创建依赖组件环境变量加载脚本

vim env-ROMs.sh

依次输入如下行:

export GCC_HOME=/usr/local/gcc/9.1.0/
export PATH=$GCC_HOME/bin:$PATH
export LD_LIBRARY_PATH=$GCC_HOME/lib:$GCC_HOME/lib64:$LD_LIBRARY_PATH
export INCLUDE=$GCC_HOME/include:$INCLUDE
export MPI_HOME=/usr/local/openmpi3
export PATH=$MPI_HOME/bin:$PATH
export LD_LIBRARY_PATH=$MPI_HOME/lib:$LD_LIBRARY_PATH
export INCLUDE=$MPI_HOME/include:$INCLUDE
export HDF5=/usr/local/hdf5
export PATH=$HDF5/bin:$PATH
export LD_LIBRARY_PATH=$HDF5/lib:$LD_LIBRARY_PATH
export INCLUDE=$HDF5/include:$INCLUDE
export NETCDF=/usr/local/netcdf
export PATH=$NETCDF/bin:$PATH
export LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH
export INCLUDE=$NETCDF/include:$INCLUDE

保存并退出vim。

3)使用如下命令,加载环境变量

source/usr/local/ROMs/env-ROMs.sh

4)执行如下命令,将ROMs_916所有源码文件转换为Linux格式

find.-type f-exec dos2unix{};

5)依次执行如下命令,建立编译测试目录,并拷贝测试所需输入文件

mkdir test
cp ROMs_916/ROMS/Bin/build.bash test/
cp ROMs_916/ROMS/External/ocean_upwelling.in test
cp ROMs_916/ROMS/External/varinfo.dat test/
cp ROMs_916/ROMS/Include/upwelling.h test/

6)依次执行如下命令,进入编译测试目录,配置编译脚本

cd test/
vim build.bash

修改ROMS_APPLICATION变量值,本次算例采用upweilling(默认无需修改),如下:

export ROMS_APPLICATION=UPWELLING

修改MY_ROOT_DIR变量值,配置为安装目录绝对路径,如下:

export MY_ROOT_DIR=/usr/local/ROMs/

修改MY_ROMS_SRC变量值,配置为ROMs源码目录,如下:

export MY_ROMS_SRC=${MY_ROOT_DIR}/ROMS_916

配置基础MPI环境和编译器等信息,如下:

export USE_MPI=on
export USE_MPIF90=on
export which_MPI=openmpi
export FORT=gfortran
export USE_LARGE=on
export USE_NETCDF4=on
export USE_PARALLEL_IO=on

在“if[-n"${USE_MPIF90:+1}"];then”段落配置gfortran对应的“openmpi”路径,如下:

export PATH=/usr/local/openmpi3/bin:$PATH

在NetCDF配置段落的最后指定NetCDF环境变量,如下:

export NF_CONFIG=/usr/local/netcdf/bin/nf-config
export NETCDF_INCDIR=/usr/local/netcdf/include
export NETCDF_LIBDIR=/usr/local/netcdf/lib

保存并退出vim。

7)执行如下命令,配置算例输入文件

vim ocean_upwelling.in

配置VARNAME值为测试目录的输入文件,如:

VARNAME=/usr/local/ROMs/test/varinfo.dat

配置“NtileI”和“NtileJ”值为并行核心数,二者的乘积应与运行时设置的并行核心数相等,例如当云主机核心数为4时,配置如下:

NtileI==2
NtileJ==2

需要注意的是,NtileI、NtileJ的值需要与Lm、Mm的值相匹配,不然会导致计算异常。

保存并退出vim。

8)执行如下命令,编译ROMs主程序

./build.bash-j 4

正确编译完成后,当前目录生成oceanM可执行程序。

9)依次执行如下命令,开始ROMs测试(根据云主机配置,本次使用4个处理核心执行测试)

source/usr/local/ROMs/env-ROMs.sh
mpirun-np 4./oceanM ocean_upwelling.in

如果当前账户为root账户,则mpirun还需加入允许root运行的参数“mpirun–allow-run-as-root-np 4./oceanM ocean_upwelling.in”

正确执行完成后当前目录生成计算结果,如下:

上一篇:江苏鲲鹏训练营&鲲鹏应用开发者大赛 下一篇:函数工作流有哪些功能