Metacentrum
Co je Metacentrum
https://metavo.metacentrum.cz/: MetaVO je jedna z virtuálních organizací české Národní Gridové Iniciativy MetaCentrum NGI a je otevřená všem akademickým pracovníkům a studentům členů sdružení CESNET. Uživatelé registrovaní v MetaVO mají možnost bezplatného využití výpočetní a úložné kapacity a řady aplikačních programů, za všechny např. Matlab, Maple, Gaussian,…
Jak funguje
Metacentrum spojuje množství počítačů po celé ČR. Aby prostředí bylo férové, používá se fronta, do které je třeba úlohu zařadit. Ve chvíli, kdy na úlohu příjde řada, spustí se. To, jak dlouho bude úloha ve frontě čekat, je ovlivněno mnoha faktoty - např. kolik procesorů je pro úlohu potřeba, kolik pamětí, jak dlouho úloha poběží a také kolik úloh jste v poslední době spustili atd.
Kromě strojů, na kterých běží úlohy, jsou na Metacentru stroje, kterým se říká frontend. Na tyto stroje se přihlašujeme z venčí a vkládáme úlohy do fronty.
Pro nahrávání dat na uložiště Metacentra je vhodné mít ftp klienta, např. FileZilla, RealFTP, apod.
Pro spouštění úloh je třeba terminál, popř. PuTTy. Návod pro Putty na Wiki Metacentra
Užitečné odkazy
- Stránka Metacentrum
- Dokumentace Metacentrum
- Wiki Metacentrum
- článek na wikipedia.org
- MATLAB na metacentru
Založení účtu
- Na stránkách příhlášky je třeba vyplnit Formulář pro přihlášení.
- Zde vyberete Mám účet v organizaci zapojené do eduID.cz - Vaše eduID je vaše přihlašovací jméno do STAG.
- Dále postupujte dle pokynů.
Viz https://docs.metacentrum.cz/access/account/
Práce s daty
Viz https://docs.metacentrum.cz/basics/concepts/ a https://docs.metacentrum.cz/data/data-within/
Vyberte si Frontend / location. Pokud si veberete frontend z druhého konce republiky, nemusí být stahování/nahrávání dat tak rychlé a navíc zatěžujete uzly, přes které se musí data posílat.
Frontend není vhodné zatěžovat přenosem velkého množství dat. Protože zatěžujete společné zdroje všem uživatelům. Proto je lepší použít přímý přístup na uložiště (viz Large data handling). Přímá adresa na uložitě je storage-lokace_uloziste.metacentrum.cz. Takže např. storage-plzen1.metacentrum.cz.
Frontendy by se měly používat pouze pro:
- příprava vstupů , předběžné a následné zpracování dat
- správa dávkových úloh
- droblkompilace a testování
Najděte si uložiště, které odpovídá frontendu, který jste si vybrali.
Přihlašte se na uložiště pomocí FTP klienta.
Jako hostitele připojení zadejte adresu na uložiště. Port 22 na obrázku znamená, že se používá protokol sftp.
Po přihlášení se ocitnete na frontendu (nebo přímo na uložišti) ve své složce tj. /storage/Jméno_Uložiště/home/Moje_Jmeno/.
Vytvořte si ve svém adresáři novou složku a nahrajte do ní testovací úlohu, např. hello.f90 .
Interaktivní úloha
Viz https://docs.metacentrum.cz/basics/jobs/
Pomocí terminálu se přihlaste na frontend: ssh Moje_Jmeno@Jmeno_frontendu.metacentrum.cz
.
Základní příkazy Linuxového terminálu
pwd
- vypíše se vaše aktuální adresa.ls
- vypíše obsah adresáře. Často se používá jakols -l
cd Cesta_do_adresaře
- přejdete na adresu Cesta_do_adresaře. O adresář níže se vrátíte pomocícd ..
.cp co_se_kopíruje kam_se_kopíruje
- příkaz zkopíruje co_se_kopíruje do adresáře kam_se_kopíruje. Lze použít jakocp odkud_se_kopiruje/* kam_se_kopíruje
, kde odkud_se_kopiruje je adresář a * znamená že chceme kopírovat všechno.
Další příkazy které se mohou hodit jsou cp
, mkdir
, rm
, find
, … Manuál ke všem příkazů lze zobrazit příkazem man příkaz
.
Interaktivní úloha ve frontě
Příkazem: qsub -I -l select=1:ncpus=2:mem=1gb:scratch_local=10gb -l walltime=1:00:00
vytvoříte žádost o interaktivní úlohu a budete čekat ve frontě než se vaše úloha spustí.
qsub
- přikaz zařezení úlohy do fronty, vše ostatní je specifikace úlohy-I
říká, že úloha bude interaktivní-l
je jen oddělovač- walltime=
udává, jak dlouho očekáváme, že úloha maximálně poběží. Po uplynutí této doby bude úloha násilně ukončena.*
select
- počet strojů, které chceme pro úlohu rezervovat ncpus
je počet procesorůmem
je množství RAMscratch_local
je množství místo na pevné disku. local znamená, že disk bude lokální. Kroměscratch_local
lze použítscratch_share
neboscratch_ssh
.
Po spuštění interaktivní úlohy se ocitnete na přiděleném stroji.
Přikazem cd $SCRATCH
se dostanete do scratche tj. místa které bylo rezervováno pro vaši úlohu. $SCRATCH je proměnná, ve které je uložena adresa do scratche.
Pomocí příkazu cp cesta_na_celni_uzel/testovaci_uloha/* $SCRATCH
zkopírujte obsah adresáře s testovací úlohou do scratche.
Zkuste zkompilovat a spustit testovací úlohu. Nezapomeňte, že máte rezervované jen 2 procesory!
Nyní můžete nejspíš použít jen mpifort
. Aby bylo možné použít dalíší kompilátory, je třeba přidat do úlohy moduly. Moduly jsou programy či programové balíčky, které naše úloha bude používat.
Seznam všech použitelných modulů vypíšeme pomocí moduel avail
. Seznam právě používaných modulů vypíšeme pomocí module list
. Modul přidáme pomocí module add Název_modulu
. Smažeme pomocí module rm
.
Přidejte modul intelcdk-17 a zkopilujte úlohu pomocí mpiifort
a spusťte.
Pokud vám nejde použít ani příkaz mpirun
, použíjte modul mpich3 nebo některé varianty.
Interaktivní úlohu ukončíme příkazem exit
.
Dávkové úlohy
Viz https://docs.metacentrum.cz/basics/jobs/
Dávková úloha je běžnější způsob spouštění úlohy. Umožňuje spouštět více úloh najednou a není třeba, abyste byli stále přihlášeni. Úlohy souštíme pomocí příkazu qsub Spoustěcí_Script.sh
. Kde Spoustěcí_Script.sh obsahuje požadavky pro úlohu a skript (příkazy), které se vykonají po spuštění úlohy.
Obsah souboru může vypadat takto:
#!/bin/bash
#PBS -N nazev_me_ulohy
#PBS -l select=1:ncpus=4:mem=1gb:scratch_local=1gb
#PBS -l walltime=1:00:00
#PBS -j oe
# přejdeme do adresáře $SCRATCH
cd $SCRATCH
# kopírujeme test.f90 z uložiště na $SCRATCH
cp -r ${PBS_O_WORKDIR}/test.f90 $SCRATCH
# přidání modulů
module add intelcdk-17
module add mpich3
# kompilace úlohy
mpiifort test.f90
# spuštění úlohy
mpirun -n 4 ./a.out
# kopírování výsledků na uložiště
cp -r * ${PBS_O_WORKDIR}
rm -rf ${SCRATCHDIR}
Vytvořte si spouštěcí script pro spuštění testovací úlohy a nahrajte jej do složky kde máte testovací úlohu. Přejděte do složky s testovací úlohou a pošlete script do fronty.
Po skončení úlohy bude do složky, ze které jste úlohu spustili, nahrán textový soubor pojmenovaný podobně jako: nazev_me_ulohy.o123456. Tento soubor obsahuje výstup spuštěných programů, tj. pokud programy vypisují něco na obrazovku, tak se to vypsalo do tohoto souboru.
Stav spuštěných úloh můžete kontrolovat na stránkách Metacentra > Můj účet > Moje úlohy > Běžící úlohy za posledních 24 hodin
Alternativou je příkaz qstat.
Úlohu lze ukonči příkazem qdel id_ulohy
, kde id_ulohy je číslo na začátku názvu úlohy v 1. sloupečku s názvem úloha, viz obrázek.
Fronty
Jak už bylo řečeno, tak priorita úlohy je závislá na parametrech úlohy, tj. kolik prostředků pro úlohu rezervujeme. Když vytvoříme úlohu, je naší úloze přidělena priorita podle toho kolik cpu, ram, scratch chceme využívat. Následně je naše úloha zařazena do fronty. Fronta ale není jen jedna. Na hlaní stránce v Stav zdrojů > Fronty úlohy lze nalézt seznam front do kterých se může vaše úloha dostat (Jen první tabulka - Server arien-pro.ics.muni.cz). Front existuje více, protože ne všechny stroje umožňují spouštět úlohy z každé fronty. Většina jsou soukromé fronty (ty se zámečkem).
Podstatné fronty pro nás jsou q_2h, q_4h, q_1d, q_2d, q_4d, q_1w. Názvy těchto front odkazují na délku trvání úlohy, kterou vyplníme ve walltime. Podle walltime úloha spadne do nejbližší vyšší fronty. Takže pokud použijeme walltime=72:00:00, budeme čekat ve stejné frontě s úlohamy, které mají walltime=96:00:00 apod.