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.