Compilation et exécution de WPS et WRF (avec modules)

Publié le Publié dans Modèles

Ce document explique comment compiler la version 3.6.1 de  WRF (Weather Research &Forecasting) et WPS (WRF Preprocessing system) en utilisant les compilateurs Intel ou PGI sur ClimServ.

« WRF was developed at the National Center for Atmospheric Research (NCAR)which is operated by the University Corporation for AtmosphericResearch (UCAR). NCAR and UCAR make no proprietary claims, eitherstatutory or otherwise, to this version and release of WRF and considerWRF to be in the public domain for use by any person or entity for anypurpose without any fee or charge. UCAR requests that any WRF userinclude this notice on any partial or full copies of WRF. WRF isprovided on an « AS IS » basis and any warranties, either express orimplied, including but not limited to implied warranties ofnon-infringement, originality, merchantability and fitness for aparticular purpose, are disclaimed. In no event shall UCAR be liablefor any damages, whatsoever, whether direct, indirect, consequential orspecial, that arise out of or in connection with the access, use orperformance of WRF, including infringement actions. » (Cette description est issue de la page : https://www.mmm.ucar.edu/weather-research-and-forecasting-model).

Obtenir le code source

Les codes source de WRF peuvent être téléchargés ici.

 

Pré-requis

Les librairies NetCDF, JASPER, NCARG et HDF5 requises par WRF et WPS sont installées sur ClimServ.

Ce tutoriel est réalisé pour la version 2013 du compilateur  PGI et la version 12.1.3.293 du compilateur Intel.

Fixer l’environnement de compilation avec la commande Module (voir article ici ):

  • Pour le compilateur Intel :

module load intel/12.1.3.293
module load netcdf4/4.2.1.1-ifort
module load openmpi/1.6.5-ifort

  • Pour le compilateur PGI :

module load pgi/2013
module load netcdf4/4.2.1.1-pgf2013
module load openmpi/1.6.5-pgf2013

 

Compilation de l’application

On suppose dans la suite que l’application est installée dans le répertoire $HOME/WRF.

TOPDIR=$HOME/WRF
WRFDIR=$TOPDIR/WRFV3
WPSDIR=$TOPDIR/WPS

Copier ou déplacer les fichiers WRFV3.6.1.TAR.gz et WPSV3.6.1.TAR.gz dans le répertoire $TOPDIR, puis décompresser les archives :

cd $TOPDIR
tar -zxvf WRFV3.6.1.TAR.gz
tar -zxvf WPSV3.6.1.TAR.gz

 

Préparation de l’environnement de compilation de WRF et WPS :

# Pour activer le support des « Large Files » en NetCDF :
export WRFIO_NCD_LARGE_FILE_SUPPORT=1

  • Pour le compilateur Intel :

# Définition des chemins d’acces aux librairies NetCDF
export NETCDF=’/opt/netcdf42/ifort’

  • Pour le compilateur PGI :

# Définition des chemins d’acces aux librairies NetCDF
export NETCDF=’/opt/netcdf42/pgf95′

Compilation de WRF :

# Compilation avec les compilateurs INTEL avec icc + parallèlisme MPI (dmpar) : Option 15

# Compilation avec les compilateurs PGI avec GCC + parallèlisme MPI (dmpar)  : Option 3

cd $WRFDIR
clean -a
./configure
./compile em_real 2>&1 |tee compile.out

 

Compilation de WPS :

# Compilation avec les compilateurs INTEL + parallèlisme MPI (dmpar) : Option20

# Compilation avec les compilateurs PGI + parallèlisme MPI (dmpar) : Option8

cd $WPSDIR
export MPI_LIB= »
./configure

# Compilation
./compile 2>&1 |tee compile.out

 

 

Exécution de l’application

Après compilation, les différents exécutables de WPS et WRF peuvent être lancés soit en mode interactif, soit en batch, sur le cluster de calcul.

 

En mode interactif

Avant d’éxécuter WRF, il est nécessaire de supprimer la limite par défaut du stacksize

# en sh ou bash
ulimit -s unlimited
cd $WRFDIR
./wrf.exe

# en csh ou tcsh
limit stacksize unlimited
cd $WRFDIR
./wrf.exe

 

En mode batch sur le cluster

Les deux scripts suivants montrent un exemple de scripts de lancement de WPS et de WRF sur le cluster. Pour activer le mode parallèle (DMPAR) lors de l’exécution – si celui-ci a été activé lors de la compilation – il suffit d’indiquer dans le script le nombre de noeuds et de processeurs par noeuds requis. Par exemple, l’instruction suivante du scripts PBS correspond à une requête de 2 noeuds et 2 processeurs par noeuds. Dans cet exemple, la commande mpirun lancera 4 instances de WRF en parallèle.

#PBS -l « nodes=2:ppn=2 »

Pour exécuter WPS ou WRF sur un seul processeur, il suffit de spécifier :

#PBS -l « nodes=1:ppn=1 »

 

Exemple de script PBS (run_wps.pbs) pour les instructions de WPS :

#!/bin/sh

####################################
# Script to run geogrid.exe, metgrid.exe, ungrib.exe
# To start this job: qsub run_wps.pbs
####################################

####### Resources used #######
## MPIRUN will use the total number
## of CPUs reserved here :

#PBS -l « nodes=2:ppn=2 »
#PBS -q std

####### Job Outouts configuration #######
# Send a mail when the job ends or fails
#PBS -m ae
# Joins standard and Error outputs in a single file
#PBS -j oe

####### Set Applications PATHS #######
TOPDIR=$HOME/WRF
WPSDIR=$TOPDIR/WPS

GRIBDIR=/data/grib_files_dir

####### Job Instructions #######
# Change to the WPS directory

cd $WPSDIR

#Pour les compilateurs Intels :
module load intel/12.1.3.293
module load netcdf4/4.2.1.1-ifort
module load openmpi/1.6.5-ifort

#Pour les compilateurs PGI :
module load pgi/2013
module load netcdf4/4.2.1.1-pgf2013
module load openmpi/1.6.5-pgf2013 


# Run job :

mpirun geogrid.exe
./link_grib.csh $GRIBDIR/*.grb
mpirun ungrib.exe
mpirun metgrid.exe

Le script est soumis au cluster de calcul par la commande :

qsub run_wps.pbs

Exemple de script PBS (run_wrf.pbs) pour WRF :

Le script suivant permet, en plus d’exécuter WRF, de fixer la valeur du stacksizeà unlimited pour éviter une erreur de segmentation lors de l’exécution.

#!/bin/sh

####################################
# Script to run wrf.exe
# To start this job: qsub run_wrf.pbs
####################################

####### Resources used #######
## MPIRUN will use the total number
## of CPUs reserved here :

#PBS -l « nodes=2:ppn=2 »
#PBS -q std

####### Job Outouts configuration #######
# Send a mail when the job ends or fails

#PBS -m ae
# Joins standard and Error outputs in a single file
#PBS -j oe

####### Set Applications PATHS #######
TOPDIR=$HOME/WRF
WRFDIR=$TOPDIR/WRFV3

####### Job Instructions #######
# Change to the WRF.exe directory

cd $WRFDIR/run

# Execute real.exe
./real.exe

# Create a SHELL script which set stacksize unlimited
# and run wrf.exe

SHSCRIPT=wrf.sh.$$

cat << EOF > $SHSCRIPT
#!/bin/sh

ulimit -s unlimited
./wrf.exe

EOF

chmod 755 $SHSCRIPT

# Run job
mpirun $SHSCRIPT

rm $SHSCRIPT

Le script est soumis au cluster de calcul par la commande :

qsub run_wrf.pbs

 

 

Autres pages d’aide :