...
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 |
---|
|
# 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 |
---|
|
# 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:
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 |
---|
|
# 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 |