GNU/Linux >> Znalost Linux >  >> Linux

HPL (High Performance Linpack):Srovnávání Raspberry PI

Benchmarking je proces spouštění některých standardních programů k vyhodnocení rychlosti dosažené systémem. Existuje řada standardních bechmarkovacích programů a v tomto tutoriálu srovnáváme systém Linux pomocí dobře známého programu zvaného HPL, také známého jako High Performance Linpack.

Úvod

V tomto tutoriálu se zabýváme tím, jak postupovat při testování systému s jedním procesorem, Raspberry Pi. Nejprve srovnáme jeden uzel a poté budeme pokračovat ve srovnávání více uzlů, přičemž každý uzel představuje Raspberry Pi. Zde je třeba poznamenat několik věcí. Za prvé, srovnávání jednoho uzlu nebo více uzlů má několik závislostí, které je třeba splnit, které budou popsány v tomto tutoriálu. ALE na více uzlech existuje ještě více závislostí, jako je implementace MPI (jako MPICH nebo OpenMPI), aby HPL fungovala. Takže pro srovnávání více uzlů předpokládám, že vaše uzly mají nainstalovaný a spuštěný MPICH.

Co je HPL?

HPL je softwarový balík, který řeší (náhodný) hustý lineární systém v aritmetice s dvojitou přesností (64 bitů) na počítačích s distribuovanou pamětí. Balíček HPL poskytuje testovací a načasovací program pro kvantifikaci přesnosti získaného řešení a také času, který zabral jeho výpočet. Nejlepší výkon dosažitelný tímto softwarem ve vašem systému závisí na mnoha různých faktorech. Tato implementace je škálovatelná v tom smyslu, že jejich paralelní účinnost je udržována konstantní s ohledem na využití paměti na procesor. Můžeme to tedy použít k testování jednoho procesoru nebo řady distribuovaných procesorů paralelně. Začněme tedy s instalací HPL.

1 Instalace závislostí

HPL má několik softwarových závislostí, které musí být splněny před instalací. Jsou to:

  • gfortran – kompilátor programu fortran
  • MPICH2 – implementace MPI
  • mpich2-dev – vývojové nástroje
  • BLAS – Základní podprogramy lineární algebry

Zde předpokládáme, že máte nainstalovaný MPICH2. Chcete-li nainstalovat další závislosti a balíčky, použijte následující příkaz:

sudo apt-get install libatlas-base-dev libmpich2-dev gfortran

Pouze tento krok je třeba opakovat v každém z uzlů (Pis) přítomných v clusteru.

2 Stáhněte si HPL a nastavte jej

Stáhněte si balíček HPL odtud. Další věc, kterou musíte udělat, je extrahovat soubor tar a vytvořit soubor makefile založený na dané šabloně. Otevřete terminál a změňte adresář, do kterého je uložen stažený soubor HPL tar. Proveďte následující sadu příkazů jeden po druhém.

tar xf hpl-2.1.tar.gz
cd hpl-2.1/setup
sh make_generic
cd ..
cp setup/Make.UNKNOWN Make.rpi

Poslední příkaz zkopíruje obsah Make.UNKNOWN do Make.rpi . Děláme to proto, že soubor make obsahuje všechny konfigurační detaily systému ( The raspberry pi ) a také detaily různých knihoven jako mpich2, balíčky atlas/blas, domovský adresář atd. V dalším kroku provedeme změny do souboru Make.rpi.

3 Úprava souboru Make.rpi

To je důležitý krok. Níže zobrazené změny se liší podle vašeho systému. Zde to ukazuji s ohledem na můj systém. Vezměte prosím na vědomí, že následující změny mají zobrazeny parametry, které jsou rozptýleny v souboru Make.rpi. Navrhuji vám tedy najít každý parametr a nahradit nebo přidat změny a teprve poté pokračovat k dalšímu parametru.

Otevřete soubor Make.rpi pomocí textového editoru pomocí příkazu:

nano Make.rpi

Proveďte v souboru následující změny.

ARCH =rpiTOPdir =$(HOME)/hpl-2.1MPdir =/usr/local/mpich2MPinc =-I $(MPdir)/includeMPlib =$(MPdir)/lib/libmpich.aLAdir =/usr/lib/atlas -base/LAlib =$(LAdir)/libf77blas.a $(LAdir)/libatlas.a

4 Kompilace HPL

