Spack
Standardowo dostępny jest dość okrojony wspólny zakres oprogramowania i zachęcamy użytkowników do korzystania z systemu zarządzania oprogramowaniem Spack.
Instalacja w koncie użytkownika
Aby zainstalować system w swoim koncie należy sklonować repozytorium w wersji 1.2.2:
git clone https://github.com/spack/spack.git --branch v1.2.2 --depth 2 ~/spack/v1.2.2Załadowanie systemu do aktualnej sesji możliwe jest przez:
source ~/spack/v1.2.2/share/spack/setup-env.shDopisanie tej dyrektywy na końcu skryptu ~/.bashrc pozwoli na automatyczne załadowanie systemu przy każdym logowaniu.
Inicjalizacja systemu (operacja może potrwać kilka minut, ale jest jednorazowa) oraz znalezienie dostępnych kompilatorów:
spack bootstrap now
spack compiler findObsługa systemu zarządzania oprogramowaniem
Zachęcamy do zapoznania się z samouczkiem dostępnym na stronie twórców oprogramowania.
Przydatne polecenia dotyczące paczek
spack list anaconda3- wyszukiwanie dostępnychspack info anaconda3- wyświetlanie informacjispack install anaconda3- instalacjaspack find anaconda3- wyszukiwanie zainstalowanychspack load anaconda3- ładowanie
W celu oszczędzania miejsca prosimy o wykonanie polecenia spack clean --all po dokonaniu zmian w lokalnej instalacji Spack.
Wspólne repozytorium klastra
Aby uniknąć potrzeby wielokrotnej kompilacji najczęściej używanego oprogramowania przez każdego użytkownika w klastrze zostało utworzone wspólne repozytorium, z którego mogą korzystać wszystkie instancje Spack. Obecnie dostępne wspólne repozytoria:
v1.2.2
Automatycznie ładowane jako upstream z katalogu /projects/wmi_spack/v1.2.2/opt/spack/
Zainstalowane pakiety oraz ich zależności:
btop- btop - zaawansowany monitor zasobów z obsługą GPUffmpeg- FFmpeg - biblioteki i narzędzia do obsługi multimediówgo- go - język i środowisko programistyczneintel-oneapi-mkl- Biblioteka matematyczna Intel oneAPI MKLmathematica- Wolfram Mathematica podłączona do wydziałowego serwera licencjimc- Midnight Commander - konsolowy menedżer plikówneovim- Neovim - zaawansowany edytorr- R oraz zestaw podstawowych pakietów opisanych w dokumentacjirclone- rclone - menedżer i klient protokołów dostępu do zdalnych plikówrust- Rust - język i środowisko programistycznetree- tree - narzędzie do wizualizacji drzew katalogów i plikówuv- uv - menedżer środowisk i pakietów Python
Praca ze współdzielonym repozytorium
Konfiguracja systemowa Spack zawiera informację o wspólnych repozytoriach. Za pomocą komendy spack find --paths można uzyskać informacje lokalizację źródłową zainstalowanych pakietów. Wszystkie pakiety ze ścieżką /projects/wmi_spack są współdzielone.
[...]
-- linux-ubuntu22.04-x86_64_v3 / %c,cxx,fortran=gcc@12.3.0 ------
r@4.5.3 /projects/wmi_spack/v1.2.2/opt/spack/linux-x86_64_v3/r-4.5.3-leexrfiw5swmayyxym5j55q6fqslfxha
[...]
Takie pakiety działają jak zainstalowane w lokalnej instancji Spack. Wystarczy je załadować, na przykład:
spack load mathematicaZgłaszanie oprogramowania
W przypadku potrzeby współdzielenia oprogramowania wśród wielu użytkowników prosimy o zgłoszenie do helpdesku - pozwoli to oszczędzić zasoby oraz skrócić czas potrzebny na kompilację.
Rozproszona kompilacja
Spack umożliwia użycia zasobów klastra do znacznego przyspieszenia kompilacji aplikacji. Uruchomienie rozproszonej kompilacji na 2 węzłach z użyciem 8 CPU w każdym z nich:
srun --nodes 2 --ntasks-per-node 8 spack install rNietypowe błędy
Niekompatybilne wersje bazy danych
W przypadku użycia lokalnej wersji Spack w wersji dużo starszej niż współdzielone repozytorium Spack zwracany jest nietypowy komunikat o błędzie:
==> Error: you need a newer Spack version to read the DB in '/projects/wmi_spack/current/opt/spack'. The expected DB version is '7', but '8' was found.
W takim przypadku należy zmienić konfigurację bieżącej lokalnej wersji Spack aby wskazywała na poprzednie repozytorium współdzielone:
printf "upstreams:\n wmicluster-current:\n install_tree: '/projects/wmi_spack/v0.21.2/opt/spack'" > $SPACK_ROOT/etc/spack/upstreams.yamlZalecana jest aktualizacja lokalnej wersji Spack.
Brak odpowiedniego kompilatora
W przypadku braku dostępnego kompilatora wymaganego przez daną paczkę Spack zwraca nietypowy komunikat o błędzie:
==> Error: failed to concretize `btop+gpu` for the following reasons:
1. Only external, or concrete, compilers are allowed for the cxx language
2. Only external, or concrete, compilers are allowed for the c language
W takim przypadku należy sprawdzić czy w danej paczce nie ma wymagania, które nie może być spełnione przez aktualnie dostępne kompilatory:
$ spack compiler list
==> Available compilers
-- gcc ubuntu22.04-x86_64 ---------------------------------------
[e] gcc@12.3.0 [e] gcc@11.4.0
-- llvm ubuntu22.04-x86_64 --------------------------------------
[e] llvm@15.0.7
$ spack edit btop
[...]
requires("%gcc@14:", "%clang@19:", policy="one_of", msg="C++ 23 is required", when="@1.4.6:")
[...]W powyższym przykładzie konieczne jest zainstalowanie za pomocą Spack kompilatora: GCC w wersji 14 lub nowszej albo LLVM w wersji 19 lub nowszej.