Logiciels pour usagers sur les serveurs

Un article de Informaticiens département des sciences de la Terre et l'atmosphère
Aller à: navigation, charcher

systèmes supportés / supported systems

snow zwack robert glacier (et beaucoup de postes de travail Linux)

setup

suggestion

touch ${HOME}/.no_admin_xtra               # for a consistent environment across machines
mv ${HOME}/.bashrc ${HOME}/.bashrc.old
mv ${HOME}/.bash_profile ${HOME}/.bash_profile.old

.profile (base)

suggestion (bash)

type module 2>/dev/null 1>/dev/null || . /etc/profile
module load setup/ECssm_002

les modules d'environnement / GNU environment modules

GNU environment modules

environment modules documentation (3.2 on servers, 4.1 on workstations)

utilitaires variés

module load utils/misc
ccmake, cmake
patchelf

netcdf

outils netcdf

module load utils/cdo
ou
module load utils/ncview
ou
module load utils/netcdf

python

chargement:

module load python2/miniconda2            # conda + python 2.7 /sca/compilers_and_tools/python/miniconda2
module load python3/miniconda3            # conda + python 3.7 /sca/compilers_and_tools/python/miniconda3
module load python3/miniforge3            # conda + python 3.9 /sca/compilers_and_tools/python/miniforge3

pour lister les environnements disponibles

conda env list
conda info --envs

Pour lister les paquets qui font partie d'un environnent exécutez:

conda list -n nom_du_env 

disponible avec python2 (non recommandé pour le futur) (gelé dans son état actuel)

source activate jupyter        # jupyter notebooks
source activate mysql2         # mysql-connector
source activate pynngl2        # NCAR Graphics (PyNGL et NCL)
source activate spyder         # environnement spyder
source activate soup           # beautifulsoup
module load development/python-rpn   # interface python pour rmnlib - Documentation

disponible avec python3 (miniconda3)

source activate cdo            # cdo toolkit
source activate jupyter        # jupyter notebooks (sera remplacé par base_plus)
source activate jupyter_plus   # jupyter notebooks + basic packages (recommandé plutôt que jupyter)
                               # sera remplacé par base_plus
source activate jupyter_sql    # jupyter notebooks + mysql-connector
                               # sera remplacé par base_plus
source activate base_plus      # le successeur des environnements jupyter... + xarray/dask
source activate ferret         # pyferret
source activate spyder         # environnement spyder
source activate mysql3         # mysql-connector
source activate ldap           # ldap utilities + mysql-connector
source activate pynngl3        # NCAR Graphics (PyNGL et NCL)
source activate magics         # magics (ECMWF)
source activate soup           # beautifulsoup
module load python3/python-rpn    # interface python pour rmnlib - Documentation
module load python3/outils-divers # functions pour les grilles RPN
module load python3/demos         # exemples de scripts pour lire/imprimer des fichier RPN

disponible avec python3 (miniforge3)

source activate base_plus      # le successeur des environnements jupyter... + xarray/dask
source activate ferret         # pyferret

création et activation d'un environnement personnel (dans ~/.conda)
NOTE:
les packages installés avec pip (qui aboutissent souvent dans ~/.local)
peuvent entrer en conflit avec les packages installés dans les environnements conda

conda create -n mon_environnement
source activate mon_environnement
#cd ~/.conda
#conda install package_name

déchargement d'un environnement

conda deactivate               # sortir d'un environnement

références utiles

NCAR graphics (ncl)

NCAR graphics (PyNGL)

jupyter (notebook)

beautifulsoup

Magics(ECMWF)

spyder (environnement de développement python)

jupiter, notebook et "browser" sur le serveur (NON RECOMMANDÉ)

module load python3    # ou python2
module load utils/web  # pour un firefox plus jeune
source activate jupyter
jupyter notebook

jupyter à distance, notebook sur le serveur mais "browser" local sur poste de travail à l'UQÀM ou ailleurs (RECOMMANDÉ)

(information plus spécifique pour MS Windows)
ceci demande 2 FENÊTRES(SESSIONS)

ÉTAPE no 0 : 
# OPTION no 1 : à partir de mon poste de travail a l'UQÀM (FENÊTRE 1)
# replacer user par mon nom d'usager sur les serveurs de l'UQÀM
ssh user@le_serveur          # snow/glacier/...

# OPTION no 2 : à partir d'un ordinateur à l'extérieur de l'UQÀM (FENÊTRE 1)
# replacer user par mon nom d'usager sur les serveurs de l'UQÀM
ssh user@st0.sca.uqam.ca
ssh user@le_serveur          # snow/glacier/...


ÉTAPE no 1 :   (FENÊTRE 1)
# sur le serveur :  (FENÊTRE 1)

module load python3    # ou python2
source activate jupyter
jupyter notebook --no-browser   # pas de démarrage de fureteur (browser) sur le serveur

# il me revient une ligne du genre
http://localhost:8891/?token=d2739f7208d5085028c71437218cee328858aac3074c7b6e
qui va servir plus loin
ÉTAPE no 2 :  (FENÊTRE 2)
# OPTION no 1 : à partir de mon poste de travail a l'UQÀM (FENÊTRE 2)

# remplacer dans toute la ligne qui suit 8891 par le chiffre après localhost: dans http://.....
ssh -L8891:localhost:8891 le_serveur  

