[ Skip to the content ]

Institute of Formal and Applied Linguistics Wiki


[ Back to the navigation ]

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
grid [2008/10/20 15:05]
novak
grid [2011/07/30 14:57]
stepanek hvezdicka
Line 3: Line 3:
 Cluster (shluk) neboli grid (mříž, síť) je skupina počítačů, na kterých běží software pro automatické umístění vašeho výpočtu na dosud nevytížený stroj. Cluster na ÚFALu se nazývá LRC (Linguistic Research Cluster) a clustrovací software na něm je Sun Grid Engine. Do clusteru jsou zařazené tyto počítače: Cluster (shluk) neboli grid (mříž, síť) je skupina počítačů, na kterých běží software pro automatické umístění vašeho výpočtu na dosud nevytížený stroj. Cluster na ÚFALu se nazývá LRC (Linguistic Research Cluster) a clustrovací software na něm je Sun Grid Engine. Do clusteru jsou zařazené tyto počítače:
  
-  * lrc.ufal.hide.ms.mff.cuni.cz: hlava clusteru. To znamená, že neslouží k výpočtům, ale ke správě fronty výpočtů, které se odesílají na výpočetní stroje v clusteru. Na hlavě se nemají pouštět žádné náročné výpočty a naopak na ostatní stroje v clusteru se mají výpočty odesílat výhradně prostřednictvím hlavy. Hlava má 2 procesory Intel Pentium D 3 GHz a 1 GB paměti. +  * lrc.ufal.hide.ms.mff.cuni.cz: hlava clusteru. To znamená, že neslouží k výpočtům, ale ke správě fronty výpočtů, které se odesílají na výpočetní stroje v clusteru. Na hlavě se nemají pouštět žádné náročné výpočty a naopak na ostatní stroje v clusteru se mají výpočty odesílat výhradně prostřednictvím hlavy. Hlava má 2 procesory Intel Pentium D 3 GHz a 1 GB paměti. Ve skutečnosti existují hlavy dvě - lrc1 a lrc2, které sdílí IP adresu lrc.ufal.hide.ms.mff.cuni.cz. V případě výpadku jedné z hlav, přebírá kontrolu ta druhá.  
-  * fireball1 až 10 (4xcore, 16 GB RAM, Fedora 7, procesory Intel Xeon 3 GHz) +  * V následující tabulce je uveden seznam výpočetních uzlů clusteru (aktuální k 27.6.2011): 
-  * tauri1 až 10 (4xcore, 16 GB RAM, Fedora 7, 2 procesory Intel Xeon 3 GHz) + 
-  * orion1 až 10 (4xcore, 16 GB RAM, Fedora 7, procesory Intel Xeon 2 GHz) +^ Jméno                   ^ CPU                         ^ RAM (GB)   ^ OS               ^ 
-  * sol1 až 13 (4xcore, 16 GB RAMFedora 7, 2 procesory AMD Opteron Dual Core GHz)+| andromeda[1-13]         | 2xCore4 AMD Opteron 2.8 Ghz | 32         | Ubuntu 10.04     | 
 +| fireball[1-10]          | 2xCore4 Intel Xeon 3 Ghz    | 32         | Ubuntu 10.04     | 
 +| hyperion[1-10]          | 2xCore2 Intel Xeon 3 Ghz    | 32         | Ubuntu 10.04     | 
 +| orion[1-10]             | 2xCore4 Intel Xeon Ghz    | 32         | Ubuntu 10.04     | 
 +| pandora[1-10]           | 2xCore2 Intel Xeon 2.6 Ghz  16         | Ubuntu 10.04     | 
 +| sol[1-8,11-13]          | 2xCore4 AMD Opteron 2 Ghz   | 16         | Ubuntu 10.04     | 
 +| tauri[1-10]             | 2xCore4 Intel Xeon 3 Ghz    | 32         | Ubuntu 10.04     | 
 +  
  
 Frontovací systém umožňuje: Frontovací systém umožňuje:
Line 18: Line 25:
  
 Jednou za život musíte provést [[Základní nastavení SGE]], abyste SGE mohli používat. Jednou za život musíte provést [[Základní nastavení SGE]], abyste SGE mohli používat.
- 
- 
  
 ===== Ukázka užití SGE ===== ===== Ukázka užití SGE =====
Line 26: Line 31:
  
 <code> <code>
-ssh lrc+ssh lrc-two
   # přihlašte se na hlavu clusteru   # přihlašte se na hlavu clusteru
 echo "hostname; pwd" > skript.sh echo "hostname; pwd" > skript.sh
Line 39: Line 44:
   # Pořadí parametrů **je** důležité, co je za jménem skriptu, to se předává skriptu.   # Pořadí parametrů **je** důležité, co je za jménem skriptu, to se předává skriptu.
 qstat qstat
-  # Podívejme se, jaké úlohy běží.+qstat -u '*'  
 +  # Podívejme se, jaké vaše úlohy běží.
   # SGE chvíli čeká, než skript opravdu spustí. Pro malinké úlohy tedy SGE může představovat   # SGE chvíli čeká, než skript opravdu spustí. Pro malinké úlohy tedy SGE může představovat
   # zbytečné zpoždění.   # zbytečné zpoždění.
 +  # -u '*' ukáže úlohy všech uživatelů na clusteri
 cat skript.sh.oXXXXX cat skript.sh.oXXXXX
   # vypište si výstup skriptu. XXXXX je ID jobu, které bylo přiděleno   # vypište si výstup skriptu. XXXXX je ID jobu, které bylo přiděleno
Line 65: Line 72:
 qsub -V qsub -V
   # když chcete předat proměnné prostředí   # když chcete předat proměnné prostředí
