Croco

简介

CROCO 是一个基于 ROMS_AGRIF 构建的海洋建模系统,由 IRD、INRIA、CNRS、IFREMER 和 SHOM(法国致力于环境科学和应用数学的机构)维护。 CROCO 的一个重要目标是解决非常精细的尺度(特别是在沿海地区)及其与更大尺度的相互作用。它包括非静水力求解器、海浪-大气耦合、不断演变的沉积物动力学和海洋生物地球化学、用于平流和混合的新高阶数值方案以及专用 I/O 服务器 (XIOS) 等新功能。源代码附带了一个用于预处理和后处理的工具箱 CROCO_TOOLS。

自行安装croco步骤,以在Pi2.0 KOS系统中安装为例

下载croco与croco_tools源代码并解压

$ wget https://data-croco.ifremer.fr/CODE_ARCHIVE/croco-v1.3.tar.gz
$ wget https://data-croco.ifremer.fr/CODE_ARCHIVE/croco_tools-v1.3.tar.gz
$ tar zxvf croco-v1.3.tar.gz
$ mv croco-v1.3 croco
$ tar croco_tools-v1.3.tar.gz
$ mv croco_tools-v1.3 croco_tools

新建编译文件夹Run

$ cd croco
$ ./create_config.bash

修改编译文件cppdefs.h,启用并行计算,根据用户需求设置配置类型,例如修改为Basin

$ cd Run
$ vim cppdefs.h
$ # /* Parallelization */选项:修改`# undef  MPI` 为 `# define MPI`
$ # /* Configuration Name */选项:修改`# define BENGUELA_LR` 为 `# undef BENGUELA_LR # define Basin`

修改编译文件param.h,设置并行计算调用的核数,例如修改为512核。

$ vim param.h
$ # 修改 `parameter (NP_XI=1,  NP_ETA=4,  NNODES=NP_XI*NP_ETA)` 为 `parameter (NP_XI=16,  NP_ETA=32,  NNODES=NP_XI*NP_ETA)`

注意:该软件提交计算调用的核数需要与param.h设置的核数一致,核数np=NNODES=NP_XI*NP_ETA

修改编译文件jobcomp

$ vim jobcomp  # 修改如下内容:
$ FC=$FC
$ MPIF90=$MPIF90
$ MPIDIR=$(dirname $(dirname $(which $MPIF90) ))
$ MPILIB="-L$MPIDIR/lib -lmpi -limf -lm"
$ MPIINC="-I$MPIDIR/include"

申请计算节点,调用编译软件,声明编译器

$ srun -p cpu -n 8 --pty /bin/bash
$ module load oneapi/2021.4.0
$ export CC=icc
$ export FC=ifort
$ export F90=ifort
$ export F77=ifort
$ export MPIF90=mpiifort

开始编译

$ ./jobcomp > jobcomp.log

编译完成后生成可执行文件croco以及包含源文件的文件夹Compile

提交任务脚本,以Pi2.0集群为例

#!/bin/bash

#SBATCH --job-name=test
#SBATCH --partition=cpu
#SBATCH -N 13
#SBATCH --ntasks-per-node=40
#SABTCH --exclusive
#SBATCH --output=%j.out
#SBATCH --error=%j.err

ulimit -s unlimited
ulimit -l unlimited
ulimit -n 4096

module load oneapi/2021.4.0
module load netcdf-fortran/4.5.2-intel-2021.4.0

mpirun -np 512 ./croco croco.in #提交计算的核数需要与param.h编译文件设置的核数一致!

参考资料


最后更新: 2024 年 11 月 22 日