GNU/Linux >> Linux の 問題 >  >> Linux

HPL(High Performance Linpack):ラズベリーPIのベンチマーク

ベンチマークは、システムによって達成される速度を評価するために、いくつかの標準プログラムを実行するプロセスです。多くの標準的なベンチマークプログラムがあります。このチュートリアルでは、HPLと呼ばれる有名なプログラム(High Performance Linpackとも呼ばれます)を使用してLinuxシステムのベンチマークを行います。

はじめに

このチュートリアルでは、シングルプロセッサシステムであるRaspberryPiのベンチマークを行う方法について説明します。最初に単一のノードのベンチマークを行い、次に複数のノードのベンチマークを続けます。各ノードはRaspberryPiを表します。ここで注意すべきことがいくつかあります。まず、単一ノードまたは複数ノードのベンチマークには、このチュートリアルで説明する、満たすべきいくつかの依存関係があります。ただし、複数のノードでは、HPLを機能させるために、MPI実装(MPICHやOpenMPIなど)を構築して実行する必要があるなど、さらに多くの依存関係があります。したがって、複数のノードのベンチマークを行うために、ノードにMPICHがインストールされて実行されていると仮定します。

HPLとは何ですか?

HPLは、分散メモリコンピューター上で倍精度(64ビット)演算で(ランダム)高密度線形システムを解くソフトウェアパッケージです。 HPLパッケージは、得られたソリューションの精度とその計算にかかった時間を定量化するためのテストおよびタイミングプログラムを提供します。システムでこのソフトウェアによって達成できる最高のパフォーマンスは、さまざまな要因によって異なります。この実装は、プロセッサごとのメモリ使用量に関して並列効率が一定に保たれるという意味でスケーラブルです。したがって、これを使用して、単一のプロセッサまたは一連の分散プロセッサを並行してベンチマークできます。それでは、HPLのインストールを始めましょう。

1依存関係のインストール

HPLには、インストールする前に満たす必要のあるソフトウェアの依存関係がいくつかあります。それらは:

  • gfortran-Fortranプログラムコンパイラ
  • MPICH2-MPIの実装
  • mpich2-dev-開発ツール
  • BLAS-基本的な線形代数サブプログラム

ここでは、MPICH2がインストールされていることを前提としています。他の依存関係とパッケージをインストールするには、次のコマンドを使用します:

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

このステップのみを、クラスター内に存在する各ノード(Pis)で繰り返す必要があります。

2HPLをダウンロードして設定します

ここからHPLパッケージをダウンロードします。次に行うことは、tarファイルを抽出し、指定されたテンプレートに基づいてmakefileを作成することです。ターミナルを開き、ダウンロードしたHPLtarファイルが保存されているディレクトリに変更します。次の一連のコマンドを次々に実行します。

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

最後のコマンドは、Make.UNKNOWNの内容をMake.rpiにコピーします。これは、makeファイルにシステム(ラズベリーパイ)のすべての構成の詳細と、mpich2、atlas / blasパッケージ、ホームディレクトリなどのさまざまなライブラリの詳細が含まれているためです。次のステップでは、変更を加えます。 Make.rpiファイルに。

3Make.rpiファイルを調整します

これは重要なステップです。以下に示す変更は、システムによって異なります。ここでは、私のシステムに関してそれを示します。以下の変更には、Make.rpiファイル全体に広がるパラメーターが示されていることに注意してください。したがって、各パラメータを見つけて変更を置き換えるか追加してから、次のパラメータに進むことをお勧めします。

次のコマンドを使用して、テキストエディタを使用してMake.rpiファイルを開きます。

nano Make.rpi

ファイルに次の変更を加えます。

ARCH         = rpi
TOPdir       = $(HOME)/hpl-2.1
MPdir        = /usr/local/mpich2
MPinc        = -I $(MPdir)/include
MPlib        = $(MPdir)/lib/libmpich.a
LAdir        = /usr/lib/atlas-base/
LAlib        = $(LAdir)/libf77blas.a $(LAdir)/libatlas.a

4HPLのコンパイル

Makeファイルの準備ができたら、HPLのコンパイルを開始できます。 「.xhpl」ファイルは、HPLフォルダー内の「bin/rpi」フォルダーにあります。次のコマンドを実行します:

makeh arch=rpi

5HPL入力ファイルの作成

以下は「HPL.dat」ファイルの例です。これは、実行時のHPLの入力ファイルです。このファイルで提供される値は、問題の生成と計算に使用されます。このファイルを直接使用して、単一ノードのテストを実行できます。 「bin/rpi」フォルダー内にファイルを作成し、「HPL.dat」という名前を付けます。以下の内容をそのファイルにコピーします。

HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out      output file name (if any)
6            device out (6=stdout,7=stderr,file)
1            # of problems sizes (N)
5040         Ns
1            # of NBs
128          NBs
0            PMAP process mapping (0=Row-,1=Column-major)
1            # of process grids (P x Q)
1            Ps
1            Qs
16.0         threshold
1            # of panel fact
2            PFACTs (0=left, 1=Crout, 2=Right)
1            # of recursive stopping criterium
4            NBMINs (>= 1)
1            # of panels in recursion
2            NDIVs
1            # of recursive panel fact.
1            RFACTs (0=left, 1=Crout, 2=Right)
1            # of broadcast
1            BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1            # of lookahead depth
1            DEPTHs (>=0)
2            SWAP (0=bin-exch,1=long,2=mix)
64           swapping threshold
0            L1 in (0=transposed,1=no-transposed) form
0            U  in (0=transposed,1=no-transposed) form
1            Equilibration (0=no,1=yes)
8            memory alignment in double (> 0)

