Logiciels disponibles sur Waves

1. Différentes sources

Le CCIPL étant destiné à être utilisé par tous les chercheurs des Pays de la Loire, toutes disciplines confondues, le besoin en logiciels scientifiques est pléthorique. De nombreux logiciels scientifiques, propres à de nombreuses disciplines, sont déjà disponibles. Néanmoins, aucune source unique ne peut satisfaire l’intégralité du besoin, la provenance sera donc multiple.

1.1. Logiciels installés par les administrateurs, en provenance du système installé ( Linux Centos 7.9 )

C’est le cas d’une partie des logiciels de base : système d’exploitation, drivers, outils standard, gcc, make, éditeurs, librairies. En principe, les machines frontales et les nœuds de calcul ont peu, voire pas de différence entre les logiciels installés.

La liste est consultable via le gestionnaire de paquets natifs à Linux Centos 7.9 : RPM.

rpm -q -a | less

1.2. Logiciels compilés et installés par les administrateurs, spécialement optimisés pour le cluster

C’est la méthode traditionnelle et conseillée pour utiliser des logiciels au CCIPL.

Ces logiciels sont accessibles via la commande module. Ils sont maintenus directement par le CCIPL. Les versions les plus récentes de MPI, de compilateurs et de librairies (y compris ceux d’Intel © ). La plupart des logiciels scientifiques sont également disponibles de cette façon.

Les logiciels disponibles par module sont disponibles sur l’ensemble des machines du cluster et ce, de façon cohérente.

Dans quelques cas, des versions optimisées pour les différents processeurs disponibles sur le cluster sont proposées de façon transparente. Dans ce cas précis, le binaire effectivement utilisé peut différer selon les types de nœuds.

Pour obtenir la liste exhaustive :

module avail

qui donne le résultat suivant :

---------------------- /trinity/shared/modulefiles/ccipl -----------------------
abinit/8.10.3            gromacs/gpu/omp_waves    neper/3.4.0
abinit/8.8.4             guix/1.0.1               phono3py/1.17.0
boltztrap/1.2.5          lammps/11Aug17           phonopy/1.11.8.5
ceisam_tools/tools       lammps/12Dec18           siesta/4.0.2
dftb/19.1                lammps/16Mar18           specfem3d/2018.07.26
dmtcp/2.6                lammps/17Nov16           stata/stata15
freefem++/3.60_gnu_7.3.0 lammps/31Mar17           uspex/9.4.4
gaussian/g09             lammps/5Jun19            vasp/vasp_v5
gaussian/g16             liggghts/3.5.1           vasp/vasp_v5_4_1
gaussian/gv              mustang/3.2.3            vina/1.1.2

------------ /trinity/shared/modulefiles/compilateurs_interpreteurs ------------
cmake/3.10.2            intel/2020.0.166        pgi/pgi-nollvm
cmake/3.7.1             julia/0.7.0             pgi/PrgEnv-pgi/16.9
cmake/3.9.6             julia/1.0.1             pgi/PrgEnv-pgi/17.5
gcc/7.1.0               pgi/openmpi/1.10.2/2016 pgi/PrgEnv-pgi/17.7
gcc/7.2.0               pgi/openmpi/3.1.3/2019  pgi/PrgEnv-pgi/19.1
gcc/7.3.0               pgi/openmpi/3.1.3/2020  pgi/PrgEnv-pgi/20.1
gcc/8.1.0               pgi/pgi/16.9            python/2.7.12
gcc/8.3.0               pgi/pgi/17.5            python/2.7.13
gcc/9.2.0               pgi/pgi/17.7            python/3.5.2
intel/2018.0.128        pgi/pgi/19.1            python/3.6.5
intel/2018.1.163        pgi/pgi/20.1            python/3.7.2
intel/2018.3.222        pgi/pgi/2016            python/3.7.4
intel/2018.5.274        pgi/pgi/2017            R/3.4.1_MKL
intel/2019.0.117        pgi/pgi/2019            R/3.4.1_no-MKL
intel/2019.1.144        pgi/pgi/2020            R/3.5.3_MKL
intel/2019.5.075        pgi/pgi-llvm            R/3.5.3_no-MKL

