Skip to content

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
Créer ensuite les alias nécessaires dans le ~/.bashrc ou ~/.bash_profile

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
Ces commandes vont créer un répertoire portant la version perl et écrire les chemins d'accès dans le fichier .bashrc_profile. Dans notre cas le répertoire 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
Si les tests passent c'est très bien. Dans notre cas, le message d'erreur suivant apparaît à plusieurs reprises :

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
Nous pouvons ensuite finaliser l'installation du module 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
Une fois l'opération faite, vous pouvez vous assurer que vous pouvez importer la librairie :

$ 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
Il faut également penser à exporter les variables d'environnement suivantes :

(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.