このファイルの内容は、満足のいく出力が得られるまで、試行錯誤の方法で変更する必要があります。各パラメータとその変更方法については、こちらの論文を参照してください。要点にスキップするには、ページ番号から読み始めます。その文書の6。

6単一ノードでのHPLの実行

HPL.datファイルの準備ができたら、HPLを実行できます。上記のHPL.datファイルは、単一のノードまたはプロセッサ用です。上記のファイルのP*Q値の積は、HPLがテストされているプロセッサーの数を示します。したがって、上記のファイルP=1およびQ=1から、1 * 1 =1であるため、シングルプロセッサ用です。次に、コマンドを使用して実行します:

cd bin/rpi
./xhpl

出力は次のようになります。

================================================================================
HPLinpack 2.1  --  High-Performance Linpack benchmark  --   October 26, 2012
Written by A. Petitet and R. Clint Whaley,  Innovative Computing Laboratory, UTK
Modified by Piotr Luszczek, Innovative Computing Laboratory, UTK
Modified by Julien Langou, University of Colorado Denver
================================================================================

An explanation of the input/output parameters follows:
T/V    : Wall time / encoded variant.
N      : The order of the coefficient matrix A.
NB     : The partitioning blocking factor.
P      : The number of process rows.
Q      : The number of process columns.
Time   : Time in seconds to solve the linear system.
Gflops : Rate of execution for solving the linear system.

The following parameter values will be used:

N      :   5040 
NB     :     128 
PMAP   : Row-major process mapping
P      :       1 
Q      :       1 
PFACT  :   Right 
NBMIN  :       4 
NDIV   :       2 
RFACT  :   Crout 
BCAST  :  1ringM 
DEPTH  :       1 
SWAP   : Mix (threshold = 64)
L1     : transposed form
U      : transposed form
EQUIL  : yes
ALIGN  : 8 double precision words

--------------------------------------------------------------------------------

- The matrix A is randomly generated for each test.
- The following scaled residual check will be computed:
      ||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )
- The relative machine precision (eps) is taken to be               1.110223e-16
- Computational tests pass if scaled residuals are less than                16.0

また、最終結果に集中する必要があります。端末に出力される最終的な出力は、次のようになります。最後の値は速度を示し、その前の値は提供されたさまざまなパラメーターを示します。以下のコンテンツでは、速度はGflopsで示され、その値は約1.21e-01 Gflopsであり、変換すると121メガフロップス(MFLOPS)になります。

================================================================================
T/V                N    NB     P     Q               Time                 Gflops
--------------------------------------------------------------------------------
WR11C2R4       21400   128     3    11              537.10              1.210e-01
HPL_pdgesv() start time Mon Jun 23 17:29:42 2014

HPL_pdgesv() end time   Mon Jun 23 17:55:19 2014

--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)=        0.0020152 ...... PASSED
================================================================================

Raspberry Piによっては、速度と所要時間が大幅に異なる場合があることに注意してください。したがって、これらの結果をノードまたはクラスターとの比較として使用しないでください。

7複数のノードでHPLを実行する

複数のノードに対してHPLを実行する場合は、HPL.datファイルを変更する必要があります。ここでは、32個のノードがあると仮定します。したがって、P*Qの積は32になります。私はP=4、Q =8、つまり4 * 8=32を選択しました。したがって、この変更とは別に、試行錯誤からNの値を変更する必要があり、N=17400の最大速度が得られました。最終的なファイルの内容を以下に示します。それに応じて、「HPL.dat」ファイルでこれらの変更を行います。

HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out      output file name (if any)
6            device out (6=stdout,7=stderr,file)
1            # of problems sizes (N)
17400         Ns
1            # of NBs
128          NBs
0            PMAP process mapping (0=Row-,1=Column-major)
1            # of process grids (P x Q)
4            Ps
8            Qs
16.0         threshold
1            # of panel fact
2            PFACTs (0=left, 1=Crout, 2=Right)
1            # of recursive stopping criterium
4            NBMINs (>= 1)
1            # of panels in recursion
2            NDIVs
1            # of recursive panel fact.
1            RFACTs (0=left, 1=Crout, 2=Right)
1            # of broadcast
1            BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1            # of lookahead depth
1            DEPTHs (>=0)
2            SWAP (0=bin-exch,1=long,2=mix)
64           swapping threshold
0            L1 in (0=transposed,1=no-transposed) form
0            U  in (0=transposed,1=no-transposed) form
1            Equilibration (0=no,1=yes)
8            memory alignment in double (> 0)

これが完了したら、HPLを再度実行する必要があります。次のコマンドを使用します。以下のコマンドでパスを変更して、システム内のマシンファイルのパスを表すことを忘れないでください。

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

この結果は、1つのノードについて上記のようになりますが、間違いなく高速になります。

この種の変更は、システム内のノードまたはプロセッサの数に応じて行うことができ、ベンチマーク結果を見つけることができます。また、前述したように、HPL.datファイルの値を設定する方法について詳しくは、こちらのドキュメントにアクセスしてお読みください。


Linux
  1. パフォーマンスを向上させるためのディスクIOの削減

  2. 高性能のオープンインフラストラクチャがUbuntuに登場

  3. JumpFm –パフォーマンスに焦点を当てた電子ベースのファイルマネージャー

  1. Linux で ext4 ファイルシステムのパフォーマンスを向上させるためのマウント オプションは何ですか

  2. Raspberry Pi 3 システムで GRUB パスワードを設定できない

  3. プログラムのパフォーマンスを測定するために Linux で高解像度タイマーを作成する方法は?

  1. リダイレクトの順序は?

  2. Linux –高I / Oの原因となる特定のファイルを決定しますか?

  3. ターミナルウィンドウからLinuxでファイルを作成するには?