----------------- /trinity/shared/modulefiles/calcul_parallele -----------------
intel/mpi/2018.0.128       intel/tbb/2020.0.166
intel/mpi/2018.1.163       mvapich2/ifbd/gcc72/2.2.3b
intel/mpi/2018.3.022       mvapich2/ifbd/icc18/2.2.3b
intel/mpi/2018.4.274       mvapich2/psm2/gcc72/2.2.3b
intel/mpi/2019.0.117       mvapich2/psm2/icc18/2.2.3b
intel/mpi/2019.1.144       openmpi/pgi/3.1.3/2019
intel/mpi/2019.5.075       openmpi/pgi/3.1.3/2020
intel/mpi/2020.0.166       openmpi/psm2/2.0.1
intel/tbb/2018.0.128       openmpi/psm2/gcc72/2.0.4
intel/tbb/2018.1.163       openmpi/psm2/gcc81/3.1.0
intel/tbb/2018.3.022       openmpi/psm2/gcc92/4.0.1
intel/tbb/2018.4.274       openmpi/psm2/icc16/2.0.1
intel/tbb/2019.0.117       openmpi/psm2/icc20/4.0.3
intel/tbb/2019.1.144       openmpi/psm2/pgi19/3.1.3
intel/tbb/2019.5.075

-------------------- /trinity/shared/modulefiles/profilage ---------------------
cubelib/4.4.2              intel/itac/2018.1.017
cubew/4.4.1                intel/itac/2018.3.022
gdb/7.11                   intel/itac/2018.4.057
intel/advisor/2018.0.128   intel/itac/2019.0.117
intel/advisor/2018.1.038   intel/itac/2019.1.144
intel/advisor/2018.3.022   intel/itac/2019.5.075
intel/advisor/2018.4.057   intel/itac/2020.0.015
intel/advisor/2019.1.144   intel/vtune/2018.0.128
intel/advisor/2019.5.075   intel/vtune/2018.1.038
intel/advisor/2020.0.0     intel/vtune/2018.3.022
intel/inspector/2018.0.128 intel/vtune/2018.4.057
intel/inspector/2018.1.038 intel/vtune/2019.1.144
intel/inspector/2018.3.022 intel/vtune/2019.5.075
intel/inspector/2018.4.057 intel/vtune/2020.0.015
intel/inspector/2019.1.144 mpip/3.4.1_gnu81
intel/inspector/2019.5.075 ompp/0.8.5
intel/inspector/2020.0.0   valgrind/3.11.0
intel/itac/2018.0.015      valgrind/3.13.0

