Singularity
Singularity je kontajnerová platforma. Kontajner je jeden súbor, ktorý obsahuje nastavenie prostredia a všetok potrebný softvér pre spustenie vašej aplikácie.
- Singularity je opensource projekt, ktorý bol vytvorený pre spúšťanie komplexných aplikácií v HPC prostredí.
- Umožňuje používateľovi mať plnú kontrolu nad prostredím a vytvárať a spúšťať kontajnery, ktoré obsahujú všetok softvér v prenosnom a reprodukovateľnom balíku.
- Môžete si vytvoriť kontajner na svojom laptope a spúšťať ho na HPC klastroch.
- Singularity vám taktiež dovolí využívať zdroje na akomkoľvek stroji sa nachádzate, ktorý zahŕňa aj HPC sieť, manažér zdrojov, súborové systémy, GPU a akcelerátory atď.
Neprivilegovaný používateľ si takto môže zmeniť operačný systém na server za ten, ktorý má pod kontrolou. Takže keď na serveri beží RHEL6, ale vaša aplikácia beží na Ubuntu/RHEL7, môžete si vytvoriť Ubuntu/RHEL7 image, nainštalovať si svoje aplikácie v tomto image, nakopírovať ho na ďalšie server a spúšťať tieto aplikácie v ich natívnom Ubuntu/RHEL7 prostredí.
Singularity kontajnery môžu mať tri formáty:
- read-only squashfs (default) – vhodný pre produkčný image;
- writable ext3 (–writable option);
- writable (ch)root directory (–sandbox option) – vhodný pre vývoj.
Squashfs a (ch)root directory image môžu byť vytvorené z Docker source priamo na klastri, nie sú potrebné root práva. Odporúča sa vytvoriť natívny Singularity image pre rýchly beh kontajneru. Singularity je dostupná na našom klastri v Košiciach.
GPU príklad
Tensorflow bežne používaný softvér pre machine learning projekty. Oficiálny tensorflow repozitár na Docker Hub obsahuje kontajnery s podporou NVIDA GPU, ktoré využijú CUDA na výpočty.
singularity pull docker://tensorflow/tensorflow:latest-gpu
Príklad je umiestnený v /lustre/home/freeware/EXAMPLE_JOBS/gpu.
Príkazy, ktoré obsahujú run, alebo inak spúšťajú kontajner (shell, exec) môžu použiť prepínač –nv, ktorý nastaví v kontajneri prostredie pre využitie NVIDIA GPU a základné knižnice CUDA a umožní tak spustenie CUDA aplikácií.
CUDA aplikácie môžete bežať na nódoch s GPU: comp[17-24,39-56]. Spúšťací skript je test.sh, ktorý spustí jednoduchý tensorflow príklad. Môžete ho spustiť príkazom sbatch test.sh.
OpenMPI príklad
Openmpi príklad sa nachádza v /lustre/home/freeware/EXAMPLE_JOBS/singularity/openmpi/.
V tomto prípade je príkazom mpiexec spustený singularity kontajner. Vnútri kontajneru je nainštalovaná rovnaká verzia openmpi ako na server. Image bol vytvorený na lokálnom linuxovom počítači použitím “receptu” openmpi-test.recipe s právami roota: sudo singularity build openmpi.simg openmpi-test.recipe
Počas vytvorenia kontajneru je skompilovaná verzia openmpi s podporou infiniband a takisto je skompilovaný mali testovací program. Tento príklad môžete spustiť príkazom sbatch test.sh.
Interaktívny shell v kontajneri môžete spustiť príkazom singularity shell. Je vhodný pre vývojárske účely. Použite prepínač -w | –writable aby sa zmeny v kontajneri uložili natrvalo.
Domovský adresár používateľa je v kontajneri mountovaný automaticky. Pokiaľ chcete mountovať /scratch na lokálnom disku, toto spravíte pomocou prepínača -B | –bind.
Úplná dokumentácia sa nachádza na stránke Singularity.