| change to English
Pro správné zobrazení těchto stránek vypněte si, prosím, AdBlock (na stránkách nejsou reklamy).

newAD2 - program pro optickou charakterizaci

Pro instalaci je nutný Linux s pokud možno X86_64 procesorem. V principu je možný i 32 bitový systém, ale v tomto případě narazíte na problémy při kroskompilaci 64 bitových slave programů a celý klastr bude muset být tvořen 32 bitovými procesory. Možnost použít počítače s 32 bitovými je dnes čistě teoretická a nikdo tuto možnost asi nevyužije. Pro správný chod klastru je doporučena síť s rychlostí 1 Gbit/s, při použití sítě 100 Mbit/s dojde poměrně rychle k nasycení a výpočet bude limitovaný rychlostí sítě. Dále newAD2 vyžaduje, aby uživatel měl na klastru (počítačích, kde bude newAD2 instalováno) stejné uživatelské jméno.

Instalace na hlavním počítači (Master) pro více uživatelů

Grupa newad

Instalace se provede do společných adresářů přístupných grupě newad. Proto je nutné nejprve vytvořit tuto grupu a přidat do ní všechny uživatele vývojáře modelů, kteří budou mít právo newAD2 instalovat (většinou tedy pouze vás). Ostatní uživatelé newAD2 být v grupě nemusí. Přihlaste se jako root nebo požádejte správce systému a proveďte následující:

groupadd newad
usermod -a -G newad username

Adresář newAD2

Dále je nutné vytvořit následující adresář pro programy a data:

mkdir -p /usr/local/share/newAD2
chown root:newad /usr/local/share/newAD2
chmod 2775 /usr/local/share/newAD2

Instalovat balíčky

Spolu s uvedenými balíčky se nainstaluje asi 100 dalších balíčků v závislosti na jednotlivých distribucích Linuxu. Dále jsou pro vybrané distribuce uvedeny příkazy pro instalaci balíčků:

openSUSE Leap 15.4
zypper addrepo https://download.opensuse.org/repositories/science/15.4/science.repo
zypper refresh
zypper -n install gcc gcc-c++ make boost-devel gsl-devel readline-devel gwyddion-devel libtirpc-devel

Baličky pvm a pvm-devel po stažení nainstalujeme pomocí příkazu:

rpm -ihv pvm-3.4.6-lp154.0.0.x86_64.rpm pvm-devel-3.4.6-lp154.0.0.x86_64.rpm

pvm-3.4.6-lp154.0.0.src.rpm

Ubuntu 20.04
sudo apt-get install gcc g++ libboost-all-dev libgsl0-dev pvm-dev libreadline-dev libgwyddion20-dev libgtkglext1-dev libfftw3-dev libgtk2.0-dev libtirpc-dev gawk

sudo ln -s /usr/lib/x86_64-linux-gnu/libGL.so.1 /usr/lib/x86_64-linux-gnu/libGL.so
sudo mkdir /usr/lib/pvm3/lib/LINUX64
sudo ln -s /usr/lib/x86_64-linux-gnu/libpvm3.a /usr/lib/pvm3/lib/LINUX64/libpvm3.a

Na závěr v uživatelském režimu ověříme instalaci. Napište příkaz:

echo halt | pvm

Jestliže výsledkem tohoto příkazu je:

pvm> halt
Terminated

Vše proběhlo správně a můžeme přistoupit k dalším bodům instalace. Jestliže uvidíte chybovou hlášku "Console: Can't start pvmd" něco je špatně:

Stáhnout

newAD2-1.tar.bz2

Rozbalit

tar jxf newAD2-1.tar.bz2

Vytvořit soubor clusterAD2.ini

Pokud hodláte instalovat newAD2 pouze na jeden počítač, tento bod instalace můžete přeskočit. V adresáři newAD2-1 je nutné vytvořit clusterAD2.ini soubor s jedním řádkem v následujícím formátu:

hostname:pvm_arch/proc_arch

Pokud tento soubor neexistuje vytvoří se automaticky při prvním volání make. V rozbaleném adresáři proveďte následující příkaz:

make clean

Pokud make clean vypíše chybu s nedefinovanou funkcí gensub je třeba doinstalovat gawk. Soubor clusterAD2.ini může zůstat tak jak je vygenerován, pokud budeme newAD2 používat pouze na jednom počítači s X86_64 procesorem. V opačném případě soubor je soubor nutné editovat:

Poznamenejme, že soubor clusterAD2.ini definuje klaster počítačů, na kterým se bude newAD2 instalovat. Zatím tedy bude v klastru pouze jeden počítač.

Kompilace

Kompilaci částí potřebných na hlavním počítači provedeme příkazem:

make

Instalace

Instalaci všeho potřebného na hlavním počítači provedeme příkazem:

make local

Pokud vše proběhlo v pořádku danném stroji newAD2 nainstalováno v adresáři /usr/local/share/newAD2/bin. Na Ubuntu může mít make problém s nalezením pvm knihovny. Asi nejjednoduší způsob nápravy je vytvořit očekávaný adresář vyrobit v něm link k knihovně pvm:

sudo mkdir -p /usr/lib/pvm3/lib/LINUX64/
sudo ln -s /usr/lib/libpvm3.a /usr/lib/pvm3/lib/LINUX64/libpvm3.a

Dále se v adresáři /usr/local/share/newAD2 vygeneroval soubor hostfileAD2, kde jsou informace o klastru v následujícím formátu:

&hostname sp=corenumber ep=/usr/local/share/newAD2/bin

kde corenumber je počet jader na daném počítači a je automaticky generován.

Nastavení cest

Abyste program nemuseli volat s celou cestou je vhodné, abyste vy i ostatní uživatelé přidali adresář /usr/local/share/newAD2/bin do systemové proměnné PATH. V domovském adresáři editujte .bashrc soubor a na konec přidejte následující řádky:

export PATH=$PATH:/usr/local/share/newAD2/bin

Odhlašte se a přihlašte, aby se provedené změny provedly. Textovou konzoli newAD2 potom můžete spustit příkazem:

newAD2

nebo newAD2 můžete nastartovat s grafickým rozhraním pomocí:

newAD2gui

Instalace na podřízených počítačích (Slave) pro více uživatelů

Grupa newad a adresáře newAD2

Pro rozšíření klastru na jiný počítač potřebujeme požádat správce tohoto počítače, aby vytvořil uživatelské účty, adresáře newAD2 a grupu newad do které pridá pouze ty, kteří budou mít právo newAD2 instalovat (stejné jako pro Master). Dále je nutné mít nainstalován balíček pvm. Ostatní vývojářské balíčky není nutné instalovat, protože kompilace bude provedena na hlavním počítači.

Generování klíčů

Dále je nutné pro instalaci i spuštění newAD2 na podřízených počítačích vygenerovat soukromý a veřejný klíč pro všechny uživatele (toto si každý uživatel musí udělat sám), tak aby bylo možné se přihlašovat na podřízené počítače bez použití hesla. V domovském adresáři spusťte příkaz:

ssh-keygen -t rsa

Na dotazy příkazu třikrát odpovězte klávesou Enter, tím vygenerujete v adresáři .ssh veřejný id_rsa.pub a neveřejný id_rsa klíč, který bude použitelný bez hesla. Pokud na na podřízeném počítači s jménem slavehostname ještě žádné klíče nemáte můžete klíč z vašeho hostname nakopírovat do souboru authorized_keys v adresáři .ssh na Master i Slave počítači:

cp .ssh/id_rsa.pub .ssh/authorized_keys
scp .ssh/id_rsa.pub slavehostname:.ssh/authorized_keys

Na závěr ověřte jestli lze se připojit bez hesla a jakéhokoliv dotazování pomocí příkazu:

ssh slavehostname

Modifikace souboru clusterAD2.ini

V adresáři newAD2-1 je nutné přidat řádky s informacemi o podřízených počítačích, které slouží ke kompilaci příslušných částí newAD2 a ke generaci hostfileAD2 souboru. Formát řádku pro podřízený počítač je stejný jako pro hlavní počítač, ale na konci definičního řádku je přidaná cesta k pvmd na podřízeném počítači:

masterhostname:master_pvm_arch/master_proc_arch
slave1hostname:slave1_pvm_arch/slave1_proc_arch:slave1_pvmd_path
slave2hostname:slave2_pvm_arch/slave2_proc_arch:slave2_pvmd_path
slave3hostname:slave3_pvm_arch/slave3_proc_arch:slave3_pvmd_path
...

Hodnoty ..._proc_arch se budou lišit podle typu procesoru a hodnoty ..._pvmd_path budou závislé na konkrétní distribuci systému:

