3 | | [[Prihláška]] |
4 | | |
5 | | [[Úložiská a výpočtové uzly]] |
6 | | |
7 | | [[Vytváranie jobov]] |
| 3 | [[PageOutline(2-5)]] |
| 4 | |
| 5 | == Prihláška == |
| 6 | |
| 7 | Stránka na prihlásenie: https://metavo.metacentrum.cz/cs/application/index.html |
| 8 | |
| 9 | Pre vyplnenie prihlášky stačí odkliknúť '''Formulář pro přihlášku''' v lište naľavo. Súčasťou prihlášky je aj preukázanie príslušnosti ku akademickej inštitúcii nachádzajúcej sa v ČR. Príslušnosť k MU sa dá preukázať prihlásením sa pomocu svojho UČO a sekundárneho hesla po kliknutí na logo univerzity. Pri vyplňovaní prihlášky dostanete možnosť vyplniť aj príslušnosť ku niektorému labu: CZPJ sa tiež nachádza medzi možnostami. |
| 10 | |
| 11 | Po odovzdaní formulára bude potrebné počkať na jeho schválenie (zvyčajne to trvá len pár hodín). |
| 12 | |
| 13 | Na stránke sa okrem možnosti vyplnenia formulára nachádzaju aj podmienky používania. |
| 14 | |
| 15 | '''Dôležité:''' V prípade, že výsledky vaších výpočtov uvediete v publikácii, je v nej potrebné uviesť aj formálne poďakovanie Metacentru viz. pravidla |
| 16 | |
| 17 | |
| 18 | == Prihlásenie na výpočtový uzol == |
| 19 | |
| 20 | Login: '''"ssh <META_USERNAME>@<FRONTEND>"''' |
| 21 | |
| 22 | Zoznam všetkých výpočtový uzlov a ich stav nájdete na: |
| 23 | https://metavo.metacentrum.cz/pbsmon2/nodes/pbs |
| 24 | |
| 25 | Je v podstate jedno na aký frontend sa prihlásite, kedže pri žiadaní o zdroje vám bude pridelený uzol ktorý vyhovuje požiadavkom (čo nemusí byť nutne ten na ktorom ste prihlásený). Ďalším rozdielom je lokácia domovského adresára v '''/storage''', viz Úložné priestory. |
| 26 | |
| 27 | [[Image(sshlogin.gif, title="Prihlasenie na uzol zubat1")]] |
| 28 | |
| 29 | Viac info na: https://wiki.metacentrum.cz/wiki/How_to_compute/Accessing_machines |
| 30 | |
| 31 | == Úložiská == |
| 32 | |
| 33 | Metacentrum ponuka 3 typy úložných priestorov pre vaše data. |
| 34 | |
| 35 | === Scratch storage === |
| 36 | |
| 37 | Rýchle a malé lokálne úložisko (zvyčajne SSD disky mountnuté do /scratch), ktoré slúžia výhradne pre dočasné súbory počas počítania. Užívateľ si od metacentra "vypýta" veľkosť scratchového úložiska ktoré dostane k danej úlohe. To sa uloží do premennej prostredia '''$SCRATCHDIR''', ktorá zvyčajne referencuje na cestu '''/scratch-*/<LOGIN>/<JOB_ID>''' |
| 38 | |
| 39 | Keď sa na vašom scratchovom úložisku nachádzajú dôležité dáta z výstupov, tak ich je potom vhodné premiestnit na diskové polia - vyžiadaný scratch sa do 14tich dní sám zmaže. Best practice je toto uložisko sám uvolniť po skončení výpočtov. |
| 40 | |
| 41 | Viac info: https://wiki.metacentrum.cz/wiki/Scratch_storage |
| 42 | |
| 43 | === Diskové polia === |
| 44 | |
| 45 | Mountnuté do '''/storage''', tieto polia predstavujú vaše primárne úložisko pre data na ktorých práve nepočítate (nachádza sa tam aj váš domovský adresár). Je limitovaný diskovou kvótou (zhruba 200GB, líši sa podľa poľa). V prípade, že vaše data sú dostatočne malé (do 5 GB poďla wiki), môžete vykonávať výpočty bez scratchu priamo na diskovom poli. V opačnom prípade odporúčam použiť scratch. |
| 46 | |
| 47 | Osobný pohľad do vášho zaplnenia diskových kvót a zoznamu diskových polí môžete nájsť tu: https://metavo.metacentrum.cz/osobniv3/quotas/user |
| 48 | |
| 49 | Viac info: https://wiki.metacentrum.cz/wiki/Types_of_data_storages#Data_storages_description.23Disk_arrays |
| 50 | |
| 51 | === Hierarchické disky === |
| 52 | Poskytuje obrovskú kapacitu zložené buď z MAID alebo magnetických pások, ale je vhodné len na data ktoré dlhšiu dobu nebudete používať ale jedného dňa sa k nim vrátite. |
| 53 | |
| 54 | |
| 55 | == Príprava na výpočty == |
| 56 | Všetky moduly sa dajú pridávať pomocou príkazu `module(1)` podobne ako na stroji Aisa. |
| 57 | === Python === |
| 58 | Kedže je u nas Python dost dominantný jazyk, tak som sa mu rozhodol venovať jednu sekciu. Samotný python si viete pridať pomocou `module add python-3.6.2-gcc`, pokial nechcete staršiu alebo Intel verziu: |
| 59 | |
| 60 | {{{ |
| 61 | python-3.6.2 (modul python-3.6.2-gcc) |
| 62 | python-3.5.0 (modul python-3.5.0-gcc) |
| 63 | python-3.4.1 (modul python-3.4.1-gcc a python-3.4.1-intel) |
| 64 | python-2.7.10 (modul python-2.7.10-gcc python-2.7.10-intel) |
| 65 | python-2.7.6 (modul python-2.7.6-gcc a python-2.7.6-intel) |
| 66 | python-2.7.5 (modul python-2.7.5) |
| 67 | python-2.6.2 (modul python-2.6.2) |
| 68 | python-2.5 (module python-2.5) |
| 69 | }}} |
| 70 | |
| 71 | Keď chcete pridať pythonovské knižnice, skúste sa pozrieť či ich nenájdete medzi modulmi. Známé výpočtové frameworky ako Keras a Tensorflow sa medzi nimi dajú nájsť (ako napr `tensorflow-1.13.1-gpu-python3`). |
| 72 | |
| 73 | V prípade že sa knižnica nedá najsť v moduloch, bude potrebné použiť v lepšom prípade PyPI, v horšom Condu, každopádne detailný postup ako tieto moduly (a to nielen pre Python) nainštalovať nájdete tu: https://wiki.metacentrum.cz/wiki/How_to_install_an_application#easy_way_-_using_PyPI_tool |
| 74 | |
| 75 | === CUDA === |
| 76 | |
| 77 | Kedže chcete počítať na GPU, bude vhodné pridať aj modul s vhodnými ovladačmi pre danú grafickú kartu, voľne dostupné sú tieto verzie: |
| 78 | {{{ |
| 79 | cuda -> cuda-7.5 |
| 80 | cuda-3.2-kky |
| 81 | cuda-4.0 |
| 82 | cuda-4.2 |
| 83 | cuda-5.0 |
| 84 | cuda-5.5 |
| 85 | cuda-6.0 |
| 86 | cuda-6.5 |
| 87 | cuda-7.0 |
| 88 | cuda-7.5 |
| 89 | cuda-8.0 |
| 90 | cuda-9.0 |
| 91 | cuda-10.0 |
| 92 | cuda-10.1 |
| 93 | }}} |
| 94 | |
| 95 | == Systém plánovania == |
| 96 | |
| 97 | Metacentrum používa systém plánovania jobov [[https://wiki.metacentrum.cz/wiki/PBS_Professional|PBS Professional]]. Tento systém ponúka 2 typy jobov: |
| 98 | |
| 99 | * Interaktívny job |
| 100 | * Batch job |
| 101 | |
| 102 | = Interaktívny job = |
| 103 | |
| 104 | === Popis === |
| 105 | |
| 106 | Interaktívny job je job v ktorom uživateľ ručne narába s poskytnutými zdrojmi prostredníctvom shellu |
| 107 | |
| 108 | '''Výhody:''' |
| 109 | * GUI |
| 110 | * lepší prehľad o tom čo človek robí |
| 111 | * dobrý error management |
| 112 | |
| 113 | '''Nevýhody:''' |
| 114 | * horšie využitie poskytnutého výpočtového času (čakanie na ľudský vstup) |
| 115 | * nevhodné pre dlho bežiace procesy (náhodou zabijete terminál a váš výpočtový čas je fuč) |
| 116 | * nutnosť spoľahlivého pripojenia |
| 117 | * nutnosť 'babysittovať' celý výpočet |
| 118 | |
| 119 | Keď to tak zhrniem, interaktívne joby sú vhodné na experimentovanie či všetko funguje ako má, lebo keď také zlyhanie nastane pri batch scripte tak stratíte všetok výpočtový čas a ten sa prenesie na ďalšieho užívatela vo fronte. |
| 120 | |
| 121 | === Syntax === |
| 122 | |
| 123 | Príklad: |
| 124 | |
| 125 | `qsub -I -l select=1:ncpus=2:mem=4gb:scratch_local=10gb -l walltime=1:00:00 -q gpu` |
| 126 | |
| 127 | `qsub`: príkaz ktorý vykoná job submission a zaradí vas do fronty, keď si frontu vyčakáte dostanete shell prideleného uzlu |
| 128 | |
| 129 | Prepínač `-I`: interaktívny job |
| 130 | |
| 131 | Parameter `-l`: príznak toho že další parameter bude modifikovať požiadavky na zdroje |
| 132 | |
| 133 | Parameter `select=`: počet uzlov alebo `chunkov`, ktoré vám poskytnú |
| 134 | * default=1 |
| 135 | |
| 136 | Parameter `ncpus=`: počet CPU na jeden chunk |
| 137 | |
| 138 | Parameter `ngpus=`: počet GPU na chunk |
| 139 | |
| 140 | Parameter `walltime=`: maximálny čas pre job, keď ho prekročíte, bude vám job automaticky odobratý |
| 141 | * default=24 hodín |
| 142 | |
| 143 | Parameter `mem=`: veľkosť RAMky |
| 144 | |
| 145 | Parameter `scratch_local=`: veľkosť lokálneho scratchového úložiska |
| 146 | |
| 147 | Všetky validne možnosti nájdete tu: https://wiki.metacentrum.cz/wiki/How_to_compute/Requesting_resources |
| 148 | |
| 149 | == Dávkové úlohy == |
| 150 | |
| 151 | === Popis === |
| 152 | Batch script je v podstate obyčajný bash script s pridanou hlavičkou pre PBS. Keď príde rada na užívateľa, vykonajú sa v ňom všetky príkazy a potom job skončí (alebo aj po timeoute) |
| 153 | |
| 154 | '''Výhody:''' |
| 155 | * job bude vykonávaný na pozadí |
| 156 | * opustenie terminálu neukončí job |
| 157 | * možnosť automatizácie |
| 158 | |
| 159 | '''Nevýhody:''' |
| 160 | * náchylné ku ľudským chybám (chybný script znamená že stratíte všetok výpočtový čas, musíte všetko opraviť, a potom sa znovu zaradiť do fronty) |
| 161 | |
| 162 | === Príklad === |
| 163 | |
| 164 | Otvorte textový súbor vo svojom obľúbenom textovom editore (či už nano, pico, vim, či bože chráň emacs): |
| 165 | |
| 166 | {{{ |
| 167 | #!/bin/bash |
| 168 | #PBS -N myFirstJob |
| 169 | #PBS -l select=1:ncpus=4:mem=4gb:scratch_local=10gb |
| 170 | #PBS -l walltime=1:00:00 |
| 171 | |
| 172 | #Vyse uvedene radky jsou urcene pro planovaci system: uloha pobezi maximalne hodinu, bude pozadovat jeden stroj se 4 procesory, 4 GiB RAM pameti a 10gb scratch adresare |
| 173 | trap 'clean_scratch' TERM EXIT # nastaveni uklidu SCRATCHE v pripade chyby |
| 174 | |
| 175 | cd $SCRATCHDIR || exit 1 # vstoupi do scratch adresare |
| 176 | |
| 177 | module add g03 # nahraje modul aplikace |
| 178 | cp /software/testData/gaussian_test.com $SCRATCHDIR # ziska vstupni data |
| 179 | g03 <gaussian_test.com >results.out # spusti aplikaci Gaussin a ulozi vysledky do souboru results.out |
| 180 | |
| 181 | cp results.out /storage/CITY/home/$USER || export CLEAN_SCRATCH=false # presune vysledky do domovskeho adresare nebo je ponecha ve scratchi v pripade chyby |
| 182 | }}} |
| 183 | |
| 184 | Tento jednoduchý script okrem počítania obsluhuje aj presun dát to scratchového úložiska, + obsluha chybových stavov. |
| 185 | |
| 186 | '''Dôležité:''' Kedže script dostane nový shell, tak bude potrebné všetky moduly pridať priamo v scripte (kedže tam nebudú) |
| 187 | |
| 188 | Tento script viete submitnúť pomocou `qsub script.sh`. Potom vám bude pridelený unikátny job ID, s ktorým viete manipulovať pri modifikovaní jobu. |
| 189 | |
| 190 | Sledovať svoje joby cez prehliadač v reálnom čase viete tu: <nevedel som nájsť link, doplním> |
| 191 | |
| 192 | === Výstup === |
| 193 | Váš výstup sa bude nachádzať v adresári, ktorý bol v dobe submitovania jobu pracovný. |
| 194 | |
| 195 | `<job_name>.o<jobID>` pre stdout |
| 196 | `<job_name>.e<jobID>` pre stderr |
| 197 | |
| 198 | Komplikovanejšiu správu jobov ako sledovanie stavu, storno nájdete tu: https://wiki.metacentrum.cz/wiki/How_to_compute/Job_management |
| 199 | |
| 200 | |
| 201 | |
| 202 | https://wiki.metacentrum.cz/wiki/How_to_compute/Requesting_resources |