Logiciels pour usagers sur les serveurs : Différence entre versions
m (→FLEXPART) |
m (→python) |
||
(33 révisions intermédiaires par 2 utilisateurs non affichées) | |||
Ligne 39: | Ligne 39: | ||
module load python2/miniconda2 # conda + python 2.7 /sca/compilers_and_tools/python/miniconda2 | 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/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 | pour lister les environnements disponibles | ||
conda env list | conda env list | ||
+ | conda info --envs | ||
− | disponible avec python2 (non recommandé pour le futur) | + | 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 jupyter # jupyter notebooks | ||
Ligne 52: | Ligne 57: | ||
module load development/python-rpn # interface python pour rmnlib - [https://python-rpn.readthedocs.io/en/latest Documentation] | module load development/python-rpn # interface python pour rmnlib - [https://python-rpn.readthedocs.io/en/latest Documentation] | ||
− | disponible avec python3 | + | disponible avec '''python3''' (miniconda3) |
source activate cdo # cdo toolkit | source activate cdo # cdo toolkit | ||
− | source activate jupyter # jupyter notebooks | + | source activate jupyter # jupyter notebooks (sera remplacé par base_plus) |
source activate jupyter_plus # jupyter notebooks + '''basic packages''' (recommandé plutôt que jupyter) | 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 | 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 spyder # environnement spyder | ||
source activate mysql3 # mysql-connector | source activate mysql3 # mysql-connector | ||
Ligne 64: | Ligne 73: | ||
source activate magics # magics (ECMWF) | source activate magics # magics (ECMWF) | ||
source activate soup # beautifulsoup | source activate soup # beautifulsoup | ||
− | + | module load python3/python-rpn # interface python pour rmnlib - [https://python-rpn.readthedocs.io/en/latest Documentation] | |
− | module load | + | 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)<br> | ||
+ | NOTE: <br> | ||
+ | les packages installés avec pip (qui aboutissent souvent dans ~/.local)<br> | ||
+ | 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 | déchargement d'un environnement | ||
Ligne 91: | Ligne 114: | ||
jupyter à distance, notebook sur le serveur mais "browser" local sur poste de travail à l'UQÀM ou ailleurs ('''RECOMMANDÉ''') | jupyter à distance, notebook sur le serveur mais "browser" local sur poste de travail à l'UQÀM ou ailleurs ('''RECOMMANDÉ''') | ||
+ | [https://wikienseignement.uqam.ca/display/EDDSDLTEL/Sous+Windows (information plus spécifique pour MS Windows)] | ||
+ | |||
+ | ceci demande '''2 FENÊTRES(SESSIONS)''' | ||
− | # à partir de mon poste de travail a l'UQÀM ( | + | '''É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/... | ||
− | ssh 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 | |
− | # sur le serveur : | + | 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 | module load python3 # ou python2 | ||
Ligne 102: | Ligne 138: | ||
jupyter notebook --no-browser # pas de démarrage de fureteur (browser) sur le serveur | jupyter notebook --no-browser # pas de démarrage de fureteur (browser) sur le serveur | ||
− | # il me revient une ligne du genre | + | # il me revient une ligne du genre |
http://localhost:8891/?token=d2739f7208d5085028c71437218cee328858aac3074c7b6e | 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 | |
− | |||
− | # à partir d'un ordinateur à l'extérieur de l'UQÀM ( | + | # OPTION no 2 : à partir d'un ordinateur à l'extérieur de l'UQÀM ('''FENÊTRE 2''') |
− | ssh -L8891:localhost:8891 user@ | + | # ( 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 | ssh -L8891:localhost:8891 le_serveur | ||
− | # plus direct, en une seule commande (fenêtre 2) (script d'automatisation laissé à l'imagination de l'usager) | + | # ou plus direct, en une seule commande (fenêtre 2) (script d'automatisation laissé à l'imagination de l'usager) |
− | ssh -t -L8891:localhost:8891 user@ | + | # ( 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/...) | # 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 | # aller a http://localhost:8891/?token=d2739f7208d5085028c71437218cee328858aac3074c7b6e | ||
# et voila ! je travaille à distance sur le serveur comme si tout se passait sur le serveur | # et voila ! je travaille à distance sur le serveur comme si tout se passait sur le serveur | ||
Ligne 149: | Ligne 193: | ||
== FLEXPART == | == FLEXPART == | ||
# load basic software needed | # load basic software needed | ||
− | module load compiler/ | + | module load compiler/gcc-7.3 |
module load openmpi/2.1.5-gcc-7.3 | module load openmpi/2.1.5-gcc-7.3 | ||
module load utils/eccodes-gcc7.3 | module load utils/eccodes-gcc7.3 | ||
module load development/netcdf-c | module load development/netcdf-c | ||
module load development/netcdf-f/gfortran | module load development/netcdf-f/gfortran | ||
− | #cd where flexpart source is | + | # cd where flexpart source is |
− | #vi makefile | + | # 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'''<br> | ||
+ | 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 |
Version actuelle datée du 11 de novembre 2021 à 13:24
Matières
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
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
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