Pro hodnoty ..._pvm_arch platí to co jsme psali výše a tedy pro dnešní Linux na X86_64 platformě mohou nabývat hodnot LINUX64 nebo LINUXX86_64.

Kompilace

Kompilaci příslušných částí newAD2, které budou spuštěny na podřízených počítačích se provede opět příkazem:

make

Instalaci celého klastru provedeme příkazem:

make cluster

Ten nakopíruje potřebné soubory do adresářů na podřízených počítačích a vygeneruje aktuální hostfileAD2, kde jsou uvedené veškeré potřebné informace o klastru ve formátu:

&masterhostname sp=mastercorenumber dx= ep=/usr/local/pvm3/bin
&slave1hostname sp=slave1corenumber dx=slave1_pvmd_path ep=/usr/local/pvm3/bin
&slave2hostname sp=slave2corenumber dx=slave2_pvmd_path ep=/usr/local/pvm3/bin
&slave3hostname sp=slave3corenumber dx=slave3_pvmd_path ep=/usr/local/pvm3/bin
...

Poznamenejme, že dx= v prvním řádku (cesta k pvmd na Master počítači) není nastavená, protože není potřebná. Když ale nějakou hodnotu v clusterAD2.ini nastavíme, bude ignorována, protože, když se tento soubor čte, tak už pvmd na Master počítači už běží. Dále je nutno poznamenat, že kompilace a instalace celého newAD2 může být provedená pouze příkazem make cluster respektive make install, což je synonymum. V případě, že v slaveAD2.ini je uveden pouze Master počítač, potom make local a příkaz make cluster (make install) jsou ekvivalentní příkazy, ale jestliže je uvedeno v clusterAD2.ini více počítačů, příkaz make local vytvoří klastr jen s Master počítačem. Dále se tyto příkazy liší metodou kopírování přeložených programů do cílových adresářů. Příkaz make local používá příkaz install, který ke kopírování nepotřebuje autentizaci. Příkaz make cluster (make install) používá ke kopírování souborů slaveAD2-OTF a inspectorAD2 příkaz rsync, který po vás bude vyžadovat heslo v případě, že nebudete mít na Master počítači nastavenou autentizaci bez použití hesla (i když se jedná o kopírování z jednoho počítače na stejný počítač). Shrňme si to. Příkaz make má nastaveno několik cílů:

Jestli pvm běží na podřízeném počítači (to lze ověřit příkazem echo halt | pvm) a je-li možné se z hlavního počítače na něj nalogovat bez hesla je nutné ověřit, jestli pvm umí přidat do klasteru podřízený počítač (nastartovat na něm pvm démon). To lze následujícími příkazy:

pvm /usr/local/share/newAD2/hostfileAD2
pvm> add slavehostname
1 successful
                    HOST     DTID
                    ...      ...
pvm> halt

Jestliže na příkaz add v pvm kozoli neobdržíte souhlasnou hlášku odstraňte problém:

I když lze celý pvm klastr nastartovat pomocí příkazu add slavehostname a pak pvm konzoli opustit příkazem quit a následně spustit newAD2, není to nutné. Nastartování klastru zajistí newAD2 například pomocí podobných příkazů:

newAD2
newAD2> add slavehostname
...
newAD2> quit

Instalace vývojáře modelů

V rámci newAD2 máme tři ůrovně uživatelů:

Jestliže máte zájem být vývojář modelů a budete si chtít kompilovat vlastní modely je nutné zajistit, aby vaše pokusy s kompilací klusteru neovlivňovaly ostatní uživatele. To je zajištěno tím, že si definujete v .bashrc proměnou CLUSTERNAME například na hodnotu vašeho uživatelského jména:

export CLUSTERNAME=$USER

Proměnná CLUSTERNAME definuje klastr (soubor hostfileAD2$CLUSTERNAME) a modely (procesy slaveAD2-OTF$CLUSTERNAME), které se mají použít při spuštění newAD2. V souboru Makefile je definovaná proměná SUFFIX = $(CLUSTERNAME), kterou volíme, který klastr a modely chceme kompilovat. Tak si můžeme zkompilovat libovolný počet klastrů včetně nepojmenovaného, který může sloužit jako klastr se stabilními modely pro běžného uživatele. Tedy máme-li nastavenou proměnou CLUSTERNAME můžeme nepojmenovaný kluster kompilovat a spustit příkazy:

export CLUSTERNAME=
make install
newAD2gui