Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.


Panel
borderColorlightgray
borderWidth1
titleBGColormediumgray
borderStylesolid
titleSadržaj

Table of Contents

https://www.mmm.ucar.edu/weather-research-and-forecasting-model

WRF je preveden s Intel 2019 i OpenMP 3.0.

...

Dostupne verzije


VerzijaModul
3.8.1WRF/3.8.1-openmpi-intel
4.1.5WRF/4.1.5
4.3WRF/4.3


Note

Sve verzije su optimirane za izvođenje na p28* redovima

Korištenje

Code Block
titleamber-cpu-parallel.sge
#!/bin/sh
#$ -N WRF
#$ -pe p28*full 28
#$ -cwd

cd /home/user/input_dir

module load WRF/3.8.1-openmpi-intel

mpirun -np $NSLOTS $FLAGS wrf.exe

Instalacija

Priprema potrebnih ovisnosti

Code Block
mkdir dependencies
cd dependencies/

hdf5

Code Block
wget https://support.hdfgroup.org/ftp/HDF5/current/src/hdf5-1.10.5.tar.gz
export CC=mpicc
export CXX=mpic++
export FC=mpif90
export F90=mpif90
tar xzvf hdf5-1.10.5.tar.gz
cd hdf5-1.10.5
./configure --prefix=/apps/WRF/dependencies/ --enable-parallel --enable-shared --enable-fortran
make -j 8 install

parallel netcdf

Code Block
wget http://cucis.ece.northwestern.edu/projects/PnetCDF/Release/pnetcdf-1.12.0.tar.gz
export CC=mpicc
export CXX=mpicxx
export FC=mpif90
export F77=mpif90
export F90=mpif90
export OMPI_MPICC=icc
export OMPI_MPICXX=icpc
export OMPI_MPIFC=ifort
export OMPI_MPIF77=ifort
export OMPI_MPIF90=ifort
export CFLAGS="-g -O2 -fPIC"
export CXXFLAGS="-g -O2 -fPIC"
export FFLAGS="-g -fPIC"
export FCFLAGS="-g -fPIC"
export FLDFLAGS="-fPIC"
export F90LDFLAGS="-fPIC"
export LDFLAGS="-fPIC"
tar xzvf pnetcdf-1.12.0.tar.gz
cd pnetcdf-1.12.0
./configure --prefix=/apps/WRF/dependencies/ --enable-fortran --enable-large-file-test
make -j 8 install

netcdf-c

Code Block
wget https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-c-4.7.2.tar.gz
HDF5=/apps/WRF/dependencies
PNET=/apps/WRF/dependencies/export 
CPPFLAGS="-I$HDF5/include -I$PNET/include"
export CFLAGS="-I$HDF5/include -I$PNET/include"
export CXXFLAGS="-I$HDF5/include -I$PNET/include"
export FCFLAGS="-I$HDF5/include -I$PNET/include"
export FFLAGS="-I$HDF5/include -I$PNET/include"
export LDFLAGS="-I$HDF5/include -I$PNET/include -L$PNET/lib -L$HDF5/lib"
export WRFIO_NCD_LARGE_FILE_SUPPORT=1
tar xzvf netcdf-c-4.7.2.tar.gz
cd netcdf-c-4.7.2
./configure --prefix=/apps/WRF/dependencies/ --disable-static --enable-shared --with-pic --enable-parallel-tests -enable-pnetcdf --enable-largefile
make
make install

netcdf-fortran

Code Block
wget https://www.unidata.ucar.edu/downloads/netcdf/ftp/netcdf-fortran-4.5.2.tar.gz
NCDIR=/apps/WRF/dependencies
export LD_LIBRARY_PATH=${NCDIR}/lib:${LD_LIBRARY_PATH}
export CPPFLAGS="-I$HDF5/include -I$NCDIR/include"
export CFLAGS="-I$HDF5/include -I$NCDIR/include"
export CXXFLAGS="-I$HDF5/include -I$NCDIR/include"
export FCFLAGS="-I$HDF5/include -I$NCDIR/include"
export FFLAGS="-I$HDF5/include -I$NCDIR/include"
export LDFLAGS="-I$HDF5/include -I$NCDIR/include -L$NCDIR/lib"
tar xzvf netcdf-fortran-4.5.2.tar.gz 
cd netcdf-fortran-4.5.2
./configure --prefix=$NCDIR --disable-static --enable-shared --with-pic --enable-parallel-tests --enable-large-file-tests --enable-largefile
make
make install

