GNU/Linux >> Belajar Linux >  >> Linux

HPL (Linpack Kinerja Tinggi):Pembandingan Raspberry PI

Benchmarking adalah proses menjalankan beberapa program standar untuk mengevaluasi kecepatan yang dicapai oleh suatu sistem. Ada sejumlah program benchmarking standar dan dalam tutorial ini kami membandingkan sistem Linux menggunakan program terkenal yang disebut HPL, juga dikenal sebagai Linpack Kinerja Tinggi.

Pengantar

Dalam tutorial ini kami membahas cara melakukan benchmarking sistem prosesor tunggal, Raspberry Pi. Pertama kita akan membandingkan satu node, dan kemudian melanjutkan untuk membandingkan beberapa node, setiap node mewakili Raspberry Pi. Ada beberapa hal yang perlu diperhatikan di sini. Pertama, membandingkan satu node atau beberapa node memiliki beberapa dependensi yang harus dipenuhi yang akan dibahas dalam tutorial ini. NAMUN, pada beberapa node ada lebih banyak dependensi seperti implementasi MPI (seperti MPICH atau OpenMPI) harus dibangun dan dijalankan agar HPL berfungsi. Jadi untuk membandingkan beberapa node, saya berasumsi bahwa node Anda telah menginstal dan menjalankan MPICH.

Apa itu HPL?

HPL adalah paket perangkat lunak yang memecahkan sistem linier padat (acak) dalam aritmatika presisi ganda (64 bit) pada komputer dengan memori terdistribusi. Paket HPL menyediakan program pengujian dan pengaturan waktu untuk mengukur keakuratan solusi yang diperoleh serta waktu yang diperlukan untuk menghitungnya. Performa terbaik yang dapat dicapai oleh perangkat lunak ini pada sistem Anda bergantung pada berbagai macam faktor. Implementasi ini dapat diskalakan dalam arti bahwa efisiensi paralelnya dipertahankan konstan sehubungan dengan penggunaan memori per prosesor. Dengan demikian kita dapat menggunakan ini untuk membandingkan prosesor tunggal atau serangkaian prosesor yang didistribusikan secara paralel. Jadi mari kita mulai menginstal HPL.

1 Menginstal dependensi

HPL memiliki beberapa dependensi perangkat lunak yang harus dipenuhi sebelum dapat diinstal. Mereka adalah:

  • gfortran - penyusun program fortran
  • MPICH2 - implementasi MPI
  • mpich2-dev - alat pengembangan
  • BLAS - Subprogram Aljabar Linier Dasar

Di sini kami berasumsi bahwa Anda telah menginstal MPICH2. Untuk menginstal dependensi dan paket lain, gunakan perintah berikut:

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

Hanya langkah ini yang harus diulang di setiap node (Pis) yang ada di cluster.

2 Unduh HPL dan siapkan

Unduh paket HPL dari sini. Hal selanjutnya yang harus dilakukan adalah mengekstrak file tar dan membuat makefile berdasarkan template yang diberikan. Buka terminal dan ubah direktori tempat file tar HPL yang diunduh disimpan. Jalankan rangkaian perintah berikut satu demi satu.

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

Perintah terakhir menyalin konten Make.UNKNOWN ke Make.rpi . Kami melakukan ini karena, file make berisi semua detail konfigurasi sistem ( Raspberry pi) dan juga detail berbagai perpustakaan seperti mpich2, paket atlas/blas, direktori home, dll. Pada langkah berikutnya, kami membuat perubahan ke file Make.rpi.

3 Sesuaikan file Make.rpi

Ini adalah langkah penting. Perubahan yang ditunjukkan di bawah ini bervariasi sesuai dengan sistem Anda. Di sini saya menunjukkannya sehubungan dengan sistem saya. Harap dicatat bahwa perubahan berikut memiliki parameter yang ditampilkan yang tersebar di seluruh file Make.rpi. Jadi saya sarankan Anda untuk menemukan setiap parameter dan mengganti atau menambahkan perubahan dan baru kemudian melanjutkan ke parameter berikutnya.

Buka file Make.rpi menggunakan editor teks menggunakan perintah:

nano Make.rpi

Buat perubahan berikut pada file.

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 Mengkompilasi HPL

Setelah file Make siap, kita bisa mulai dengan kompilasi HPL. File ".xhpl" akan ada di folder "bin/rpi" di dalam folder HPL. Jalankan perintah berikut:

makeh arch=rpi

5 Membuat file input HPL

Berikut ini adalah contoh file "HPL.dat". Ini adalah file input untuk HPL saat dijalankan. Nilai yang diberikan dalam file ini digunakan untuk menghasilkan dan menghitung masalah. Anda dapat menggunakan file ini secara langsung untuk menjalankan pengujian untuk satu node. Buat file di dalam folder "bin/rpi" dan beri nama "HPL.dat". salin konten di bawah ini ke dalam file itu.

file input benchmark HPLinpackInnovative Computing Laboratory, University of TennesseeNama file output HPL.out (jika ada)6 device out (6=stdout,7=stderr,file)1 # ukuran masalah (N)5040 Ns1 # NBs128 NBs0 Pemetaan proses PMAP (0=Baris-,1=Column-major)1 # grid proses (P x Q)1 Ps1 Qs16.0 threshold1 # fakta panel2 PFACTs (0=kiri, 1=Crout, 2=Kanan)1 # kriteria penghentian rekursif4 NBMIN (>=1)1 # panel dalam rekursi2 NDIV1 # fakta panel rekursif.1 RFACT (0=kiri, 1=Crout, 2=Kanan)1 # siaran1 BCAST (0=1rg,1 =1rM,2=2rg,3=2rM,4=Lng,5=LnM)1 # kedalaman lookahead1 DEPTHs (>=0)2 SWAP (0=bin-exch,1=long,2=mix)64 swapping threshold0 L1 in (0=transposed,1=no-transposed) form0 U in (0=transpose d,1=no-transposed) form1 Equilibration (0=no,1=yes)8 perataan memori ganda (> 0)

Isi file ini harus divariasikan dengan metode trial and error, sampai mendapatkan output yang memuaskan. Untuk mengetahui tentang masing-masing parameter dan cara mengubahnya, lihat makalah di sini. Untuk melompat ke poin utama, mulailah membaca dari Halaman no. 6 dalam dokumen itu.

6 Menjalankan HPL pada satu node

Setelah file HPL.dat siap, kita dapat menjalankan HPL. File HPL.dat di atas adalah untuk satu node atau prosesor. Produk dari nilai P*Q dalam file di atas memberikan jumlah prosesor yang diuji untuk HPL. Jadi dari file di atas P=1 dan Q=1 , 1*1=1, jadi untuk prosesor tunggal. Sekarang untuk menjalankannya gunakan perintah:

cd bin/rpi
./xhpl

Outputnya terlihat seperti yang ditunjukkan di bawah ini:

===============================================================================HPLinpack 2.1 -- Benchmark Linpack Berkinerja Tinggi -- 26 Oktober 2012Ditulis oleh A Petitet dan R. Clint Whaley, Laboratorium Komputasi Inovatif, UTKDimodifikasi oleh Piotr Luszczek, Laboratorium Komputasi Inovatif, UTDimodifikasi oleh Julien Langou, Universitas Colorado Denver================================================================================Penjelasan parameter input/output berikut:T/V :Wall time / varian yang dikodekan.N :Urutan matriks koefisien A.NB :Faktor pemblokiran partisi.P :jumlah baris proses.Q :Jumlah kolom proses.Waktu :Waktu dalam detik untuk menyelesaikan sistem linier.Gflops :Laju eksekusi untuk penyelesaian sistem linier.Nilai parameter berikut akan digunakan:N :5040 NB :128 PMAP :Pemetaan proses utama barisP :1 Q :1 PFACT :Kanan NBMIN :4 NDIV :2 RFACT :Crout BCAST :1 ringM DEPTH :1 SWAP :Mix (threshold =64)L1 :transposed formU :transposed formEQUIL :yesALIGN :8 double precision words------------------- -------------------------------------------------- ------------ Matriks A dibuat secara acak untuk setiap pengujian.- Pemeriksaan residual berskala berikut akan dihitung:||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )- Presisi mesin relatif (eps) dianggap 1.110223e-16- Tes komputasi lulus jika residu berskala kurang dari 16.0

