HPL (Linpack hiệu suất cao): Đánh giá chuẩn Raspberry PI

theanh

Administrator
Nhân viên
Đánh giá chuẩn là quá trình chạy một số chương trình chuẩn để đánh giá tốc độ đạt được của hệ thống. Có một số chương trình đánh giá chuẩn và trong hướng dẫn này, chúng tôi đánh giá chuẩn hệ thống Linux bằng một chương trình nổi tiếng có tên là HPL, còn được gọi là High Performance Linpack.

Giới thiệu​

Trong hướng dẫn này, chúng tôi sẽ trình bày cách đánh giá chuẩn một hệ thống bộ xử lý đơn, Raspberry Pi. Đầu tiên, chúng tôi sẽ đánh giá chuẩn một nút đơn, sau đó tiếp tục đánh giá chuẩn nhiều nút, mỗi nút đại diện cho một Raspberry Pi. Có một số điều cần lưu ý ở đây. Trước tiên, đánh giá chuẩn một nút đơn hoặc nhiều nút có một số phụ thuộc cần được đáp ứng và sẽ được đề cập trong hướng dẫn này. NHƯNG, trên nhiều nút thậm chí còn có nhiều phụ thuộc hơn nữa như triển khai MPI (như MPICH hoặc OpenMPI) phải được xây dựng và chạy để HPL hoạt động. Vì vậy, để đánh giá chuẩn nhiều nút, tôi cho rằng các nút của bạn đã cài đặt và đang chạy MPICH.

HPL là gì?​

HPL là một gói phần mềm giải quyết một hệ thống tuyến tính dày đặc (ngẫu nhiên) theo phép tính số học độ chính xác kép (64 bit) trên máy tính có bộ nhớ phân tán. Gói HPL cung cấp một chương trình kiểm tra và tính thời gian để định lượng độ chính xác của giải pháp thu được cũng như thời gian tính toán giải pháp đó. Hiệu suất tốt nhất có thể đạt được bằng phần mềm này trên hệ thống của bạn phụ thuộc vào nhiều yếu tố khác nhau. Việc triển khai này có thể mở rộng theo nghĩa là hiệu quả song song của chúng được duy trì không đổi đối với mức sử dụng bộ nhớ của mỗi bộ xử lý. Vì vậy, chúng ta có thể sử dụng điều này để đánh giá chuẩn một bộ xử lý đơn hoặc một loạt các bộ xử lý phân tán song song. Vì vậy, hãy bắt đầu cài đặt HPL.

1 Cài đặt các phụ thuộc​

HPL có một số phụ thuộc phần mềm phải được đáp ứng trước khi có thể cài đặt. Chúng là:
  • gfortran - trình biên dịch chương trình fortran
  • MPICH2 - một triển khai của MPI
  • mpich2-dev - công cụ phát triển
  • BLAS - Chương trình con đại số tuyến tính cơ bản
Ở đây, chúng tôi giả sử rằng bạn đã cài đặt MPICH2. Để cài đặt các gói và phụ thuộc khác, hãy sử dụng lệnh sau:
Mã:
sudo apt-get install libatlas-base-dev libmpich2-dev gfortran
Chỉ cần lặp lại bước này trong mỗi nút (Pis) có trong cụm.

2 Tải xuống HPL và thiết lập​

Tải xuống gói HPL từ tại đây. Việc tiếp theo cần làm là giải nén tệp tar và tạo tệp makefile dựa trên mẫu đã cho. Mở terminal và thay đổi thư mục lưu trữ tệp tar HPL đã tải xuống. Thực hiện tập lệnh sau đây lần lượt.
Mã:
tar xf hpl-2.1.tar.gz
 cd hpl-2.1/setup
 sh make_generic
 cd ..
 cp setup/Make.UNKNOWN Make.rpi
Lệnh cuối cùng sao chép nội dung của Make.UNKNOWN sang Make.rpi. Chúng tôi làm như vậy là vì tệp make chứa tất cả các chi tiết cấu hình của hệ thống (Raspberry pi) và cả các chi tiết của nhiều thư viện khác nhau như mpich2, gói atlas/blas, thư mục home, v.v. Ở bước tiếp theo, chúng tôi thực hiện các thay đổi đối với tệp Make.rpi.

3 Điều chỉnh tệp Make.rpi​

Đây là một bước quan trọng. Các thay đổi được hiển thị bên dưới sẽ khác nhau tùy theo hệ thống của bạn. Ở đây tôi hiển thị theo hệ thống của mình. Xin lưu ý rằng các thay đổi sau đây có các tham số được hiển thị nằm rải rác trong tệp Make.rpi. Vì vậy, tôi khuyên bạn nên tìm từng tham số và thay thế hoặc thêm các thay đổi, sau đó mới tiếp tục đến tham số tiếp theo.