Instalacija WRF-a

...

U najosnovnijoj verziji, tijek rada pri izradi simulacija je sljedeći:

  1. WPS korak - prikupljanje ulaznih meteoroloških podataka i priprema statičkih podataka potrebnih za simuliranje
  2. WRF korak - inicijalizacija statičkih podataka iz prethodnog koraka i integracija pomoću WRF-ARW jezgre

Prvi korak je serijske prirode i ne zahtijeva pozivanje neke od dostupnih paralelnih okolina.

Drugi se korak većinski oslanja na paralelizaciju i ubrzanje proračuna korištenjem više procesora.

Tip

Dva savjeta za lakše izvođenje simulacija:

  1. /apps/WRF/WPS_GEOG - putanja za uobičajene statičke podatke WPS (approx. 29G)
  2. WRF_HOME - varijabla okoline koja olakšava pristup dodatnim ulaznim podacima


Primjer

Ispod se nalaze upute za korištenje verzije WRF 4.3 temeljene na službenom predlošku WRF-ARW (uragan Matthew)

Datoteke koje su predstavljene izvršiti će spomenuti predložak u trenutnom direktoriju:

  • namelist.wps - konfiguracijska datoteka WPS
  • namelist.input - konfiguracijska datoteka WRF
  • wps.sge - SGE skripta koraka WPS
  • wrf-serial.sge - SGE skripta serijskog dijela WRF
  • wrf-parallel.sge - SGE skripta paralelnog dijela WRF
  • run.sh - upute za podnošenje skripta WPS i WRF
Note
Upute o podnošenju poslova bi trebale biti primjenjive i na prijašnje verzije WRF, no postoji mogućnost da se ulazne datoteke moraju prilagoditi (detaljnije upute na službenim stranicama)


Code Block
languagepy
titlenamelist.wps
linenumberstrue
collapsetrue
&share
  wrf_core         = 'ARW'
  max_dom          = 1
  start_date       = '2016-10-06_00:00:00'
  end_date         = '2016-10-08_00:00:00'
  interval_seconds = 21600
  io_form_geogrid  = 2
  active_grid      = .true.
/

&geogrid
  parent_id            = 1
  parent_grid_ratio    = 1
  i_parent_start       = 1
  j_parent_start       = 1
  e_we                 = 91
  e_sn                 = 100
  geog_data_res        = 'default'
  dx                   = 27000
  dy                   = 27000
  map_proj             = 'mercator'
  ref_lat              = 28.00
  ref_lon              = -75.00
  truelat1             = 30.0
  truelat2             = 60.0
  stand_lon            = -75.0
  geog_data_path       =
  opt_geogrid_tbl_path =
/

&ungrib
  out_format = 'WPS'
  prefix     = 'FILE'
/

&metgrid
  fg_name              = 'FILE'
  io_form_metgrid      = 2
  opt_metgrid_tbl_path =
/


Code Block
languagepy
titlenamelist.input
linenumberstrue
collapsetrue
&time_control
  run_days           = 0
  run_hours          = 48
  run_minutes        = 0
  run_seconds        = 0
  start_year         = 2016
  start_month        = 10
  start_day          = 06
  start_hour         = 00
  end_year           = 2016
  end_month          = 10
  end_day            = 08
  end_hour           = 00
  interval_seconds   = 21600
  input_from_file    = .true.
  history_interval   = 180
  frames_per_outfile = 1
  restart            = .false.
  restart_interval   = 1440
  io_form_history    = 2
  io_form_restart    = 2
  io_form_input      = 2
  io_form_boundary   = 2
  debug_level        = 0
/

&domains
  time_step               = 100
  max_dom                 = 1
  e_we                    = 91
  e_sn                    = 100
  e_vert                  = 45
  p_top_requested         = 5000
  num_metgrid_levels      = 32
  num_metgrid_soil_levels = 4
  dx                      = 27000
  dy                      = 27000
  grid_id                 = 1
  parent_id               = 0
  i_parent_start          = 1
  j_parent_start          = 1
  parent_grid_ratio       = 1
  feedback                = 1
  smooth_option           = 0
