Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Pri nadogradnji (interaktivnoj ili putem definicijskih datoteka), jedna od skripti unutar kontejnera postavlja korisničku okolinu (/etc/shinit_v2) i osigurava tzv. "forward" kompatibilnost na način da učitava datoteku /proc/driver/nvidia/version s domaćina, stvarajući sloj datoteka (/usr/local/cuda-11.8/compat/lib) koje usklađuju verziju CUDE s driverima na pristupnom poslužitelju (510525.4760.0313):

Code Block
languagebash
# izgradi proizvoljan kontejner ngc korištenjem repozitorija NGC čija verzija CUDE (npr. v11.8) ovisi o driverima verzijedriveru 520.61.05
[korisnik@x3000c0s27b0n0 ~] apptainer build ngc-kontejner.sif ngc-kontejner.def
...

# ispiši sadržaj /usr/local/cuda-11.8/compat/lib unutar kontejnera
[korisnik@x3000c0s27b0n0 ~] apptainer exec ngc-kontejner.sif ls -l /usr/local/cuda-11.8/compat/lib.real/lib
13:4: not a valid test operator: (
13:4: not a valid test operator: 510.47.03
total 145702
lrwxrwxrwx 1 korisnik korisnik       12 Sep 29  2022 libcuda.so -> libcuda.so.1
lrwxrwxrwx 1 korisnik korisnik       20 Sep 29  2022 libcuda.so.1 -> libcuda.so.520.61.05
-rw-r--r-- 1 korisnik korisnik 26284256 Sep 29  2022 libcuda.so.520.61.05
lrwxrwxrwx 1 korisnik korisnik       28 Sep 29  2022 libcudadebugger.so.1 -> libcudadebugger.so.520.61.05
-rw-r--r-- 1 korisnik korisnik 10934360 Sep 29  2022 libcudadebugger.so.520.61.05
lrwxrwxrwx 1 korisnik korisnik       19 Sep 29  2022 libnvidia-nvvm.so -> libnvidia-nvvm.so.4
lrwxrwxrwx 1 korisnik korisnik       27 Sep 29  2022 libnvidia-nvvm.so.4 -> libnvidia-nvvm.so.520.61.05
-rw-r--r-- 1 korisnik korisnik 92017376 Sep 29  2022 libnvidia-nvvm.so.520.61.05
lrwxrwxrwx 1 korisnik korisnik       37 Sep 29  2022 libnvidia-ptxjitcompiler.so.1 -> libnvidia-ptxjitcompiler.so.520.61.05
-rw-r--r-- 1 korisnik korisnik 19963864 Sep 29  2022 libnvidia-ptxjitcompiler.so.520.61.05

...

Pri izvršavanju aplikacija unutar ovog kontejnera, usklađenost kontejnera testira se izvršnom datotekom /usr/local/bin/cudaCheck i prolazi jedino na pristupnom GPU poslužitelju:

Code Block
languagebash
# testiraj usklađenost na pristupnom poslužitelju GPU
[korisnik@x3000c0s27b0n0 ~] apptainer exec --nv ngc-kontejner.sif /usr/local/bin/cudaCheck
INFO:    underlay of /etc/localtime required more than 50 (95) bind mounts
INFO:    underlay of /usr/bin/nvidia-smi required more than 50 (521474) bind mounts
13:4: not a valid test operator: (
13:4: not a valid test operator: 510525.4760.0313
CUDA Driver OK

# spoji se interaktivnom sjednicom na jedan od radnih GPU čvorova
[korisnik@x3000c0s27b0n0 ~] qsub -l ngpus=1 -I
qsub: waiting for job 107908.x3000c0s25b0n0.hsn.hpc.srce.hr to start
qsub: job 107908.x3000c0s25b0n0.hsn.hpc.srce.hr ready

# testiraj usklađenost na radnom čvoru
[korisnik@x8000c2s4b0n1 ~] apptainer exec --nv ngc-kontejner.sif /usr/local/bin/cudaCheck
INFO:    underlay of /etc/localtime required more than 50 (95) bind mounts
INFO:    underlay of /usr/bin/nvidia-smi required more than 50 (521474) bind mounts
13:4: not a valid test operator: (
13:4: not a valid test operator: 525.60.13
SystemCUDA has unsupported display driver / cuda driver combination (CUDA_ERROR_SYSTEM_DRIVER_MISMATCH) cuInit()=803

U slučaju da želimo izbjeći stvaranje ovog sloja kompatibilnosti, pri nadogradnji se treba onemogućiti spajanje datoteke /proc/driver/nvidia/version s domaćina čime se kontejner oslanja na "minor" kompatibilnost i osigurava izvršavanje na pristupnom i radnim čvorovima:

Tip
apptainer build --bind /dev/null:/proc/driver/nvidia/version ...

Primjer koraka izgradnje na Supeku nalaze se ispod:

Driver OK


Tip
NVIDIA driveri na pristupnom poslužitelju su nadograđeni i usklađeni sa radnim poslužiteljima u siječnju 2024. godine.
Izgradnja valjanog kontejnera sa NGC repozitorija moguća je na pristupnom poslužitelju bez --bind opcije ili dodatnih naredbi i konfiguracije.
Code Block
languagebash
# izgradi proizvoljan kontejner ngc i onemogući spajanje datoteke /proc/driver/nvidia/version
[korisnik@x3000c0s27b0n0 ~] apptainer build --bind /dev/null:/proc/driver/nvidia/version ngc-kontejner.sif ngc-kontejner.def
...

# testiraj usklađenost na pristupnom poslužitelju GPU
[korisnik@x3000c0s27b0n0 ~] apptainer exec --nv ngc-kontejner.sif /usr/local/bin/cudaCheck
INFO:    underlay of /usr/bin/nvidia-smi required more than 50 (521) bind mounts
13:4: not a valid test operator: (
13:4: not a valid test operator: 510.47.03
CUDA Driver OK

# spoji se interaktivnom sjednicom na jedan od radnih GPU čvorova
[korisnik@x3000c0s27b0n0 ~] qsub -l ngpus=1 -I
qsub: waiting for job 107908.x3000c0s25b0n0.hsn.hpc.srce.hr to start
qsub: job 107908.x3000c0s25b0n0.hsn.hpc.srce.hr ready

# testiraj usklađenost na radnom čvoru
[korisnik@x8000c2s1b0n0 ~] apptainer exec --nv ngc-kontejner.sif /usr/local/bin/cudaCheck
INFO:    underlay of /usr/bin/nvidia-smi required more than 50 (521) bind mounts
13:4: not a valid test operator: (
13:4: not a valid test operator: 525.60.13
CUDA Driver OK