Mở tệp Make.rpi bằng trình soạn thảo văn bản bằng lệnh:
Mã:
nano Make.rpi
Thực hiện các thay đổi sau vào tệp.
Mã:
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 Biên dịch HPL​

Sau khi tệp Make đã sẵn sàng, chúng ta có thể bắt đầu biên dịch HPL. Tệp ".xhpl" sẽ có trong thư mục "bin/rpi" trong thư mục HPL. Chạy lệnh sau:
Mã:
makeh arch=rpi

5 Tạo tệp đầu vào HPL​

Sau đây là ví dụ về tệp "HPL.dat". Đây là tệp đầu vào cho HPL khi chạy. Các giá trị được cung cấp trong tệp này được sử dụng để tạo và tính toán vấn đề. Bạn có thể sử dụng tệp này trực tiếp để chạy thử nghiệm cho một nút duy nhất. Tạo một tệp trong thư mục "bin/rpi" và đặt tên là "HPL.dat". sao chép nội dung bên dưới vào tệp đó.
Mã:
Tệp đầu vào chuẩn HPLinpackPhòng thí nghiệm máy tính sáng tạo, Đại học TennesseeTên tệp đầu ra HPL.out (nếu có)6 thiết bị đầu ra (6=stdout,7=stderr,file)1 # kích thước vấn đề (N)5040 Ns1 # NB128 NB0 ánh xạ quy trình PMAP (0=Row-,1=Column-major)1 # lưới quy trình (P x Q)1 Ps1 Qs16.0 ngưỡng1 # sự kiện bảng2 PFACT (0=trái, 1=Crout, 2=Phải)1 # tiêu chí dừng đệ quy4 NBMIN (>= 1)1 # bảng trong đệ quy2 NDIV1 # sự kiện bảng đệ quy.1 RFACT (0=trái, 1=Crout, 2=Phải)1 # phát sóng1 BCAST (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)1 # độ sâu lookahead1 DEPTH (>=0)2 SWAP (0=bin-exch,1=long,2=mix)64 ngưỡng hoán đổi0 L1 ở dạng (0=chuyển vị,1=không chuyển vị)0 U ở dạng (0=chuyển vị,1=không chuyển vị)1 Cân bằng (0=không,1=có)8 căn chỉnh bộ nhớ trong double (> 0)
Nội dung của tệp này phải được thay đổi bằng phương pháp thử và sai, cho đến khi nhận được đầu ra thỏa đáng. Để biết về từng tham số và cách thay đổi chúng, hãy tham khảo một bài báo tại đây. Để chuyển đến điểm chính, hãy bắt đầu đọc từ Trang số 6 trong tài liệu đó.

6 Chạy HPL trên một nút​

Khi tệp HPL.dat đã sẵn sàng, chúng ta có thể chạy HPL. Tệp HPL.dat ở trên dành cho một nút hoặc bộ xử lý duy nhất. Tích của các giá trị P*Q trong tệp ở trên cho số bộ xử lý mà HPL đang được thử nghiệm. Do đó, từ tệp ở trên P=1 và Q=1 , 1*1=1, do đó, nó dành cho một bộ xử lý duy nhất. Bây giờ để chạy nó, hãy sử dụng các lệnh:
Mã:
cd bin/rpi
./xhpl
Kết quả trông tương tự như những gì được hiển thị bên dưới:
Mã:
======================================================================================HPLinpack 2.1 -- Điểm chuẩn Linpack hiệu suất cao -- Ngày 26 tháng 10 năm 2012Do A. Petitet và R. Clint Whaley, Phòng thí nghiệm máy tính sáng tạo, UTK biên soạnĐược Piotr Luszczek, Phòng thí nghiệm máy tính sáng tạo, UTK biên soạnĐược Julien Langou, Đại học Colorado biên soạn Denver==============================================================================Giải thích về các tham số đầu vào/đầu ra như sau:T/V : Thời gian tường / biến thể được mã hóa.N : Thứ tự của ma trận hệ số A.NB : Hệ số chặn phân vùng.P : Số hàng quy trình.Q : Số cột quy trình.Time : Thời gian tính bằng giây để giải hệ thống tuyến tính.Gflops : Tốc độ thực hiện để giải hệ thống tuyến tính.Các giá trị tham số sau sẽ được sử dụng:N: 5040NB: 128PMAP: Ánh xạ quy trình chính theo hàngP: 1Q: 1PFACT: PhảiNBMIN: 4NDIV: 2RFACT: CroutBCAST: 1ringMDEPTH: 1SWAP: Trộn (ngưỡng = 64)L1: dạng chuyển vịU: dạng chuyển vịEQUIL: cóALIGN: 8 từ có độ chính xác kép--------------------------------------------------------------------------------- Ma trận A được tạo ngẫu nhiên cho mỗi thử nghiệm.- Kiểm tra dư lượng được chia tỷ lệ sau đây sẽ được tính toán: ||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )- Độ chính xác tương đối của máy (eps) được coi là 1,110223e-16- Các bài kiểm tra tính toán sẽ đạt nếu dư lượng được chia tỷ lệ nhỏ hơn 16,0
Ngoài ra, chúng ta phải tập trung vào kết quả cuối cùng. Đầu ra cuối cùng xuất hiện trên thiết bị đầu cuối sẽ trông tương tự như hiển thị bên dưới. Giá trị cuối cùng cho biết tốc độ và các giá trị trước đó hiển thị các tham số khác nhau được cung cấp. Trong nội dung bên dưới, tốc độ được hiển thị bằng Gflops và giá trị của nó vào khoảng 1,21e-01 Gflops, khi chuyển đổi sẽ cho kết quả là 121 Mega FLOPS (MFLOPS).
Mã:
===================================================================================T/V N NB P Q Thời gian Gflops--------------------------------------------------------------------------------WR11C2R4 21400 128 3 11 537.10 1.210e-01HPL_pdgesv() thời gian bắt đầu Thứ Hai, ngày 23 tháng 6 năm 2014 lúc 17:29:42HPL_pdgesv() thời gian kết thúc Thứ Hai, ngày 23 tháng 6 17:55:19 2014--------------------------------------------------------------------------------||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)= 0.0020152 ...... ĐÃ ĐẠT===========================================================================================
Xin lưu ý rằng tùy thuộc vào Raspberry Pi của bạn mà tốc độ và thời gian thực hiện có thể khác nhau đáng kể. Vì vậy, vui lòng không sử dụng những kết quả này để so sánh với nút hoặc cụm của bạn.

