웹사이트 검색

HPL(고성능 Linpack): Raspberry PI 벤치마킹


이 페이지에서

  1. 소개
  2. HPL이란 무엇입니까?
  3. 1 종속성 설치
  4. 2 HPL 다운로드 및 설정
  5. 3 Make.rpi 파일 조정
  6. 4 HPL 컴파일
  7. 5 HPL 입력 파일 생성
  8. 6 단일 노드에서 HPL 실행\n
  9. 7 여러 노드에서 HPL 실행\n

벤치마킹은 시스템이 달성한 속도를 평가하기 위해 일부 표준 프로그램을 실행하는 프로세스입니다. 많은 표준 벤치마킹 프로그램이 있으며 이 자습서에서는 HPL(High Performance Linpack이라고도 함)이라는 잘 알려진 프로그램을 사용하여 Linux 시스템을 벤치마킹합니다.

소개

이 튜토리얼에서는 단일 프로세서 시스템인 Raspberry Pi를 벤치마킹하는 방법을 다룹니다. 먼저 단일 노드를 벤치마킹한 다음 각 노드가 Raspberry Pi를 나타내는 여러 노드를 계속 벤치마킹합니다. 여기서 주의해야 할 몇 가지 사항이 있습니다. 첫째, 단일 노드 또는 다중 노드를 벤치마킹하는 것은 이 튜토리얼에서 다룰 몇 가지 종속성이 있습니다. 그러나 여러 노드에는 HPL이 작동하려면 MPI 구현(예: MPICH 또는 OpenMPI)을 빌드하고 실행해야 하는 것과 같은 훨씬 더 많은 종속성이 있습니다. 따라서 여러 노드를 벤치마킹하기 위해 노드에 MPICH가 설치되어 실행 중이라고 가정합니다.

HPL이란 무엇입니까?

HPL은 분산 메모리 컴퓨터에서 배정밀도(64비트) 산술로 (무작위) 고밀도 선형 시스템을 푸는 소프트웨어 패키지입니다. HPL 패키지는 얻은 솔루션의 정확도와 이를 계산하는 데 걸린 시간을 정량화하는 테스트 및 타이밍 프로그램을 제공합니다. 시스템에서 이 소프트웨어가 달성할 수 있는 최상의 성능은 다양한 요인에 따라 달라집니다. 이 구현은 병렬 효율성이 프로세서당 메모리 사용량과 관련하여 일정하게 유지된다는 점에서 확장 가능합니다. 따라서 이를 사용하여 단일 프로세서 또는 일련의 분산 프로세서를 병렬로 벤치마킹할 수 있습니다. 이제 HPL 설치를 시작하겠습니다.

1 종속성 설치

HPL에는 설치하기 전에 충족해야 하는 몇 가지 소프트웨어 종속성이 있습니다. 그들은:

  • gfortran - 포트란 프로그램 컴파일러\n
  • MPICH2 - MPI 구현\n
  • mpich2-dev - 개발 도구
  • BLAS - 기본 선형 대수 하위 프로그램\n

여기서는 MPICH2가 설치되어 있다고 가정합니다. 다른 종속성 및 패키지를 설치하려면 다음 명령을 사용하십시오.

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

이 단계만 클러스터에 있는 각 노드(Pis)에서 반복하면 됩니다.

2 HPL 다운로드 및 설정

여기에서 HPL 패키지를 다운로드하십시오. 다음으로 할 일은 tar 파일을 추출하고 주어진 템플릿을 기반으로 makefile을 만드는 것입니다. 터미널을 열고 다운로드한 HPL tar 파일이 저장된 디렉토리로 변경합니다. 다음 명령 세트를 차례로 실행합니다.

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 파일에.

3 Make.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

4 HPL 컴파일

Make 파일이 준비되면 HPL 컴파일을 시작할 수 있습니다. \.xhpl\ 파일은 HPL 폴더 내의 \bin/rpi\ 폴더에 있습니다. 다음 명령을 실행합니다.

makeh arch=rpi

5 HPL 입력 파일 생성

다음은 \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 Mega FLOPS(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

이것의 결과는 하나의 노드에 대해 위에 표시된 것과 유사하지만 확실히 더 빠른 속도를 가질 것입니다.

이러한 종류의 변경은 시스템의 노드 또는 프로세서 수에 따라 수행될 수 있으며 벤치마크 결과를 확인할 수 있습니다. 그리고 앞에서 언급했듯이 HPL.dat 파일에서 값을 설정하는 방법에 대해 자세히 알아보려면 여기 문서로 이동하여 읽어보십시오.