Perkirakan FLOPS di Linux?

13

Saya mencari program yang cepat dan mudah untuk memperkirakan FLOPS di sistem Linux saya. Saya menemukan HPL , tetapi mengkompilasinya terbukti menjengkelkan. Yang saya butuhkan hanyalah perkiraan kasar dari FLOPS, tanpa perlu menghabiskan waktu sehari untuk meneliti paket benchmark dan menginstal perangkat lunak yang tergantung. Apakah ada program seperti itu? Apakah cukup untuk menulis program C yang mengalikan dua pelampung dalam satu lingkaran?

bantalan molekul
sumber

Jawaban:

5

Pertanyaannya adalah apa yang Anda maksud dengan jepit? Jika yang Anda pedulikan adalah berapa banyak operasi titik apung paling sederhana per jam, itu mungkin 3x kecepatan jam Anda, tapi itu sama tidak berartinya dengan bogomips. Beberapa operasi floating point membutuhkan waktu lama (bagi, sebagai permulaan), tambahkan dan kalikan biasanya cepat (satu per unit fp per jam). Masalah berikutnya adalah kinerja memori, ada alasan mengapa CRAY klasik terakhir memiliki 31 bank memori, akhirnya kinerja CPU dibatasi oleh seberapa cepat Anda dapat membaca dan menulis ke memori, jadi level caching apa yang cocok dengan masalah Anda? Linpack adalah tolok ukur yang nyata sekali, sekarang cocok dalam cache (L2 jika tidak L1) dan lebih merupakan tolok ukur CPU teoritis murni. Dan tentu saja, unit SSE (dll) Anda dapat menambahkan kinerja floating point juga.

Distro apa yang Anda jalankan?

Ini tampak seperti penunjuk yang baik: http://linuxtoolkit.blogspot.com/2009/04/intel-optimized-linpack-benchmark-for.html

http://onemansjourneyintolinux.blogspot.com/2008/12/show-us-yer-flops.html

http://www.phoronix-test-suite.com/ mungkin cara yang lebih mudah untuk menginstal tolok ukur jepit.

Namun saya masih bertanya-tanya mengapa Anda peduli, untuk apa Anda menggunakannya? Jika Anda hanya menginginkan angka yang tidak berarti, bogomips sistem Anda masih ada di dmesg.

Ronald Pottol
sumber
1
Phoronix tampaknya persis seperti yang saya cari - terima kasih! Satu-satunya alasan saya menginginkan ini adalah karena saya mengisi survei yang menanyakan berapa teraflops daya komputasi yang saya miliki. Survei itu tidak terlalu penting, jadi saya tidak khawatir tentang keakuratan jawabannya. Namun, akan agak rapi untuk dapat mengatakan, "Cluster kami dapat melakukan X teraflops." Meskipun seperti yang Anda tunjukkan, angka itu tidak selalu memiliki banyak arti di dunia nyata.
molekuler
7

rupanya ada paket dan perintah "sysbench":

sudo apt-get install sysbench(atau brew install sysbenchOS X)

jalankan seperti ini:

sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run

output untuk perbandingan:

 total time:                          15.3047s

ref: http://www.midwesternmac.com/blogs/jeff-geerling/2013-vps-benchmarks-linode

rogerdpack
sumber
3
Bagaimana ini memberi FLOPS?
Martin Thoma
Sepertinya ini lebih dari "benchmark cpu" generik lihat juga bnikolic.co.uk/blog/hpc-howto-measure-flops.html
rogerdpack
3

Untuk perkiraan rata-rata:

Linpack

  1. Unduh ( tautan )
  2. Ekstrak itu
  3. cd benchmarks_2017/linux/mkl/benchmarks/linpack
  4. ./runme_xeon64
  5. Tunggu beberapa saat (lebih dari 1 jam)

Pada Thinkpad T460p ( Intel i7-6700HQ CPU ), ini memberikan:

This is a SAMPLE run script for SMP LINPACK. Change it to reflect
the correct number of CPUs/threads, problem input files, etc..
./runme_xeon64: 33: [: -gt: unexpected operator
Mi 21. Dez 11:50:29 CET 2016
Intel(R) Optimized LINPACK Benchmark data

Current date/time: Wed Dec 21 11:50:29 2016

CPU frequency:    3.491 GHz
Number of CPUs: 1
Number of cores: 4
Number of threads: 4

Parameters are set to:

Number of tests: 15
Number of equations to solve (problem size) : 1000  2000  5000  10000 15000 18000 20000 22000 25000 26000 27000 30000 35000 40000 45000
Leading dimension of array                  : 1000  2000  5008  10000 15000 18008 20016 22008 25000 26000 27000 30000 35000 40000 45000
Number of trials to run                     : 4     2     2     2     2     2     2     2     2     2     1     1     1     1     1    
Data alignment value (in Kbytes)            : 4     4     4     4     4     4     4     4     4     4     4     1     1     1     1    

Maximum memory requested that can be used=9800701024, at the size=35000

=================== Timing linear equation system solver ===================

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
1000   1000   4      0.014      46.5838  1.165068e-12 3.973181e-02   pass
1000   1000   4      0.010      64.7319  1.165068e-12 3.973181e-02   pass
1000   1000   4      0.009      77.3583  1.165068e-12 3.973181e-02   pass
1000   1000   4      0.010      67.0096  1.165068e-12 3.973181e-02   pass
2000   2000   4      0.064      83.6177  5.001027e-12 4.350281e-02   pass
2000   2000   4      0.063      84.5568  5.001027e-12 4.350281e-02   pass
5000   5008   4      0.709      117.6800 2.474679e-11 3.450740e-02   pass
5000   5008   4      0.699      119.2350 2.474679e-11 3.450740e-02   pass
10000  10000  4      4.895      136.2439 9.069137e-11 3.197870e-02   pass
10000  10000  4      4.904      135.9888 9.069137e-11 3.197870e-02   pass
15000  15000  4      17.260     130.3870 2.052533e-10 3.232773e-02   pass
15000  15000  4      18.159     123.9303 2.052533e-10 3.232773e-02   pass
18000  18008  4      31.091     125.0738 2.611497e-10 2.859910e-02   pass
18000  18008  4      31.869     122.0215 2.611497e-10 2.859910e-02   pass
20000  20016  4      44.877     118.8622 3.442628e-10 3.047480e-02   pass
20000  20016  4      44.646     119.4762 3.442628e-10 3.047480e-02   pass
22000  22008  4      57.918     122.5811 4.714135e-10 3.452918e-02   pass
22000  22008  4      57.171     124.1816 4.714135e-10 3.452918e-02   pass
25000  25000  4      86.259     120.7747 5.797896e-10 3.297056e-02   pass
25000  25000  4      83.721     124.4356 5.797896e-10 3.297056e-02   pass
26000  26000  4      97.420     120.2906 5.615238e-10 2.952660e-02   pass
26000  26000  4      96.061     121.9924 5.615238e-10 2.952660e-02   pass
27000  27000  4      109.479    119.8722 5.956148e-10 2.904520e-02   pass
30000  30000  1      315.697    57.0225  8.015488e-10 3.159714e-02   pass
35000  35000  1      2421.281   11.8061  1.161127e-09 3.370575e-02   pass

Performance Summary (GFlops)

Size   LDA    Align.  Average  Maximal
1000   1000   4       63.9209  77.3583 
2000   2000   4       84.0872  84.5568 
5000   5008   4       118.4575 119.2350
10000  10000  4       136.1164 136.2439
15000  15000  4       127.1586 130.3870
18000  18008  4       123.5477 125.0738
20000  20016  4       119.1692 119.4762
22000  22008  4       123.3813 124.1816
25000  25000  4       122.6052 124.4356
26000  26000  4       121.1415 121.9924
27000  27000  4       119.8722 119.8722
30000  30000  1       57.0225  57.0225 
35000  35000  1       11.8061  11.8061 

Residual checks PASSED

End of tests

Done: Mi 21. Dez 12:58:23 CET 2016
Martin Thoma
sumber
1

Salah satu tolok ukur yang secara tradisional digunakan untuk mengukur FLOPS adalah Linpack. Patokan FLOPS umum lainnya adalah Whetstone.

Lebih banyak bacaan: entri "FLOPS" Wikipedia , entri Whetstone , entri Linpack

kolypto
sumber
2
Saya menghargai jawaban Anda, namun tujuan saya adalah untuk mendapatkan perkiraan cepat tentang kotor dari jepit. Whetstone dan Linpack memiliki masalah yang sama dengan HPL - Saya mulai membacanya, lalu tersesat di situs demi situs yang semuanya terlihat berusia 20 tahun. Ketika saya berhasil menemukan kode sumber, sepertinya saya tidak dapat mengkompilasinya tanpa menginstal banyak pustaka dependen - bahkan kemudian saya mengalami kesalahan. Saya bisa membuat semua ini berfungsi, tetapi tidak cukup penting untuk menghabiskan waktu. Mudah-mudahan ada beberapa perangkat lunak yang relatif modern yang hanya berfungsi untuk jatuhnya ballparking.
Bole molekul
1
Memperkirakan? Maka itu sekitar 4 * Hz: untuk 1GHz CPU ini tentang 4GFLOPS :))
kolypto
1

Seperti yang Anda sebutkan cluster, kami telah menggunakan suite HPCC . Dibutuhkan sedikit usaha untuk mengatur dan menyetel, tetapi dalam kasus kami intinya tidak membual per se, itu adalah bagian dari kriteria penerimaan untuk cluster; beberapa pembandingan kinerja adalah IMHO penting untuk memastikan bahwa perangkat keras berfungsi seperti yang diiklankan, semuanya terhubung dengan kabel dengan benar dll.

Sekarang jika Anda hanya menginginkan nomor FLOPS puncak teoretis, yang itu mudah. Cukup periksa beberapa artikel tentang CPU (katakanlah, di realworldtech.com atau semacamnya) untuk mendapatkan info tentang berapa banyak DP FLOPS yang dapat dilakukan oleh core CPU per clock cycle (dengan CPU x86 saat ini yang biasanya 4). Maka total puncak FLOPS adalah adil

jumlah core * FLOPS / cycle * frekuensi

Kemudian untuk sebuah cluster dengan jaringan IB Anda harus dapat mencapai sekitar 80% dari FLOPS puncak pada HPL (yang BTW adalah salah satu tolok ukur dalam HPCC).

janneb
sumber