Singularity
Oficjalna dokumentacja https://sylabs.io/docs/
Po co kontenery?
BYOE: Bring Your Own Environment!
Kontenery zmieniają przestrzeń użytkownika w wymienny komponent. Oznacza to, że programy, niestandardowe konfiguracje i środowisko, może być niezależne od systemu operacyjnego np. CentOS, Fedora, Ubuntu itp. Kontener Singularity spakuje wszystko, czego potrzebujesz, w jeden weryfikowalny plik.
Uruchamiając kontener (np. nowy PC, centrum HPC, nowy użytkownik/członek zespołu) zaoszczędzamy czas związany z konfiguracją środowiska i instalacją bibliotek niezbędnych do uruchomienia programu.
Przykłady
Sesja Interaktywna
Najpierw należy wejść na węzeł obliczeniowy w systemie Topola
srun -N1 -n10 --partition=topola --account=NR_GRANTU --qos=hpc --time=01:00:00 --pty /bin/bash -l
lub w systemie Okeanos
srun -N1 -n10 --partition=okeanos --account=NR_GRANTU --time=01:00:00 --pty /bin/bash -l
module load common/go/1.13.12
module load common/singularity/3.5.3
lub w systemie Rysy
srun -N1 -n4 --account=app-NR_GRANTU --gres=gpu:1 --time=01:00:00 --pty /bin/bash -l
Możemy użyć polecenia singularity
.
Jako przykład posłuży kontener o nazwie 'lolcow'.
singularity search lolcow # wyszukaj kontenery o nazwie lolcow
singularity pull library://sylabsed/examples/lolcow # ściągnij wybrany kontener
Po ściągnięciu kontenera
singularity run lolcow_latest.sif # uruchom kontener z domyślnym programem
singularity exec lolcow_latest.sif cowsay moo # wywołaj polecenie 'cowsay' z argumentem 'moo'
singularity shell --cleanenv lolcow_latest.sif # wejdź do kontenera - sesja interaktywna wewnątrz kontenera
# jeżeli nie chcemy przekazywać zmiennych środowiskych systemu hosta do wnętrza kontenera, należy użyć flagi --cleanenv
Zlecenie zadań
Zlecenie zadań z wykorzystaniem kontera singularity, odbywa się analogicznie jak dla innych programów
zadanie.slurm
#!/bin/bash -l
#SBATCH -J __JOBNAME__
#SBATCH -N __NUMBER_OF_NODES__
#SBATCH --ntasks-per-node __PROCESORS_PER_NODE__
#SBATCH -A __GRANT_NAME_GXXX__
#SBATCH -p __PARTITION__
module load common/go/1.13.3 # na systemie okeanos
module load common/singularity/3.4.2 # na systemie okeanos
singularity exec moj_kontener.sif ./skrypt_do_wykonania_wewnatrz_kontenera.sh
skrypt_do_wykonania_wewnatrz_kontenera.sh
#!/bin/bash -l
echo hello # program do wykonania wewnątrz kontenera
Singularity a MPI
Szczegóły na oficjalnej stronie singularity: https://sylabs.io/guides/3.4/user-guide/mpi.html
Budowanie kontenerów
Obecnie nie jest możliwe budowanie kontenerów singularity bezpośrednio na maszynach ICM. Kontener musi zostać zbudowany na lokalnym komputerze użytkownika (lub w chmurze).
sudo singularity build image.sif recipe.def