7 Chạy HPL trên nhiều nút​

Khi chúng ta muốn chạy HPL cho nhiều nút, chúng ta sẽ phải thay đổi tệp HPL.dat. Ở đây, hãy giả sử rằng chúng ta có 32 nút. Vì vậy, tích của P*Q phải bằng 32. Tôi đã chọn P=4, Q=8 do đó 4*8=32. Vì vậy, ngoài thay đổi này, chúng ta sẽ phải thay đổi giá trị của N, từ thử nghiệm và sai sót, chúng ta đã có tốc độ tối đa cho N=17400. Nội dung tệp cuối cùng được hiển thị bên dưới. hãy thực hiện những thay đổi đó cho phù hợp trong tệp "HPL.dat" của bạn.
Mã:
Tệp đầu vào chuẩn HPLinpackPhòng thí nghiệm máy tính sáng tạo, Đại học TennesseeTên tệp đầu ra HPL.out (nếu có)6 thiết bị đầu ra (6=stdout,7=stderr,file)1 # kích thước vấn đề (N)17400 Ns1 # NB128 NB0 ánh xạ quy trình PMAP (0=Row-,1=Column-major)1 # lưới quy trình (P x Q)4 Ps8 Qs16.0 ngưỡng1 # sự kiện bảng điều khiển2 PFACT (0=trái, 1=Crout, 2=Phải)1 # tiêu chí dừng đệ quy4 NBMIN (>= 1)1 # bảng điều khiển trong đệ quy2 NDIV1 # sự kiện bảng điều khiển đệ quy.1 RFACT (0=trái, 1=Crout, 2=Phải)1 # phát sóng1 BCAST (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)1 # độ sâu lookahead1 DEPTH (>=0)2 SWAP (0=bin-exch,1=long,2=mix)64 ngưỡng hoán đổi0 L1 ở dạng (0=chuyển vị,1=không chuyển vị)0 U ở dạng (0=chuyển vị,1=không chuyển vị)1 Cân bằng (0=không,1=có)8 căn chỉnh bộ nhớ theo kiểu double (> 0)
Sau khi hoàn tất, chúng ta sẽ phải chạy lại HPL. Sử dụng lệnh sau. Hãy nhớ thay đổi đường dẫn trong lệnh bên dưới để biểu diễn đường dẫn của tệp máy trong hệ thống của bạn.
Mã:
cd bin/rpi
mpiexec -f ~/mpi_testing/machinefile -n 32 ./xhpl
Kết quả của lệnh này sẽ tương tự như kết quả hiển thị ở trên đối với một nút, nhưng chắc chắn sẽ có tốc độ cao hơn.

Có thể thực hiện loại thay đổi này tùy thuộc vào số lượng nút hoặc bộ xử lý trong hệ thống và có thể tìm thấy kết quả chuẩn. Và như tôi đã đề cập trước đó, để biết thêm về cách đặt giá trị trong tệp HPL.dat, hãy truy cập tài liệu tại đây và đọc thử.
 
Back
Bên trên