----------- /trinity/shared/modulefiles/bibliotheques_scientifiques ------------
blas/3.6.0                           intel/daal/2019.1.144
boost/1.41.0                         intel/daal/2019.5.075
boost/1.61.0                         intel/daal/2020.0.166
boost/1.71.0                         intel/ipp/2018.0.128
boost/icc16/1.61.0                   intel/ipp/2018.3.022
boost/impi/icc16/1.61.0              intel/ipp/2018.4.057
boost/mvapich2/1.61.0                intel/ipp/2019.0.117
boost/mvapich2/icc16/1.61.0          intel/ipp/2019.1.144
boost/openmpi/1.61.0                 intel/ipp/2019.5.075
boost/openmpi/icc16/1.61.0           intel/ipp/2020.0.166
cuda/10.1.105                        intel/mkl/64/2018.0.128
cuda/7.0.28                          intel/mkl/64/2018.1.163
cuda/7.5.18                          intel/mkl/64/2018.3.022
cuda/8.0.44                          intel/mkl/64/2018.4.057
cuda/8.0.61                          intel/mkl/64/2019.0.117
cuda/9.2.148                         intel/mkl/64/2019.1.144
elpa/intel_2018.05.001               intel/mkl/64/2019.5.075
fftw2/2.1.5                          intel/mkl/64/2020.0.166
fftw2/2.1.5_intel                    intel/mkl/mic/2016.3.210
fftw2/2.1.5_intel_mpi                intel/mkl/mic/2017.4.196
fftw3/3.3.5                          lapack/3.6.1
fftw3/intelmpi/icc16/3.3.6           lapack/3.7.0_gcc63
fftw3/intelmpi/icc18/erdre/3.3.8     lapack/3.7.0_icc16
fftw3/mvapich2/3.3.5                 lapack/3.8.0_gcc81
fftw3/openmpi/3.3.5                  libxc/intel_2.2.3
fftw3/openmpi/gcc71/3.3.6            libxc/intel_4.1.1
fftw3/openmpi/gcc81/3.3.7            libxc/intel_4.3.4
fftw3/openmpi/gcc81/3.3.7_sp         matplotlib/py27/1.5.3
gmt/4.5.15                           netcdf/4.2_fortran_gnu
gmt/5.3.1                            netcdf/4.2_fortran_intel
gsl/2.4                              netcdf/4.2_fortran_parallel_io_intel
hdf5/1.8.17                          netcdf/4.4.1.1_exodus
hdf5/intelmpi/icc17/1.8.18           netcdf/4.4.1.1_no_parallel_io
hdf5/mvapich2/1.8.17                 netcdf/4.4.1.1_parallel_io_gnu
hdf5/mvapich2/icc16/1.8.17           netcdf/4.4.1.1_parallel_io_intel
hdf5/openmpi/1.8.17                  netcdf/4.6.1_c_intel
hdf5/openmpi/gcc81/1.10.2            netcdf/4.6.1_c_parallel_io_intel
hdf5/openmpi/icc16/1.8.17            numpy/py27/1.11.2
hdf5/openmpi/pgi20/1.8.18            numpy/py27/1.12.0
hwloc/1.11.2                         openblas/0.2.18
intel/clck/2018.0.002                petsc/3.10.0
intel/clck/2018.1                    petsc/3.9.2
intel/clck/2018.3                    pnetcdf/1.10.0_intel
intel/clck/2018.4                    pnetcdf/1.8.1
intel/clck/2019.0                    scalapack/intelmpi/2.0.2
intel/clck/2019.5                    scalapack/mvapich2/2.0.2
intel/clck/2019.6                    scalapack/openmpi/2.0.2
intel/daal/2018.0.128                scipy/py27/0.18.1
intel/daal/2018.1                    scotch/6.0.7
intel/daal/2018.3.022                vtk/8.2.0
intel/daal/2018.4.057                wannier/3.0.0
intel/daal/2019.0.117

---------------------- /trinity/shared/modulefiles/outils ----------------------
doxygen/1.8.13 git/2.16.1     git/2.9.3

------- /trinity/shared/modulefiles/obsolete/compilateurs_interpreteurs --------
cmake/3.6.0      gcc/5.3.0        intel/2016.2.181 intel/2017.1.132
gcc/4.9.3        gcc/6.3.0        intel/2016.3.210 intel/2017.4.196

------------ /trinity/shared/modulefiles/obsolete/calcul_parallele -------------
intel/mpi/2016.2.181       mvapich2/psm2/gcc49/2.2rc2
intel/mpi/2016.3.210       mvapich2/psm2/gcc53/2.2rc2
intel/mpi/2017.1.132       mvapich2/psm2/icc16/2.2rc2
intel/mpi/2017.4.196       openmpi/psm2/gcc49/2.0.1
intel/tbb/2016.3.210       openmpi/psm2/gcc53/2.0.1
intel/tbb/2017.4.196       openmpi/psm2/gcc63/2.0.1
mvapich2/psm2/2.2rc2

---------------- /trinity/shared/modulefiles/obsolete/profilage ----------------
intel/advisor/2016.3.210   intel/itac/2017.1.024
intel/advisor/2017.4.196   intel/itac/2017.3.030
intel/inspector/2016.2.181 intel/vtune/2016.2.181
intel/inspector/2016.3.210 intel/vtune/2016.3.210
intel/inspector/2017.4.196 intel/vtune/2017.4.196
intel/itac/2016.3.210