/

&physics
  mp_physics              = 3
  ra_lw_physics           = 1
  ra_sw_physics           = 1
  radt                    = 30
  sf_sfclay_physics       = 1
  sf_surface_physics      = 2
  num_soil_layers         = 4
  bl_pbl_physics          = 1
  bldt                    = 0
  cu_physics              = 1
  cudt                    = 5
  isfflx                  = 1
  ifsnow                  = 1
  icloud                  = 1
  surface_input_source    = 3
  num_land_cat            = 21
  sf_urban_physics        = 0
  sf_ocean_physics        = 0
/

&dynamics
  w_damping               = 0
  diff_opt                = 1
  km_opt                  = 4
  diff_6th_opt            = 0
  diff_6th_factor         = 0.12
  base_temp               = 290.
  damp_opt                = 0
  zdamp                   = 5000.
  dampcoef                = 0.2
  damp_opt                = 0
  damp_opt                = 0
  non_hydrostatic         = .true.
  moist_adv_opt           = 1
  scalar_adv_opt          = 1
/

&bdy_control
  spec_bdy_width          = 5
  spec_zone               = 1
  relax_zone              = 4
  specified               = .true.
  nested                  = .false.
/

&namelist_quilt
  nio_tasks_per_group = 0
/


Code Block
languagebash
titlewps.sge
linenumberstrue
collapsetrue
#$ -N wps
#$ -cwd

# postavi okolinu
module load WRF/4.3

# skini ulazne podatke i spremi ih u direktorij DATA
wget -N https://www2.mmm.ucar.edu/wrf/TUTORIAL_DATA/matthew_1deg.tar.gz
mkdir -p DATA
tar xvf matthew_1deg.tar.gz -C DATA --strip-components 1 --skip-old-files

# upiši pravilne staze u namelist.wps
GEOGPATH="'/apps/WRF/WPS_GEOG'"
GTBLPATH="'${WRF_HOME}/WPS/geogrid'"
MTBLPATH="'${WRF_HOME}/WPS/metgrid'"
sed -i "s|  geog_data_path.*|  geog_data_path = ${GEOGPATH}|g" namelist.wps
sed -i "s|  opt_geogrid_tbl_path.*|  opt_geogrid_tbl_path = ${GTBLPATH}|g" namelist.wps
sed -i "s|  opt_metgrid_tbl_path.*|  opt_metgrid_tbl_path = ${MTBLPATH}|g" namelist.wps
 
# wps koraci
link_grib.csh DATA/fnl
VTBLPATH="${WRF_HOME}/WPS/ungrib/Variable_Tables/Vtable.GFS"
ln -sf $VTBLPATH Vtable
ungrib.exe
geogrid.exe
metgrid.exe


Code Block
languagebash
titlewrf-serial.sge
linenumberstrue
collapsetrue
#$ -N wrf-serial
#$ -cwd

# postavi okolinu
module load WRF/4.3

# stavi poveznice na dodatne datoteke iz direktorija WRF/run ( osim namelist.input* )
find $WRF_HOME/WRF/run -type f ! -name 'namelist.input*' -exec ln -s {} . \;        

# wrf real korak
real.exe


Code Block
languagebash
titlewrf-parallel.sge
linenumberstrue
collapsetrue
#$ -N wrf-parallel
#$ -cwd
#$ -pe p28-mpi 4

# postavi okolinu
module load WRF/4.3

# wrf wrf korak
mpirun -np $NSLOTS wrf.exe


Code Block
languagebash
titlerun.sh
linenumberstrue
collapsetrue
#!/bin/bash

# podnesi SGE skripte jednu za drugom
qsub -N wps wps.sge
qsub -hold_jid wps -N wrf-serial wrf-serial.sge
qsub -hold_jid wrf-serial -N wrf-parallel wrf-parallel.sge

Performanse

Ispod se nalazi totalno vrijeme integracije kao i paralelna efikasnost izvršenja gore opisanog predloška

Note

Paralelna efikasnost veća od jedan je do serijskog izvođenja na a16* redu (samo jedan procesor) za koji WRF nije optimizran

Image Added