Logiciels pour usagers sur les serveurs
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
pour lister les environnements disponibles
conda env list conda info --envs
disponible avec python2 (non recommandé pour le futur)
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
source activate cdo # cdo toolkit source activate jupyter # jupyter notebooks source activate jupyter_plus # jupyter notebooks + basic packages (recommandé plutôt que jupyter) source activate jupyter_sql # jupyter notebooks + mysql-connector 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 development/python-rpn # interface python pour rmnlib - Documentation
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É)
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)
git clone https://gitlab.com/eccc/gem/gem.git cd gem git checkout -b b_5.1.0-rc5 5.1.0-rc5 mkdir build cd build export MY_WORK_DIR=/jbod1/data/armnssm/GOAS/workdir module load utils/misc # to get an up to date version of cmake module load openmpi/2.1.5-intel-19.0-mkl export MY_WORK_DIR=/path/to/my/work/directory cmake -DCOMPILER=intel -DCMAKE_VERBOSE_MAKEFILE=ON -DWORK_PREFIX=${MY_WORK_DIR} ../project #module load openmpi/3.1.5-gcc-8.3 #cmake -DCOMPILER=intel -DCMAKE_VERBOSE_MAKEFILE=ON -DWORK_PREFIX=${MY_WORK_DIR} ../project make -j8 work ../download-dbase.sh .. pushd ${MY_WORK_DIR} cd work_dir_for_compiler ./runprep -dircfg configurations/GY_cfgs ./runmod -dircfg configurations/GY_cfgs -ptopo 2x2x1