------- /trinity/shared/modulefiles/obsolete/bibliotheques_scientifiques -------
fftw3/intelmpi/icc16/3.3.5   hdf5/openmpi/gcc63/1.8.18
fftw3/openmpi/gcc63/3.3.5    intel/clck/64/2016.3.210
fftw3/openmpi/gcc63/3.3.5_sp intel/clck/64/2017.2.019
hdf5/gcc49/1.8.17            intel/clck/mic/2016.3.210
hdf5/gcc53/1.8.17            intel/daal/64/2016.2.181
hdf5/gcc63/1.8.18            intel/daal/64/2016.3.210
hdf5/icc16/1.8.17            intel/daal/64/2017.4.196
hdf5/impi/icc16/1.8.17       intel/ipp/2016.3.210
hdf5/intelmpi/icc16/1.8.18   intel/ipp/2017.4.196
hdf5/mvapich2/gcc49/1.8.17   intel/mkl/64/2016.0.109
hdf5/mvapich2/gcc53/1.8.17   intel/mkl/64/2016.3.210
hdf5/openmpi/gcc49/1.8.17    intel/mkl/64/2017.1.132
hdf5/openmpi/gcc53/1.8.17    intel/mkl/64/2017.4.196
Attention à ne pas trop empiler de module load dans le profil utilisateur : cela peut engendrer des effets de bords, aboutissant à des dysfonctionnements sérieux. Il est préférable de n’utiliser les directives module que dans les scripts de soumission de travaux.

2. Logiciels installés par un gestionnaire de paquetage tiers (accessible à l’utilisateur)

Il est possible de se reposer sur des systèmes de paquetages alternatifs, directement accessibles à l’utilisateur. Ils permettent d’installer des logiciels spécifiques sans l’intervention des administrateurs du CCIPL (par exemple, un logiciel spécifique, non disponible dans les modules proposés, ou bien, dans une version spécifique.)

L’utilisateur y gagne en réactivité, mais cette procédure nécessite une bonne maîtrise de la part de l’utilisateur.

Il n’y aura pas de support direct par les administrateurs du CCIPL ; si l’utilisateur choisit de passer par cette alternative, il est supposé suffisamment habile pour régler les éventuels soucis inhérents à cette méthode.

2.1. Nécessité d’utiliser le proxy WWW

Les machines du CCIPL, frontales comprises, ne sont pas directement joignables depuis l’Internet. Pour des raisons de sécurité informatique, elles ne peuvent pas non plus sortir en direct. L’accès n’est possible qu’au travers d’un proxy WWW. Il s’agit de 'proxy-upgrade.univ-nantes.prive' sur le port 3128. Il peut être positionné ainsi :

export http_proxy=http://proxy-upgrade.univ-nantes.prive:3128
export https_proxy=http://proxy-upgrade.univ-nantes.prive:3128
export ftp_proxy=http://proxy-upgrade.univ-nantes.prive:3128
export HTTP_PROXY=http://proxy-upgrade.univ-nantes.prive:3128
export HTTPS_PROXY=http://proxy-upgrade.univ-nantes.prive:3128
export FTP_PROXY=http://proxy-upgrade.univ-nantes.prive:3128

Ce proxy ne laisse passer qu’une liste restreinte de sites (liste blanche), il est possible que le site demandé ne soit pas déjà inclus dans la liste, auquel cas il faut donc nous demander explicitement l’ajout de ce site.

La plupart des méthodes d’installation des logiciels détaillée ci-dessous nécessite l’utilisation de ce proxy.

2.2. Guix

Guix est supporté officiellement au CCIPL et est disponible sur tous les nœuds. Il est avant tout destiné à des utilisateurs avancés, qui souhaitent installer des logiciels complémentaires, ou des versions particulières de logiciels, en complète autonomie. Guix est un ensemble complet qui dépasse le simple cadre de gestionnaire de logiciels. Il peut permettre de générer des environnements autonomes, des conteneurs, des images de système d’exploitation. Le tout, propre à chaque utilisateur, versionné pour assurer une reproductibilité complète. Guix peut aussi être utilisé pour créer des paquetages redistribuables de votre propre code.

Plus de 20.000 packages différents sont actuellement disponibles par ce biaisau 2nd trimestre 2023.

Le CCIPL dispose de son propre dépôt Guix, qui contient des logiciels supplémentaires spécialement maintenus ou optimisés pour le CCIPL.

2.2.1. Installation

Afin d’utiliser GUIX pour vos projets, une petite manipulation initiale par les administrateurs est nécessaire. Il faut contacter `ccipl-contact@univ-nantes.fr` pour nous demander explicitement cette manipulation. Une fois celle-ci effectuée, vous êtes en parfaite autonomie.

