Parallel implementation of a data assimilation scheme for operational oceanography: the case of the MedBFM model system
By Teruzzi, A., Di Cerbo P., Cossarini, G., Pascolo, E., Salon, S.
The MedBFM model system provides forecasts and reanalysis of the Mediter- ranean Sea biogeochemistry for the European Copernicus Services. The system integrates model and observations through a 3D variational assimilation scheme, whose performance capitalizes on present HPC systems and ensures compli- ance to the service requirements. Domain decomposition with message passing paradigm was implemented to parallelize the assimilation code and maximize performance and scalability. In particular, an innovative approach to the opti- mal parallelization of the spatial filtering algorithm of the assimilation scheme with a dynamical sliced decomposition was developed. Moreover, the efficient parallel solver of the PETSc/TAO library was adopted for optimizing the cost function minimization on which the variational assimilation is based. Consider- ing the complex domain decomposition of the Mediterranean Sea and the high variability of the data input, a modern and scalable software application for variational assimilation schemes that exploits the performance of modern HPC architectures on whole node was developed.
The source files of the 3DVarBio code can be downloaded from the following git repository: https://github.com/inogs/3dVarBio.git.
The version to be used is tagged “v1.0” and can be downloaded with the following git instructions:
git clone git@github.com:inogs/3dVarBio.git
cd 3dVarBio
git checkout tags/v1.0
The main.f90 subroutine of the 3DVarBio code calls the subroutine biovar.f90, which then calls all the subroutines for the execution of the code.
The namelists/ directory contains an example of a namelist file suitable for this code version and to configure the launch of a test run. The main settings of the namelist file and the values used in the test run provided are the following:
-
ctl_tolAbsolute stopping criteria (not used in TaoMinimizer) -
ctl_perRelative stopping criteria (the minimization ends when the gradient of the cost function is less then ctl_per of the gradient at the first step) -
NeofNumber of EOF profiles (Vv operator) -
NregNumber of regions with different EOF preofiles (Vv operator) -
rcf_ntrNumber of iterations of the recursive filter (Vh operator) -
rcf_LHorizontal correlation radius in meters (Vh operator) -
rcf_efcExtension factor for coasts (Vh operator) -
bio_assimUpdates of the assimilation for all the involved biogeochemical variables (Vb operator): =1 calculated internally to 3DVarBio with output made by restart files for the biogeochemical model; =0 not calculated and 3DVarBio provides updates only for total chlorophyll without applying conditions to check updates consistency (output made by a single corr.nc file) -
NphytoNumber of phytoplankton functional types -
chldepMinimum water depth (in meters) of areas of assimilation of satellite observations -
ncmpNumber of components of phytoplankton functional types -
ApplyConditionsIn the evaluation of the updates for the biogeochemical variables 3DVarBio (Vb operator) applies conditions (ApplyCponditions=.true.) to check the consistency of the updates (used only if bio_assim=1) -
sat_obsAssimilation of satellite observations (sat_obs=1) -
argoAssimilation of argo float observations (argo=1) -
uniformLUse of non-uniform correlation radius (uniformL=1; Vh operator) -
anisLUse of anisotropic correlation radius (anisL=1; Vh operator) -
verboseSet verbose output (verbose=1)
The compilation was tested with an intel compiler and using the following modules on the HPC cluster PICO (66 nodes x Intel Xeon E5 2670 v2 @2.5Ghz 128 GB, Mellanox Infinitband FDR) located at CINECA supercomputing center (Bologna, Italy; http://www.hpc.cineca.it/):
profile/advanced
autoload/0.1
intel/pe-xe-2016—binary
intelmpi/5.1.3—binary
petsc/3.7.2--intelmpi--5.1.3—binary
netcdf/4.4.0-parallel--intelmpi--5.1.3—binary
netcdff/4.4.4-parallel--intelmpi--5.1.3—binary
pnetcdf/1.7.0--intelmpi--5.1.3—binary
For the compilation it is necessary to prepare the file compiler.inc. This file contains all the information about the compilers, the libraries and the flags adopted during the compilation. In our configuration we used x86_64.LINUX.intel.inc that is available in the repository. Other templates are available within the repository (x86_64.LINUX.*). We suggest to copy one of the templates (e.g., x86_64.LINUX.intel.inc) into compiler.inc, and then to modify it accordingly to the user configuration. A copy of an execution test can be found in the following repository https://github.com/inogs/3DVarbio_test.git.
The test was carried out on single node using 20 cores. The files contained in the test directory are provided herafter.
-
eofs.ncContaining a set of EOFs which accounts for vertical covariance (Vv)evaEOF eigenvaluesevcEOF eigenvector -
grid1.ncGrid informationdepgrid levelsdxhorizontal resolution along longitudedyhorizontal resolution along latitudelatlatitudelonlongituderegsidentification index of regions with homogenous EOFstmskmask of the grid -
chl_mis.ncMisfit between satellite and model chlorophyll and observation errormisfchlmisfit y-Hxerrchlobservation error R -
gradsal.ncProvide the parameters for the use of anisotropic correlation radius (Vh)kx_nfactor for the radius along longitudeky_nfactor along latitude -
chl_rad_corr.ncNon homogenous correlation radiusradius -
DA__FREQ_1/RST.20130101-120000.P??.nc17 files for each component of the 4 phytoplankton functional types for all the vertical levels of the biogeochemical model. The name of the files refers to the name of the contained variable Pjk. Where, j is the number of the phytoplankton functional type (ranging from 1 to 4); k identifies the internal component (c: carbon; l: chlorophyll; n: nitrogen; p: phosphorous; s: silicon only for phytoplankton P1, i.e., diatoms) -
var_3d_nml
-
RESTARTS/RST.20130101-120000.P??.ncUpdates provided by 3DvarBio for the 17 biogeochemical variables that describes the phytoplankton functional types. The name of the file is made using Pjk, while the variable name in each file is TRNPjk: j is the number of the phytoplankton functional type (ranging from 1 to 4); k identifies the internal component (c: carbon; l: chlorophyll; n: nitrogen; p: phosphorous; s: silicon only for phytoplankton P1, i.e., diatoms) -
RESTARTS/RST.20130101-12:00:00.P??.ncSymbolic link to the previous files needed to correctly couple 3DVarBio with the biogeochemical model (OGST-BFM) -
BioVar.diagnosticsFile containing diagnostics of the 3DVarBio run
var_3d
The code has been executed using the following command:
mpirun –np 20 ./var_3d