# OPTION no 2 : à partir d'un ordinateur à l'extérieur de l'UQÀM (FENÊTRE 2) 
#              ( remplacer dans ce qui suit 8891 par le chiffre après localhost: dans http://.....)
ssh -L8891:localhost:8891 user@st0.sca.uqam.ca  # replacer user par mon nom d'usager sur les serveurs de l'UQÀM
ssh -L8891:localhost:8891 le_serveur

# ou plus direct, en une seule commande (fenêtre 2) (script d'automatisation laissé à l'imagination de l'usager)
#              ( remplacer dans ce qui suit 8891 par le chiffre après localhost: dans http://.....)
ssh -t -L8891:localhost:8891 user@st0.sca.uqam.ca  ssh -t  -L8891:localhost:8891 le_serveur
ÉTAPE no 3 : (SUR MA MACHINE)
# prendre un nouvel onglet dans le "browser" local (firefox/chrome/...)
# (utiliser la référencde http obtenue à l'ÉTAPE no 1)
# aller a http://localhost:8891/?token=d2739f7208d5085028c71437218cee328858aac3074c7b6e
# et voila ! je travaille à distance sur le serveur comme si tout se passait sur le serveur

python-rpn

- il faut charger python 2 ou python 3 avant de charger development/python-rpn
  (message d'erreur sinon)
- en principe, python-rpn est compatible avec python 2.7 ou python 3
- il est recommandé d'activer l'environnement jupyter (ou autre) pour pouvoir utiliser python-rpn car il manque
  de nombreux "packages" utilisés par python-rpn dans la base python

compilateurs et OpenMPI / compilers and OpenMPI

Intel (icc/ifort), GNU (gcc/gfortran), llvm (clang/flang), aocc(clang/flang sauce AMD)

Intel
module load compiler/intel-16           # icc/ifort version 16
module load openmpi/2.1.5-intel-16.0.1  # + OpenMPI 2.1
module load compiler/intel-18           # icc/ifort version 18
module load openmpi/2.1.5-intel-18.0.5  # + OpenMPI 2.1
module load compiler/intel-19           # icc/ifort version 19
module load openmpi/2.1.5-intel-19.0    # + OpenMPI 2.1
GNU
module load compiler/gcc-7.3            # gcc/gfortran
module load openmpi/2.1.5-gcc-7.3       # + OpenMPI 2.1
LLVM
module load compiler/llvm6              # clang/flang version 6 (obsolète)
module load openmpi/2.1.5-llvm          # + OpenMPI 2.1
AOCC
module load compiler/aocc               # clang/flang version 9 (amélioré par AMD)
module load openmpi/2.1.5-aocc          # + OpenMPI 2.1

FLEXPART

# load basic software needed
module load compiler/gcc-7.3 
module load openmpi/2.1.5-gcc-7.3
module load utils/eccodes-gcc7.3 
module load development/netcdf-c
module load development/netcdf-f/gfortran
# cd where flexpart source is
# vi makefile
make clean
# then
make serial   # serial version
# or
make mpi      # parallel version

GOAS (Gem On A Stick)

Clone and checkout latest GOAS version

git clone https://gitlab.com/eccc/gem/gem.git
cd gem
#git checkout -b b_5.1.0-rc5 5.1.0-rc5
git checkout -b b_5.1.0-rc6 5.1.0-rc6  # rc7 latest as of 2021/03/17

Download database

download-dbase.sh .

Create work and 'build' directory for object files and excecutables

In this directory will be your:

  • object files and excecutables,
  • model scripts,
  • example config files,
  • and you will execute your simulation from here
mkdir -p /path/to/my/work/directory
export MY_WORK_DIR=/path/to/my/work/directory
mkdir build
cd build

Set compiler version and compile

• At UQAM
If you want to use the Intel compiler set:

module load openmpi/2.1.5-intel-19.0-mkl
module load utils/misc  # to get an up to date version of cmake
cmake -DCOMPILER=intel -DCMAKE_VERBOSE_MAKEFILE=ON -DWORK_PREFIX=${MY_WORK_DIR} ../project

If you want to use the GNU compiler (gcc/gfortran) set:

module load openmpi/3.1.5-gcc-8.3
cmake -DCOMPILER=gnu -DCMAKE_VERBOSE_MAKEFILE=ON -DWORK_PREFIX=${MY_WORK_DIR} ../project

• On Niagara using the native environment (recommended)

module load intel/2019u4 openmpi/4.0.1 fftw/3.3.8 cmake
cmake -DCOMPILER=intel -DCMAKE_VERBOSE_MAKEFILE=ON -DWORK_PREFIX=${MY_WORK_DIR} ../project

• On Niagara using the common Environment

module load CCEnv
module load nixpkgs/16.09
module load intel/2019.3 
module load openmpi
module load cmake/3.16.3
module load fftw-mpi
cmake -DCOMPILER=intel -DCMAKE_VERBOSE_MAKEFILE=ON -DWORK_PREFIX=${MY_WORK_DIR} ../project

• On Beluga

module load intel/2019.3 
module load openmpi
module load cmake/3.16.3
module load fftw-mpi
cmake -DCOMPILER=intel -DCMAKE_VERBOSE_MAKEFILE=ON -DWORK_PREFIX=${MY_WORK_DIR} ../project

Create executable

make -j8 work

Run the model

cd ${MY_WORK_DIR}
cd work-...    # change into work directory, i.e. work-linux26-x86-64-intel-19.0.3.199

Here you will find several example config files under 'configurations'. If you want to run, for example, a global YinYang simulation execute:

./runprep -dircfg configurations/GY_cfgs
./runmod  -dircfg configurations/GY_cfgs -ptopo 2x2x1