Lorsque les administrateurs ont fait cette manipulation, il faut lancer la commande first-time-guix-bootstrap. Cette commande peut prendre plusieurs minutes; elle échouera si la manipulation n’a pas encore été effectuée par les administrateurs du CCIPL. Cette commande n’est à effectuer que la toute première fois, pour procéder à l’installation de Guix dans votre répertoire personnel.

2.2.2. Utilisation et activation au besoin

À chaque fois que vous voudrez utiliser Guix (où les logiciels installés avec), il faut lancer l’environnement guix : . activate-guix ou source activate-guix. L’environnement n’est pas chargé par défaut, c’est un choix du CCIPL ; en effet selon les programmes installés par chacun, ceux-ci peuvent entrer en conflit avec les programmes du système.

  • Quand Guix est activé, tous vos logiciels supplémentaires deviennent disponibles (y compris ceux qui peuvent masquer ceux du système). La commande guix et ses sous commandes deviennent également disponibles:

  • guix install xxx pour installer un logiciel,

  • guix shell pour créer des environnements d’exécutions indépendants,

  • guix pull pour obtenir la liste à jour des packages,

  • guix package -A pour obtenir la liste des packages disponibles…

Une limitation technique temporaire, propre à l’architecture du CCIPL, oblige à être sur la frontale principale (Jaws) pour les opérations pull ou install (et avec les proxies positionnés). À part ces opérations particulières, les autres utilisations de Guix sont possibles sur tous les nœuds et frontales.
Si vous êtes développeurs et souhaitez vous appuyer sur Guix pour gérer le cycle de vie de votre logiciel, merci de nous contacter. Nous pouvons vous aider.

2.3. Logiciels embarqués dans des conteneurs

2.3.1. Docker

Cette option est dépréciée et n’est plus disponible au CCIPL.

L’utilisation de docker pose de (trop) nombreux soucis dans un cluster de calcul ou dans un environnement multi-utilisateur d’une manière générale. Il n’est donc plus accessible. Singularity (voir ci-dessous) est proposé comme alternative ; il est fonctionnellement proche et compatible avec des images docker existantes, sans présenter les soucis de sécurité de docker.

2.3.2. Singularity

Singularity est supporté et permet de faire tourner des conteneurs au CCIPL. Il est compatible avec les images Docker, mais les sécurités et modes opératoires ne sont pas les mêmes. La version installée est : 3.2.1-1.

L’installation de singularity au CCIPL permet d' exécuter une image déjà existante (soit en copiant l’image sur le cluster, soit en allant la récupérer sur un dépôt pré-existant), mais ne donne pas les droits pour générer une image. Celle-ci doit donc être construite ailleurs.

Pour faire fonctionner des images docker, il est possible et conseillé de s’appuyer sur le dépôt docker du gitlab de l’Université de Nantes.

Une image debian stretch existe et est utilisable au CCIPL. Il est possible de contacter les administrateurs du CCIPL si une modification mineure est nécessaire sur cette image.

2.4. Gestionnaire de paquetages propre à un langage

  • Python : PIP

  • Perl : CPAN

  • Ocaml : OPAM

2.5. Conda / Miniconda

Le logiciel est utilisable, mais il est conseillé d’utiliser, si possible, Guix qui permet les mêmes opérations de façon plus complète tout en gèrant l’espace de stockage de façon optimisée.

conda/miniconda génèrent une surcharge importante dans les répertoires utilisateur. Il n’est donc à utiliser que lorsque les alternatives ne sont pas possibles.

3. Logiciels compilés par l’utilisateur

Dernière alternative quand il s’agit d’un logiciel maison, ou que rien d’autre n’est possible (consulter les administrateurs du CCIPL dans ce cas).

Le cas le plus simple est de compiler le logiciel sur une des frontales, avec l’arsenal logiciel disponible.

Il est généralement possible de mettre en paquet Guix les logiciels maisons. Ce qui permet de les distribuer et gérer leurs versions plus facilement. Nous consulter si vous envisagez cette possibilité.

Au travers de Singularity, il est aussi possible de faire fonctionner des images docker préalablement et indépendamment déployées sur le Gitlab de l’université de Nantes.