...
- interaktivnom izgradnjom korištenjem verzije sandbox
- izgradnjom slike korištenjem definicijske datoteke .def
Nadogradnja kontejnera (lokalno) - shell --writable
Note | ||
---|---|---|
| ||
Upute koje koriste Pri izgradnji ili nadogradnji na Supeku i Padobranu koristite opciju fakeroot (npr. za interaktivnu nadogradnju):
|
U prvom slučaju, pri izgradnji kontejnera moramo navesti opciju opciju build --sandbox
koja će generirati kontejner u obliku direktorija ubuntu_20.04
:
...
Note | ||
---|---|---|
| ||
Prethodne upute Naredbe koje koriste Pri izgradnji ili nadogradnji na Supeku koristite opciju fakeroot (npr. za interaktivnu nadogradnju):
|
Tip | ||
---|---|---|
| ||
Pri izgradnji ili nadogradnji, apptainer kreira privremene datoteke koje se spajaju u konačni kontejner i koristi stazu
U trenutcima jače korisničke aktivnosti, a pogotovo višestruke izgradnje kontejnera koji mogu imati i do desetak gigabajta, zbog zadanog ponašanja s privremenim datotekama može doći do preopterećenja diskovnog prostora i smanjene funkcionalnosti operativnog sustava za sve korisnike. U svrhu izbjegavanja ovog tipa preopterećenja, preporučeno je postaviti varijablu okoliša |
Primjer Primjer sandbox izgradnje s dodatnim knjižnicama korištenjem Ubuntu v20.04 operativnog sustava:
...
- hybrid model - izvršavanje korištenjem MPI implementacije u kontejneru
- bind model - izvršavanje korištenjem MPI implementacije izvan kontejnera
Na Supeku je se preporučuje se koristiti bind model, zbog knjižnica koje osiguravaju integraciju sa sustavom za upravljanje PBS i mrežom Slingshot. Pri tom aplikacija koja koristi MPI mora biti ABI kompatibilna (kompajlirana sa MPICH verzija => v3.1) ili kompajlirana sa openMPI 5.x.x verzijom. Isto tako, potrebno je koristiti RHEL-8.6 kompatibilne linux distribucije.
...
U tablici su prikazane putanje slika za izgranju kontejnera i odgovarajući moduli ovisno o MPI implementaciji:
MPI kontejner | OS kontejner | MPI model | MPI Supek | Polazni kontejner | Bind modul |
---|---|---|---|---|---|
mpich-4.1.1 | Rocky-8 | Bind | cray-mpich-8.1.26 | /apps/utils/apptainer-images/rockylinux-8-mpich-4.1.1.sif | utils/apptainer-bind/cray-mpich |
openMPI-5.0.1 | Rocky-8 | Bind | Openmpi- 5.0.1-gnu-8.5.0 | /apps/utils/apptainer-images/rockylinux-8-openmpi-5.0.1.sif | utils/apptainer-bind/openmpi-5.0.1 |
openMPI-4.1.2 | Ubuntu-22.04 | Hybrid | OpenMPI 4.x.x | /apps/utils/apptainer-images/ubuntu-22.04-openmpi-4.1.2.sif | X |
Primjer izgradnje kontejnera koristeći MPICH(v4.1.1) :
...
Code Block | ||
---|---|---|
| ||
# spajanje na pristupni poslužitelj [korisnik@kompjuter:~] $ ssh mkvakic@login-gpu.hpc.srce.hr # izgradnja pytorch kontejnera [korisnik@x3000c0s27b0n0:~] $ apptainer build pytorch_1.13.1.sif docker://pytorch/pytorch:1.13.1-cuda11.6-cudnn8-runtime # print raznih informacija korištenjem --nv [korisnik@x3000c0s27b0n0:~] $ apptainer run --nv ./pytorch_1.13.1.sif python -c "import torch; print('Is cuda available?:', torch.cuda.is_available())" Is cuda available?: True [korisnik@x3000c0s27b0n0:~] $ apptainer run --nv ./pytorch_1.13.1.sif python -c "import torch; print('Device count:', torch.cuda.device_count())" Device count: 1 [korisnik@x3000c0s27b0n0:~] $ apptainer run --nv ./pytorch_1.13.1.sif python -c "import torch; print('Current device:', torch.cuda.current_device())" Current device: 0 [korisnik@x3000c0s27b0n0:~] $ apptainer run --nv ./pytorch_1.13.1.sif python -c "import torch; print('Device name:', torch.cuda.get_device_name(0))" Device name: NVIDIA A100-PCIE-40GB |
Nadogradnja sandbox kontejnera sa korištenjem --nv opcije moguća je nakon modifikacije sandbox direktorija izvan kontejnera.
Code Block | ||
---|---|---|
| ||
# izgradnja test.sandbox sandbox slike kontejnera
[korisnik@x3000c0s27b0n0:~] $ apptainer build --sandbox --fix-perms test.sandbox test.def
# modifikacija slike kontejnera
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-smi
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-debugdump
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-persistenced
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-cuda-mps-control
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/usr/bin/nvidia-cuda-mps-server
[korisnik@x3000c0s27b0n0:~] $ mkdir -p test.sandbox/var/run/nvidia-persistenced/
[korisnik@x3000c0s27b0n0:~] $ touch test.sanbox/var/run/nvidia-persistenced/socket
# pokretanje "sandbox" kontainera sa --nv opcijom
[korisnik@x3000c0s27b0n0:~] $ apptainer shell --nv --writable --fakeroot test.sandbox |
NVIDIA NGC kontejneri
Tip |
---|
NVIDIA driveri na pristupnom poslužitelju su nadograđeni i usklađeni sa radnim poslužiteljima u siječnju 2024. godine! |
...