Juga, kami harus berkonsentrasi pada hasil akhir. Output akhir yang datang pada terminal akan terlihat seperti gambar di bawah ini. Nilai terakhir memberikan kecepatan dan nilai sebelumnya menunjukkan parameter berbeda yang diberikan. Pada konten di bawah ini, kecepatan ditampilkan dalam Gflops dan nilainya sekitar 1,21e-01 Gflops, yang bila dikonversi memberikan 121 Mega FLOPS (MFLOPS).

===============================================================================T/V N NB P Q Waktu Gflops---------- -------------------------------------------------- --------------------WR11C2R4 21400 128 3 11 537.10 1.210e-01HPL_pdgesv() waktu mulai Sen 23 Jun 17:29:42 2014HPL_pdgesv() waktu berakhir Sen 23 Jun 17:55:19 2014 ------------------------------------------------------------------ ------------------------------------||Ax-b||_oo/(eps*(| |A||_oo*||x||_oo+||b||_oo)*N)=0.0020152 ...... LULUS===============================================================================

Harap dicatat bahwa tergantung pada Raspberry Pi Anda, kecepatan dan waktu yang dibutuhkan mungkin berbeda secara signifikan. Jadi tolong jangan gunakan hasil ini sebagai perbandingan dengan node atau cluster Anda.

7 Menjalankan HPL di banyak node

Ketika kita ingin menjalankan HPL untuk beberapa node, kita harus mengubah file HPL.dat. Di sini mari kita asumsikan bahwa kita memiliki 32 node. Jadi produk dari P*Q seharusnya 32. Saya memilih P=4 , Q=8 jadi 4*8=32. Jadi selain perubahan ini, kita harus mengubah nilai N, dari trial and error, kita mendapatkan kecepatan maksimum untuk N=17400. Isi file akhir ditunjukkan di bawah ini. buat perubahan yang sesuai di file "HPL.dat" Anda.

file input benchmark HPLinpackInnovative Computing Laboratory, University of TennesseeNama file output HPL.out (jika ada)6 device out (6=stdout,7=stderr,file)1 # ukuran masalah (N)17400 Ns1 # NBs128 NBs0 Pemetaan proses PMAP (0=Baris-,1=Column-major)1 # kisi proses (P x Q)4 Ps8 Qs16.0 threshold1 # fakta panel2 PFACTs (0=kiri, 1=Crout, 2=Kanan)1 # kriteria penghentian rekursif4 NBMIN (>=1)1 # panel dalam rekursi2 NDIV1 # fakta panel rekursif.1 RFACT (0=kiri, 1=Crout, 2=Kanan)1 # siaran1 BCAST (0=1rg,1 =1rM,2=2rg,3=2rM,4=Lng,5=LnM)1 # kedalaman lookahead1 DEPTHs (>=0)2 SWAP (0=bin-exch,1=long,2=mix)64 swapping threshold0 L1 in (0=transposed,1=no-transposed) form0 U in (0=transpos ed,1=no-transposed) form1 Equilibration (0=no,1=yes)8 perataan memori ganda (> 0)

Setelah ini selesai, kita harus menjalankan HPL lagi. Gunakan perintah berikut. Ingatlah untuk mengubah jalur pada perintah di bawah ini untuk mewakili jalur file mesin di sistem Anda.

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

Hasil dari ini akan mirip dengan yang ditunjukkan di atas untuk satu node, tetapi pasti akan memiliki kecepatan yang lebih tinggi.

Perubahan semacam ini dapat dilakukan tergantung pada jumlah node atau prosesor dalam sistem dan hasil benchmark dapat diketahui. Dan seperti yang saya sebutkan sebelumnya, untuk mengetahui lebih lanjut tentang cara menyetel nilai dalam file HPL.dat, buka dokumen di sini dan bacalah.


Linux
  1. Cara Menyetel Sistem File Btrfs untuk Performa Lebih Baik

  2. Tidak dapat mengatur kata sandi GRUB pada sistem Raspberry Pi 3

  3. Bagaimana cara membuat pengatur waktu resolusi tinggi di Linux untuk mengukur kinerja program?

  1. Bagaimana cara membuat file di Linux dari jendela terminal?

  2. cp -L vs cp -H

  3. Apa implikasi kinerja untuk jutaan file dalam sistem file modern?

  1. Infrastruktur terbuka berkinerja tinggi hadir di Ubuntu

  2. Urutan Pengalihan?

  3. Linux – Menentukan File Tertentu yang Bertanggung Jawab Untuk I/o Tinggi?