Projet

Général

Profil

Actions

Spack » Historique » Révision 1

Révision 1/2 | Suivant »
Argus Rusard, 27/04/2023 10:14


Spack

L'environnement gestion de paquets logiciels Spack est installé sur le cluster.

Les paquets explicites1 sont visible avec les modules classiques dans leur propre dépôt.

Pour une utilisation courante, on peut se contenter de charger les paquets à travers les modules.

Désactiver Spack de l'environnement

Le chargement de Spack dans l'environnement utilisateur est effectué automatiquement au chargement de la session (lors d'une connexion ou d'un job). Selon les cas, cela peut représenter un temps supplémentaire au démarrage de la session.

Si on ne souhaite pas utiliser spack on peut empêcher le chargement dans la session en ajoutant un fichier vide dans son répertoire $HOME:

touch ~/.spack_source_no

On peut évidemment rétablir le chargement automatique en début de session en supprimant ce fichier:

rm -f ~/.spack_source_no

On peut aussi charger l'environnement directement avec la commande:

source /nfs/softs/apps/spack/share/spack/setup-env.sh

Note: Désactiver le chargement de Spack dans l'environnement n'empêche pas d'utiliser les paquets Spack avec les Modules.

Utiliser Spack

Lorsque Spack est chargé dans l'environnement, on peut utiliser la commande spack2 à plusieurs fins.

Lister les paquets installés

La commande:

spack find

Permet de lister tous les paquets installés. Ils sont classés par catégorie en fonction du compilateur utilisé. Certains paquets peuvent apparaître plusieurs fois avec des numéros de version différents, mais aussi avec le même numéro de version en fonction des options utilisées pour les compiler

Afin d'avoir des informations plus précises sur les particularités d'un paquet installé, la commande:

spack find -lv <paquet>

affiche les différents versions de <paquet> installées avec les options d'installation et un hash3 distinctif.

Par exemple:

$ spack find -lv kokkos
-- linux-rocky8-zen3 / gcc@12.2.0 -------------------------------
opp3h2 kokkos@3.7.01~aggressive_vectorization~compiler_warnings~cuda~cuda_constexpr~cuda_lambda~cuda_ldg_intrinsic~cuda_relocatable_device_code~cuda_uvm~debug~debug_bounds_check~debug_dualview_modify_check~deprecated_code~examples~explicit_instantiation~hpx~hpx_async_dispatch~hwloc~ipo~memkind~numactl~openmp~openmptarget~pic+profiling~profiling_load_print~pthread~qthread~rocm+serial+shared~sycl~tests~tuning~wrapper build_system=cmake build_type=RelWithDebInfo intel_gpu_arch=none std=14
wlo4jff kokkos@3.7.01~aggressive_vectorization~compiler_warnings~cuda~cuda_constexpr~cuda_lambda~cuda_ldg_intrinsic~cuda_relocatable_device_code~cuda_uvm~debug~debug_bounds_check~debug_dualview_modify_check~deprecated_code~examples~explicit_instantiation+hpx+hpx_async_dispatch~hwloc~ipo~memkind~numactl~openmp~openmptarget~pic+profiling~profiling_load_print~pthread~qthread~rocm+serial+shared~sycl~tests~tuning~wrapper build_system=cmake build_type=RelWithDebInfo intel_gpu_arch=none std=17

Ici, les hash des versions sont ropp3h2 et wlo4jff. La version installée es la même mais ils diffèrent par des options d'installation. On peut consulter les différences entre ces deux paquets

Note: La commande spack find liste tous les paquets installés. On peut demander l'affichage des seuls paquets explicites1 avec l'option spack find -x.

Charger des paquets

On peut charger et décharger des paquets Spack de l'environnement avec les commandes spack load et spack unload de manière assez similaire aux Modules d'environnement.

spack load cmake@3.25.2
spack unload cmake@3.25.2

Demander l'installation de paquets

Spack dispose d'une grande liste de paquets installables (plus de 7000 paquets au moment d'écrire ces lignes).

La commande:

spack list

Permet d'en obtenir la liste, si l'on n'est pas pressé.

On peut aussi utiliser cette commande pour effectuer une recherche par nom. Par exemple:

$ spack list tensorflow
py-tensorflow           py-tensorflow-estimator  py-tensorflow-metadata     tensorflow-serving-client
py-tensorflow-datasets  py-tensorflow-hub        py-tensorflow-probability
==> 7 packages

Demander l'installation d'un paquet (ou d'une version spécifique) non présent sur le cluster peut se faire par un ticket redmine

Comparer deux versions d'un même paquet

On peut utiliser la commande spack find.

$ spack diff cmake@3.25.2 cmake@3.26.3
==> Warning: This interface is subject to change.

--- cmake@3.25.2/uyvkiawbxranuy5acsi7u7uggetesgq5
+++ cmake@3.26.3/nw4y6aglkldhodmg2h7jkzplkqhkmoui
@@ hash @@
-  cmake uyvkiawbxranuy5acsi7u7uggetesgq5
+  cmake nw4y6aglkldhodmg2h7jkzplkqhkmoui
-  ncurses qpuml3tgl2dojx4qyoe3sq54s5zg6atp
+  ncurses eqhewbmrskfpvxbv3gynd4llsebzfqul
-  pkgconf qzo55zs2i3pynbmenyhq25fiwoy4gjaw
+  pkgconf clor2ta2dvxrnaubt656j2m4z2y3f46h
@@ node_compiler @@
-  ncurses gcc
+  ncurses aocc
-  pkgconf gcc
+  pkgconf aocc
@@ node_compiler_version @@
-  ncurses gcc 12.2.0
+  ncurses aocc 4.0.0
-  pkgconf gcc 12.2.0
+  pkgconf aocc 4.0.0
@@ package_hash @@
-  cmake yngfblw5ezkuinfnusppkdfdmdqfyuivbrx6pyipvvqsccrax4wq====
+  cmake sc3thbyjv5m4llzy2py3ygr4sfp5jgaglxwcbw4urh6igehe6xxq====
@@ version @@
-  cmake 3.25.2
+  cmake 3.26.3

Dans certains cas, la sortie de cette commande peut être très volumineuse et difficile à exploiter

On peut aussi demander la comparaison entre deux hash3:

$ spack diff /ropp3h2 /wlo4jff
...

  1. Le terme paquet explicite correspond aux paquets qui ont été installés directement par opposition aux paquets implicites Spack installés car ils sont une dépendance nécessaire d'un autre paquet 

  2. La documentation complète se trouve ici: https://spack.readthedocs.io/en/latest/ 

  3. empreinte unique du paquet installé avec une Fonction de hachage 

Mis à jour par Argus Rusard il y a plus d'un an · 1 révisions