Jakmile je soubor Make připraven, můžeme začít s kompilací HPL. Soubor ".xhpl" bude přítomen ve složce "bin/rpi" ve složce HPL. Spusťte následující příkaz:

makeh arch=rpi

5 Vytvoření vstupního souboru HPL

Následuje příklad souboru "HPL.dat". Toto je vstupní soubor pro HPL, když je spuštěn. Hodnoty uvedené v tomto souboru se používají ke generování a výpočtu problému. Tento soubor můžete použít přímo ke spuštění testů pro jeden uzel. Vytvořte soubor ve složce "bin/rpi" a pojmenujte jej "HPL.dat". zkopírujte obsah níže do tohoto souboru.

Srovnávací vstupní soubor HPLinpackInnovative Computing Laboratory, University of Tennessee Název výstupního souboru HPL.out (pokud existuje)6 výstup zařízení (6=stdout,7=stderr,soubor)1 počet velikostí problémů (N)5040 Ns1 # NBs128 NBs0 Mapování procesu PMAP (0=Řádek-,1=Hlavní sloupec)1 # mřížek procesu (P x Q)1 Ps1 Qs16.0 práh1 # faktu panelu2 PFACTs (0=levý, 1=výřez, 2=pravý)1 Počet rekurzivních zastavovacích kritérií4 NBMIN (>=1)1 Počet panelů v rekurzi2 NDIVs1 Počet rekurzivních panelových faktů.1 RFACTs (0=levý, 1=Crout, 2=Vpravo)1 # vysílání1 BCAST (0=1rg,1 =1rM,2=2rg,3=2rM,4=Lng,5=LnM)1 # hloubky výhledu1 HLOUBKY (>=0)2 SWAP (0=bin-exch,1=long,2=mix)64 práh výměny0 L1 v (0=transponováno,1=netransponováno) ve formě0 U in (0=transponováno d,1=ne-transponováno) forma1 ekvilibrace (0=ne,1=ano)8 zarovnání paměti ve dvou (> 0)

Obsah tohoto souboru musí být měněn metodou pokus-omyl, dokud nedosáhnete uspokojivého výstupu. Chcete-li vědět o každém parametru a jak jej změnit, podívejte se na dokument zde. Chcete-li přeskočit k hlavnímu bodu, začněte číst od strany č. 6 v tomto dokumentu.

6 Spuštění HPL na jednom uzlu

Jakmile je soubor HPL.dat připraven, můžeme spustit HPL. Výše uvedený soubor HPL.dat je pro jeden uzel nebo procesor. Součin hodnot P*Q ve výše uvedeném souboru udává počet procesorů, pro které je HPL testován. Tedy z výše uvedeného souboru P=1 a Q=1 , 1*1=1, takže je to pro jeden procesor. Nyní jej spustíte pomocí příkazů:

cd bin/rpi
./xhpl

Výstup vypadá podobně jako níže:

===================================================================================HPLinpack 2.1 – Vysoce výkonný benchmark Linpack – 26. října 2012 Napsal A Petitet a R. Clint Whaley, Innovative Computing Laboratory, UTKUpraveno Piotrem Luszczkem, Inovativní Computing Laboratory, UTKUpraveno Julien Langou, University of Colorado Denver===================================================================================Následuje vysvětlení vstupních/výstupních parametrů:T/V:Čas stěny / kódovaná varianta.N:Pořadí matice koeficientů A.NB:Blokující faktor rozdělení.P:počet procesních řádků.Q :Počet sloupců procesu.Čas :Čas v sekundách pro vyřešení lineárního systému.Gflops :Rychlost provádění pro řešení lineárního systému. Budou použity následující hodnoty parametrů:N:5040 NB:128 PMAP :Mapování hlavního procesu P :1 Q :1 PFACT :Vpravo NBMIN :4 NDIV :2 RFACT :Crout BCAST :1 ringM HLOUBKA :1 VÝMĚNA :Mix (práh =64)L1 :transponovaná formaU :transponovaná forma ROVNÁVANÁ :anoZAŘÍZENÍ :8 slov s dvojitou přesností-------------------- -------------------------------------------------- ------------ Pro každý test je náhodně vygenerována matice A.- Vypočte se následující škálovaná kontrola rezidua:||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )- Relativní strojová přesnost (eps) se považuje za 1,110223e-16- Výpočtové testy projdou, pokud jsou zmenšené zbytky menší než 16,0

