Оцените FLOPS в Linux?

13

Я ищу быструю и простую программу для оценки FLOPS в моей системе Linux. Я нашел HPL , но сборка оказывается раздражающей. Все, что мне нужно, это приблизительная оценка FLOPS, без необходимости тратить день на изучение пакетов тестов и установку зависимого программного обеспечения. Существует ли такая программа? Было бы достаточно написать программу на C, которая умножает два числа в цикле?

molecularbear
источник

Ответы:

5

Вопрос в том, что вы подразумеваете под флопами? Если все, что вас волнует, это сколько простейших операций с плавающей запятой за такт, это, вероятно, в 3 раза больше вашей тактовой частоты, но это примерно так же бессмысленно, как bogomips. Некоторые операции с плавающей запятой занимают много времени (деление, для начинающих), сложение и умножение обычно бывают быстрыми (по одному на единицу fp за такт). Следующая проблема - производительность памяти, есть причина, по которой в последнем классическом CRAY было 31 банк памяти. В конечном счете, производительность процессора ограничена скоростью чтения и записи в память, так какой уровень кэширования подходит для вашей проблемы? Когда-то Linpack был настоящим эталоном, теперь он помещается в кеш (L2, если не L1) и является скорее чисто теоретическим эталоном CPU. И, конечно, ваши 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.

Рональд Поттол
источник
1
Фороникс, кажется, именно то, что я искал - спасибо! Единственная причина, по которой я этого хотел, заключалась в том, что я заполнял опрос, в котором спрашивал, сколько у меня вычислительных мощностей в терафлопс Опрос не был очень важным, поэтому я не беспокоился о точности ответа. Тем не менее было бы неплохо сказать: «Наш кластер может делать X терафлопс». Хотя, как вы указываете, это число не обязательно имеет большой смысл в реальном мире.
молекулярный
7

по-видимому, есть пакет и команда «sysbench»:

sudo apt-get install sysbench(или brew install sysbenchOS 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

rogerdpack
источник
3
Как это дает Флопс?
Мартин Тома
Похоже, это скорее общий «тест производительности процессора», см. Также bnikolic.co.uk/blog/hpc-howto-measure-flops.html
rogerdpack
3

Для приблизительных оценок:

Linpack

  1. Скачать это ( ссылка )
  2. Извлеки это
  3. cd benchmarks_2017/linux/mkl/benchmarks/linpack
  4. ./runme_xeon64
  5. Подождите некоторое время (более 1 часа)

На 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
Мартин Тома
источник
1

Одним из эталонов, который традиционно использовался для измерения FLOPS, является Linpack. Другим распространенным эталоном FLOPS является Whetstone.

Больше чтения: Википедия «вьетнамки» запись , точильный запись , Linpack запись

kolypto
источник
2
Я ценю ваш ответ, однако моя цель - получить быструю и грязную оценку флопов. У Whetstone и Linpack та же проблема, что и у HPL - я начинаю читать об этом, затем теряюсь на сайте за сайтом, которому все выглядят по 20 лет. Когда мне удается найти исходный код, я не могу скомпилировать его без установки нескольких зависимых библиотек - даже тогда я сталкиваюсь с ошибками. Я мог бы заставить все это работать, но это не так важно, чтобы тратить время. Надеемся, что существует какое-то относительно современное программное обеспечение, которое Just Works для шариковых флопов.
молекулярный
1
Оценить? Тогда это около 4 * Гц: для 1 ГГц процессора это около 4GFLOPS :))
kolypto
1

Как вы упомянули кластер, мы использовали пакет HPCC . Требуется немного усилий для настройки и настройки, но в нашем случае эта точка зрения не была хвастливой, она была частью критериев приемлемости для кластера; ИМХО необходим некоторый сравнительный анализ производительности, чтобы гарантировать, что оборудование работает так, как рекламируется, все правильно соединено и т. д.

Теперь, если вы просто хотите получить теоретическое пиковое число FLOPS, это просто. Просто посмотрите статью о процессоре (скажем, на realworldtech.com или что-то подобное), чтобы получить информацию о том, сколько DP FLOPS может сделать ядро ​​процессора за такт (с текущими процессорами x86, которые обычно равны 4). Тогда общий пик FLOPS просто

количество ядер * FLOPS / цикл * частота

Тогда для кластера с сетью IB вы сможете достичь около 80% пикового значения FLOPS в HPL (что, кстати, является одним из эталонов в HPCC).

janneb
источник