-qdel all+qdel \*
   # když chcete zrušit všechny své joby (rušit cizí nesmíte)   # když chcete zrušit všechny své joby (rušit cizí nesmíte)
 </code> </code>
- 
-** V.N.: "qdel all" mi nefunguje, nahradil jsem za:** 
-   qdel "*" 
  
  
Line 97: Line 101:
  
 ===== Triky a opentlení ===== ===== Triky a opentlení =====
 +
  
 ==== ~bojar/tools/shell/qsubmit ==== ==== ~bojar/tools/shell/qsubmit ====
Line 109: Line 114:
 </code>  </code> 
  
 +lépe funguje ''~{stepanek,pajas}/bin/qcmd'' (nemusí se kvotovat parametry, správně počítá čas běhu...)
  
 ==== ~zeman/bin/qsub.csh ==== ==== ~zeman/bin/qsub.csh ====
Line 127: Line 133:
  
 (Kdybych místo uvozovek použil apostrofy, nerozbalily by se mi proměnné. První argument (název skriptu) klidně mohl být v uvozovkách spolu s přesměrováním. Dal jsem ho ven jen proto, že potom ''qsub.csh'' podle něj pojmenuje job ve frontě.) (Kdybych místo uvozovek použil apostrofy, nerozbalily by se mi proměnné. První argument (název skriptu) klidně mohl být v uvozovkách spolu s přesměrováním. Dal jsem ho ven jen proto, že potom ''qsub.csh'' podle něj pojmenuje job ve frontě.)
 +
 +
 +
 +
 +
 +==== TectoMT: devel/tools/cluster_utils/qrunblocks ====
 +
 +Jako ''$BRUNBLOCKS'', ale spouští úlohy na gridu (bez pomoci [[internal:jtred]]u).
 +
 +   qrunblocks filelist blocks
 +
 +Skript zadanou hromádku souboru rozdělí do ''-''''-jobs'' jobů. Každý job na gridu pak projede své soubory danou sekvencí bloků.
 +
 +Soubory možno zadat filelistem, nebo pomocí ''-''''-glob'' (stručně ''-g''). Bloky možno vyjmenovat v jednom argumentu, nebo načíst ze souboru pomocí ''--blocksfile SOUBOR''.
 +
 +Je nutné buď zadat ''-''''-tmt-root CESTA'', nebo mít nastaven ''$TMT_ROOT'' podle inicializace TectoMT.
 +
 +Parametr ''-E'' zpusobí, že se jobům z aktuálního prostředí procedí všechny proměnné ''TMT_PARAM_*'' (čili např. model parseru ap.). Případně je pomocí ''-e'' možné vyjmenovat některé (další) ručně.
 +
 +Parametr ''-''''-sync'' způsobí, že skript navíc bude (pasivně) čekat, až všechny joby skončí.
 +
 +Výstup každého jobu jde do vlastního logu, ''JOBNAME.o123456''. Pokud JOBNAME nezadáte (parametr ''-N''), užije se defaultní ''qrunblocks''.
 +
 +Parametr ''-''''-join'' způsobí, že se STDOUT všech kousků (ve správném pořadí) sebere a vypíše na hlavní STDOUT (''-''''-join'' implikuje ''-''''-sync''). Při spojování se také dělá důkladný test exitstatusů, takže ''qrunblocks'' končí úspěchem jen tehdy, když všechny joby uspěly.
 +
 +Bez ''-''''-sync'' nebo ''-''''-join'' nezbývá, než kontrolovat, jestli logy jednotlivých jobů na konci nemají napsáno:  ''Status: FAILED''.
  
 ===== Časté a záludné problémy ===== ===== Časté a záludné problémy =====
  
-==== Submitnutý job nesmí znovu submitovat ==== 
  
-Pokud se nemýlímnení dovoleno použít ''qsub'' ve skriptu/programukterý je už přes ''qsub'' spuštěn.+==== Submitnutý job může znovu submitovat ==== 
 + 
 +Danovy starší zkušenosti s clusterem PBS (nikoli SGE) říkaly, že tohle nejde. Ale jde to, aspoň u nás. Příkazy ''qsub'' a spol. jsou kromě hlavy clusteru dostupné i na všech strojích clusterusamozřejmě pokud váš soubor ''.bashrc'', ''.cshrc'' apod. zajistí, že se i na nich provede inicializace prostředí SGE.
  
  
Line 193: Line 226:
 </code> </code>
  
 +==== Jak zjistit, jaké zdroje jsem pro svou úlohu požadoval ====
  
 +<code>qstat -j 973884,982737,984029,984030,984031,984034,984036 | grep resource 
 +hard resource_list:         mem_free=50g 
 +hard resource_list:         mem_free=200g 
 +hard resource_list:         mem_free=16g 
 +hard resource_list:         mem_free=16g 
 +hard resource_list:         mem_free=16g 
 +hard resource_list:         mem_free=31g</code>
  
 ===== Synchronizace úloh (v Perlu) ===== ===== Synchronizace úloh (v Perlu) =====
Line 244: Line 284:
   * Pokud lze všechno předat parametry, nemusí se otevírat obousměrná roura a situace bude jednodušší   * Pokud lze všechno předat parametry, nemusí se otevírat obousměrná roura a situace bude jednodušší
   * Pokud ''muj_skript.pl'' začne psát na výstup dřív, než přečetl všechen vstup, dojde k deadlocku. Lze vyřešit obalením příkazy ''cat'' v ''obaleno.sh''.   * Pokud ''muj_skript.pl'' začne psát na výstup dřív, než přečetl všechen vstup, dojde k deadlocku. Lze vyřešit obalením příkazy ''cat'' v ''obaleno.sh''.
-  * Celý příklad je použit v Czengu od V.N. +  * Celý příklad je k vidění v Czengu od V.N.

[ Back to the navigation ] [ Back to the content ]