Aller au contenu principal

Charger ses logiciels

Le chargement des logiciels sur ROMEO se fait maintenant via un outil nommé "Spack". Sa documentation est disponible via ce lien : Documentation Spack

Lister les logiciels disponibles sur ROMEO

Vous pouvez utiliser la commande spack find.

Cette commande va vous lister tous les logiciels disponibles avec leurs versions. Par exemple (de nombreux autres logiciels sont disponibles depuis la rédaction de cet exemple):

spack find

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
aocc@4.2.0 curl@8.4.0 gmake@4.4.1 pkgconf@2.2.0
berkeley-db@18.1.40 diffutils@3.10 ncurses@6.5 readline@8.2
blender@4.2.3 gcc-runtime@11.4.1 nghttp2@1.63.0 unzip@6.0
bzip2@1.0.8 gdbm@1.23 openssl@3.3.1 zlib-ng@2.2.1
ca-certificates-mozilla@2023-05-30 glibc@2.34 perl@5.40.0
==> 19 installed packages

Cette liste contient tout ce qui est installé, regroupés par compilateurs utilisé. Cette liste inclue toutes les dépendances installées automatiquement.


Pour n'avoir que les logiciels installés suite à une demande explicite vous pouvez faire :

spack find --explicit

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
aocc@4.2.0 blender@4.2.3 curl@8.4.0 unzip@6.0
==> 4 installed packages

Si vous souhaitez rechercher un logiciel spécifique, vous pouvez ajouter une recherche à la commande find :

spack find blender

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
blender@4.2.3
==> 1 installed package

Ces logiciels peuvent être installés plusieurs fois avec une même version, mais avec des options différentes. Pour voir les differences vous pouvez utiliser l'option --variants :

spack find --variants --explicit

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
aocc@4.2.0~license-agreed build_system=generic
blender@4.2.3 build_system=generic
curl@8.4.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl
unzip@6.0 build_system=makefile patches=f6f6236
==> 4 installed packages

Cette commande affiche sur chaque ligne une version d'un logiciel et les options de cette variante.

  • Le ~option indiquent que cette option est désactivée.
  • Le +option indiquent que cette option est activée.
  • Le option=valeur indiquent que cette option est définie à 'valeur'.

Dans l'exemple ci dessus nous constatons donc par exemple que curl@8.4.0 est compilé sans l'option ldap, mais avec l'option nghttp2, et avec le protocole tls configuré en openssl.

Cette facon d'indiquer les options est importante et sera utilisée plus tard pour selectionner précisement quel variante de logiciel nous souhaitons charger. Ces options peuvent également être utilisées avec la commande spack find pour rechercher des variants spécifiques d'un logiciel, ainsi que pour de très nombreuses commandes spack.

Par exemple :

spack find --variants curl@8.4

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
curl@8.4.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl
curl@8.4.0~gssapi~ldap~libidn2~librtmp+libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl

Ici nous constatons que deux versions de curl sont disponibles, une avec l'option libssh, et une sans.

En utilisant spack find de cette manière nous pouvons rechercher uniquement les versions de curl ayant cette option activée :

spack find --variants curl@8.4 +libssh

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
curl@8.4.0~gssapi~ldap~libidn2~librtmp+libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl
==> 1 installed package

Pour de multiples raisons que nous ne détaillerons pas ici, il peut arriver que certains logiciels soient installés plusieurs fois, dans une même version, et avec les mêmes options

Si vous souhaitez réellement utiliser toujours exactement le même variant, et non un variant identique, il est possible d'afficher le 'hash' de chaque variant et de l'utiliser pour charger cette version très spécifiquement :

spack find --long curl@8.4

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
gty4hz3 curl@8.4.0 zpngtsn curl@8.4.0
==> 2 installed packages

Cette command va afficher un 'hash' unique devant chaque logiciel. Vous pouvez alors utiliser ce hash pour charger spécifiquement cette version:

spack load /gty4hz3

Si une version ou une variante d'une version d'un logiciel n'est pas instalée, vous pouvez apprendre comment l'obtenir dans le chapitre suivant, "Installer un logiciel".


Vous souhaitez savoir où est installé un logiciel ? Vous pouvez utiliser l'option :

spack find --paths curl

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
curl@8.4.0 /apps/2025/spack_install/linux-rhel9-zen4/gcc-11.4.1/curl-8.4.0-gty4hz3btysty5kulxmhgnas2tolnvzd
curl@8.4.0 /apps/2025/spack_install/linux-rhel9-zen4/gcc-11.4.1/curl-8.4.0-zpngtsnipryswojzkpecl3wbpda54j3e

Toutes ces options peuvent être mélangées en fonction de vos besoins, par exemple :

spack find --paths --variants --long curl

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
gty4hz3 curl@8.4.0~gssapi~ldap~libidn2~librtmp~libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl /apps/2025/spack_install/linux-rhel9-zen4/gcc-11.4.1/curl-8.4.0-gty4hz3btysty5kulxmhgnas2tolnvzd
zpngtsn curl@8.4.0~gssapi~ldap~libidn2~librtmp+libssh~libssh2+nghttp2 build_system=autotools libs=shared,static tls=openssl /apps/2025/spack_install/linux-rhel9-zen4/gcc-11.4.1/curl-8.4.0-zpngtsnipryswojzkpecl3wbpda54j3e
==> 2 installed packages

Charger les logiciels disponibles sur ROMEO

Pour charger un logiciel, il faut utiliser la commande spack load. Par exemple :

spack load blender

Toutefois si le load que vous demandez n'est pas assez explicite, Spack va vous demander d'être plus spécifique. Par exemple si plusieurs variants sont disponibles quand vous souhaitez charger le logiciel curl :

spack load curl

==> Error: curl matches multiple packages.
Matching packages:
gty4hz3 curl@8.4.0%gcc@11.4.1 arch=linux-rhel9-zen4
zpngtsn curl@8.4.0%gcc@11.4.1 arch=linux-rhel9-zen4
a7b3ulo curl@8.8.0%gcc@11.4.1 arch=linux-rhel9-zen4
Use a more specific spec (e.g., prepend '/' to the hash).

Il conviendra alors de regarder les différentes version et variants existant, avec les commandes expliquées si dessus, et de préciser à spack ce que nous souhaitons :

spack load curl@8.4.0 +libssh

Si la commande s'execute sans rien indiquer, c'est que tout s'est bien passé. Nous pouvons vérifier cela en listant les logiciels chargés :

spack find --loaded

-- linux-rhel9-zen4 / gcc@11.4.1 --------------------------------
curl@8.4.0
==> 1 loaded package

Nous pouvons vérifier également que la commande curl maintenant disponible est bien celle demandée :

which curl

/apps/2025/spack_install/linux-rhel9-zen4/gcc-11.4.1/curl-8.4.0-zpngtsnipryswojzkpecl3wbpda54j3e/bin/curl

Utiliser dans un job un logiciel disponible via Spack

Afin que ce logiciel soit disponible dans votre job de calcul, il conviendra, tout comme avec les modules sur l'ancien supercalculateur, de préciser dans votre fichier de soumission les commandes Spack à charger pour votre job.


Si vous avez besoin d'un logiciel et qu'il n'est pas disponible, ou pas dans une version ou variante correspondant à votre besoin, vous pouvez apprendre dans le chapitre suivant comment obtenir sur ROMEO les logiciels dont vous avez besoin.