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. |
Pour en savoir plus sur Guix, consulter le site officiel, son manuel de référence et le site dédié à son utilisation dans un contexte HPC.
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.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.