Také se musíme soustředit na konečný výsledek. Konečný výstup, který přichází na terminál, bude vypadat podobně, jak je znázorněno níže. Poslední hodnota udává rychlost a hodnoty před tím ukazují různé poskytnuté parametry. V níže uvedeném obsahu je rychlost zobrazena v Gflops a její hodnota je kolem 1,21e-01 Gflops, což po přepočtu dává 121 Mega FLOPS (MFLOPS).

==================================================================================T/V N NB P Q Čas Gflops---------- -------------------------------------------------- --------------------WR11C2R4 21400 128 3 11 537,10 1.210e-01HPL_pdgesv() čas zahájení Po 23. června 17:29:42 2014HPL čas ukončení 2. června (HPL_pdgesv 17:55:19 2014-------------------------------------------- -----------------------------------||Ax-b||_oo/(eps*(| |A||_oo*||x||_oo+||b||_oo)*N)=0,0020152 ...... PASSED==================================================================================

Vezměte prosím na vědomí, že v závislosti na vašem Raspberry Pi se rychlost a čas mohou výrazně lišit. Proto prosím nepoužívejte tyto výsledky jako srovnání s vaším uzlem nebo clusterem.

7 Spuštění HPL na více uzlech

Když chceme spustit HPL pro více uzlů, budeme muset změnit soubor HPL.dat. Zde předpokládejme, že máme 32 uzlů. Takže součin P*Q by měl být 32. Zvolil jsem P=4, Q=8 tedy 4*8=32. Takže kromě této změny budeme muset změnit hodnotu N, pokusem a omylem jsme dostali maximální rychlost pro N=17400. Konečný obsah souboru je uveden níže. proveďte příslušné změny ve svém souboru "HPL.dat".

Vstupní soubor srovnávacího testu HPLinpackInnovative Computing Laboratory, University of Tennessee Název výstupního souboru HPL.out (pokud existuje)6 výstup zařízení (6=stdout,7=stderr,soubor)1 počet velikostí problémů (N)17400 Ns1 # NBs128 NBs0 Mapování procesu PMAP (0=Řádek-,1=Hlavní sloupec)1 # mřížek procesu (P x Q)4 Prahová hodnota Ps8 Qs16.01 # faktu panelu2 PFACT (0=levá, 1=výřez, 2=pravá)1 Počet rekurzivních zastavovacích kritérií4 NBMIN (>=1)1 Počet panelů v rekurzi2 NDIVs1 Počet rekurzivních panelových faktů.1 RFACTs (0=levý, 1=Crout, 2=Vpravo)1 # vysílání1 BCAST (0=1rg,1 =1rM,2=2rg,3=2rM,4=Lng,5=LnM)1 # hloubky výhledu1 HLOUBKY (>=0)2 SWAP (0=bin-exch,1=long,2=mix)64 práh výměny0 L1 v (0=transponováno,1=netransponováno) form0 U in (0=transpos ed,1=netransponováno) forma1 ekvilibrace (0=ne,1=ano)8 zarovnání paměti ve dvou (> 0)

Jakmile to uděláme, budeme muset znovu spustit HPL. Použijte následující příkaz. Nezapomeňte změnit cestu v níže uvedeném příkazu tak, aby představovala cestu ke strojovému souboru ve vašem systému.

cd bin/rpi
mpiexec -f ~/mpi_testing/machinefile -n 32 ./xhpl

Výsledek bude podobný tomu, který je uveden výše pro jeden uzel, ale rozhodně bude mít vyšší rychlost.

Tento druh změn lze provést v závislosti na počtu uzlů nebo procesorů v systému a lze zjistit výsledky benchmarku. A jak jsem již zmínil dříve, chcete-li se dozvědět více o tom, jak nastavit hodnoty v souboru HPL.dat, přejděte na tento dokument a přečtěte si jej.


Linux
  1. Jaké jsou možnosti připojení pro zlepšení výkonu souborového systému ext4 v Linuxu

  2. Nelze nastavit heslo GRUB na systému Raspberry Pi 3

  3. Mono na Raspberry Pi

  1. Do Ubuntu přichází vysoce výkonná otevřená infrastruktura

  2. Pořadí přesměrování?

  3. Který síťový protokol pro sdílení souborů má nejlepší výkon a spolehlivost?

  1. Linux – Určení konkrétního souboru odpovědného za vysoké I/O?

  2. Nevýhoda při použití Chrootu ve vysoce výkonných počítačích?

  3. JumpFm – Elektronový správce souborů zaměřený na výkon