Installation logiciel en local
Options de compilation
Lorsque vous installez certains logiciels ou certaines bibliothèques dans votre répertoire personnel, le déploiement passe souvent par une phase de compilation de code source. S'il sagit de compiler du langage C
ou C++
, et dans l'optique d'utiliser le logiciel dans un cadre HPC, nous vous recommandons d'utiliser les options de compilation de GCC suivantes :
-march=sandybridge -O3 -ffast-math -flto -ftree-vectorize
Elles permettront au compilateur de générer un code pouvant fonctionner sur tous les noeuds de calcul du cluster HPC2 (jeu d'instructions minimum Sandy Bridge), et de pratiquer quelques optimisations.
Si les options de compilation ne sont pas directement accessibles (pas de Makefile, compilation effectuée par un script haut-niveau, ...), vous pouvez essayer d'exporter les deux variables d'environnement suivantes :
export CFLAGS="$CFLAGS -march=sandybridge -O3 -ffast-math -flto -ftree-vectorize"
export CXXFLAGS="$CXXFLAGS -march=sandybridge -O3 -ffast-math -flto -ftree-vectorize"
Installation depuis un dépôt github
export https_proxy=http://proxy.dsi.uca.fr:8080
export http_proxy=http://proxy.dsi.uca.fr:8080
Option 1.
wget -O toolname "https://github.com/project/toolname/releases/latest"
Option 2.
Charger l'archive depuis le site web de github. Ensuite, en local, utilisation de la commande rsync
pour transférer l'archive sur HPC2 puis la commande tar
pour la décompresser :
rsync -avz toolname.tar.gz login@hpc2.mesocentre.uca.fr:~/.
tar -xvzf toolname.tar.gz
Installation d'extension de langages
Avec les langages tels que PERL, Python, ou R même si l'interpréteur est installé globalement; il est possible d'installer des paquets (ou libraries) additionnels dans son home
qui est partagé entre les noeuds du cluster de calcul HPC2.
Il est possible que les librairies à installer aient des dépendances qui rendent l'installation complexe, n'hésitez pas à nous contacter pour un accompagnement.
Perl
CPAN ne fonctionne pas sur le cluster de calcul. Pour charger un module Perl, allez sur le site de CPAN et chargez en local le module que vous souhaitez télécharger en tar.gz. Puis sur le cluster de calcul :
$ eval $(perl -Mlocal::lib)
$ perl -Mlocal::lib >> ~/.bash_profile
perl5
est créé.
$ cat ~/.bash_profile
# .bash_profile
# Get the aliases and functions
if [ -f ~/.bashrc ]; then
. ~/.bashrc
fi
# User specific environment and startup programs
PATH=$PATH:$HOME/bin
export PATH
export PERL_LOCAL_LIB_ROOT="$PERL_LOCAL_LIB_ROOT:/home/login/perl5";
export PERL_MB_OPT="--install_base /home/login/perl5";
export PERL_MM_OPT="INSTALL_BASE=/home/login/perl5";
export PERL5LIB="/home/login/perl5/lib/perl5:$PERL5LIB";
export PATH="/home/login/perl5/bin:$PATH";
Exemple d'installation du module Number::Format
. Depuis votre ordinateur en local, copiez le fichier en tar.gz dans votre répertoire home/perl5
avec la commande scp
si vous êtes sous Unix par exemple, puis décompressez l'archive.
$ cd ~/perl5
$ tar -xvzf Number-Format-1.75.tar.gz
$ cd Number-Format-1.75
Ce répertoire contient les fichiers nécessaires à la compilation du code.
$ perl Makefile.PL
$ make
$ make test
Can't locate Test/More.pm in @INC (@INC contains: /home/login/perl5/Number-Format-1.75/blib/lib ...)
Dans ce cas, il est nécessaire de récupérer l'archive correspondante sur le site de CPAN. Nous recherchons le module Test/More.pm
que nous transférons dans notre répertoire home/perl5
comme fait précédemment avec le module Number::Format
.
$ cd ~/perl5
$ tar -xvzf Test-Simple-1.302171.tar.gz
$ cd Test-Simple-1.302171
$ perl Makefile.PL
$ make test
$ make install
Number::Format
$ cd ~/perl5/Number-Format-1.75
$ make test
$ make install
Installing /home/login/perl5/lib/perl5/Number/Format.pm
Installing /home/login/perl5/man/man3/Number::Format.3pm
Appending installation info to /home/login/perl5/lib/perl5/x86_64-linux-thread-multi/perllocal.pod
$ perl -e 'use Number::Format;'
ou pour localiser le module :
$ perldoc -l Number::Format
/home/login/perl5/lib/perl5/Number/Format.pm
Python
Installation basique
Pour Python inclure l'option --user
à la commande pip install
. Par exemple :
$ cd ~
$ pip install --user bx-python
La librairie est installée dans votre répertoire $HOME/.local
. Une fois l'opération faite, vous pouvez vous assurer que vous pouvez importer la librairie :
$ module load python/2.7.9
$ python
>>> import bx.intervals.intersection
>>>
Installation avancée avec la création d'un environnement virtuel
Charger les modules nécessaires
$ module load gcc/8.1.0
$ module load python/3.7.1
Création et activation d'un environnement virtuel
$ virtualenv --python=python3.7 scikit
$ cd scikit
$ source bin/activate
Installation de la librairie Python scikit-learn
(scikit) [...@hpc2]$ pip3 install scikit-learn
Une fois l'opération faite, vous pouvez vous assurer que vous pouvez importer la librairie :
(scikit) [...@hpc2]$ python
>>> import sklearn
>>> print(sklearn.__version__)
0.21.3
Installation avancée d'une librairie GPU
L'installation d'une librairie utilisant des ressources GPU doit se faire sur un noeud GPU. Par exemple pour la librairie scikit-cuda
:
$ srun --partition=gpu --pty bash
$ module load gcc/8.1.0
$ module load python/3.7.1
$ virtualenv --python=python3.7 scikit
$ cd scikit
$ source bin/activate
(scikit) [...@hpc2]$ pip3 install scikit-learn
(scikit) [...@hpcgpu01]$ export C_INCLUDE_PATH=/usr/local/cuda-10.0/include
(scikit) [...@hpcgpu01]$ export CPLUS_INCLUDE_PATH=/usr/local/cuda-10.0/include
(scikit) [...@hpcgpu01]$ export LIBRARY_PATH=/usr/local/cuda-10.0/lib64
Puis l'installation de la librairie idoine :
(scikit) [...@hpcgpu01]$ pip3 install scikit-cuda
R
Dans une session R interactive, les paquets R sont installés dans une librarie personnelle de la manière suivante :
Installation d'un paquet simple
Pour configurer son environnement de travail, il faut customiser les fichiers suivant ~/.Rprofile
et ~/.Renviron
$ module load R/3.2.2
$ cat ~/.Renviron
R_LIBS_USER="~/R/libs"
$ cat ~/.Rprofile
repo=getOption("repos")
repo["CRAN"]="http://ftp.igh.cnrs.fr/pub/CRAN/"
options(respos=repo)
rm(repo)
$ R
R version 3.2.2 (2015-08-14) -- "Fire Safety"
[...]
Type 'q()' to quit R.
> install.packages("ape")
Warning in install.packages("ape") :
'lib = "/opt/apps/gcc-4.8.4/R-3.2.2/lib64/R/library"' ne peut être ouvert en écriture
Would you like to use a personal library instead? (y/n) y
Would you like to create a personal library
~/R/libs
to install packages into? (y/n) y
also installing the dependency ‘Rcpp’
[...]
Installing package into ‘/home/login/R/libs’
** R
** data
** inst
** preparing package for lazy loading
** help
*** installing help indices
** building package indices
** installing vignettes
** testing if installed package can be loaded
* DONE (ape)
Une fois l'opération faite, vous pouvez vous assurer que vous pouvez importer la librairie :
$ R
> library("ape")
>
Installation d'un paquet nécessitant un module du cluster de calcul. Par exemple le paquet Rmpi
$ module load gcc/8.1.0
$ module load openmpi/3.0.0
$ module load R/3.5.1
R
> install.packages("Rmpi", configure.args="--with-mpi=/opt/mpi/gcc-8.1.0/openmpi-3.0.0 --with-Rmpi-type=OPENMPI --disable-dlopen --enable-shared")
Warning
Utilisation de la commande sudo
. N'essayez pas d'utiliser la commande sudo
, cela ne fonctionnera pas. Seuls les administrateurs ont les droits root
.