Я ищу быструю и простую программу для оценки FLOPS в моей системе Linux. я нашел HPL, но его скомпилирование вызывает раздражение. Все, что мне нужно, - это приблизительная оценка FLOPS без необходимости тратить день на исследование пакетов тестов и установку зависимого программного обеспечения. Есть ли такая программа? Достаточно ли написать программу на C, которая умножает два числа с плавающей запятой в цикле?
очевидно, есть тестовый пакет и команда "sysbench":
sudo apt-get install sysbench
(или brew install sysbench
OS X)
запустите его так:
sysbench --test=cpu --cpu-max-prime=20000 --num-threads=2 run
вывод для сравнения:
total time: 15.3047s
ссылка: http://www.midwesternmac.com/blogs/jeff-geerling/2013-vps-benchmarks-linode
Вопрос в том, что вы подразумеваете под флопом? Если все, что вас волнует, это количество простейших операций с плавающей запятой за такт, это, вероятно, в 3 раза больше вашей тактовой частоты, но это примерно так же бессмысленно, как bogomips. Некоторые операции с плавающей запятой занимают много времени (для начала, деление), сложение и умножение обычно выполняются быстро (по одному на единицу fp за такт). Следующая проблема - это производительность памяти. Причина в том, что последний классический CRAY имел 31 банк памяти. В конечном итоге производительность процессора ограничена тем, насколько быстро вы можете читать и записывать в память, поэтому какой уровень кеширования подходит для вашей проблемы? Когда-то Linpack был настоящим тестом, теперь он умещается в кеш-памяти (L2, если не L1) и представляет собой скорее чисто теоретический тест процессора. И, конечно же, ваши SSE (и т. Д.) Блоки также могут повысить производительность с плавающей запятой.
Какой дистрибутив у вас установлен?
Это выглядело как хороший указатель: 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/ может быть более простым способом установить тест провалов.
Тем не менее, мне интересно, почему вас это волнует, для чего вы его используете? Если вам просто нужно бессмысленное число, ваша система bogomips все еще находится прямо в dmesg.
Для приблизительных оценок:
Raspberry Pi 2: 299.93 * 10 ^ 6 FLOPS (источник)
Raspberry Pi 3: 462,07 * 10 ^ 6 FLOPS (источник)
cd benchmarks_2017/linux/mkl/benchmarks/linpack
./runme_xeon64
На Thinkpad T460p (Процессор Intel i7-6700HQ), это дает:
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
Одним из тестов, который традиционно использовался для измерения FLOPS, является Linpack. Другой распространенный тест FLOPS - это Whetstone.
Больше чтения: Запись в Википедии "FLOPS", Запись точильного камня, Вход в Linpack
Я очень рекомендую готовую сборку linpack от Intel: http://software.intel.com/en-us/articles/intel-math-kernel-library-linpack-download/
Когда вы упомянули кластер, мы использовали пакет HPCC. Требуется немного усилий для настройки и настройки, но в нашем случае дело не в хвастовстве как таковом, это было частью критериев приемлемости для кластера; ИМХО жизненно важен некоторый тест производительности, чтобы гарантировать, что оборудование работает так, как рекламируется, все правильно подключено и т. д.
Теперь, если вам просто нужно теоретическое пиковое число FLOPS, это легко. Просто прочтите статью о ЦП (скажем, на сайте realworldtech.com или что-то в этом роде), чтобы получить информацию о том, сколько DP FLOPS может выполнять ядро ЦП за такт (с текущими ЦП x86, как правило, 4). Тогда общее пиковое значение FLOPS равно
количество ядер * FLOPS / цикл * частота
Тогда для кластера с сетью IB вы должны быть в состоянии достичь около 80% пикового значения FLOPS на HPL (что, кстати, является одним из тестов в HPCC).