LINUX.ORG.RU
ФорумTalks

Меряемся длиной MFLOPS


0

1

Время от времени на LOR возникает топик с предложением потестироваться. Не избежал и я соблазна собрать небольшую статистику по процессорам и компиляторам.

Для теста предлагается скомпилировать и замерить время выполнения классического теста Whetstone, когда-то разработанного фирмой ICL для измерения скорости на вычислительных задачах.

Первый тест простой, не очень точный, но любопытный тем, что именно этот код использовался ещё для оценки быстродействия компьютеров в 80-е годы, включая БЭСМ-6 и другие.

И так ставим в систему fortran, если его ещё не было.

apt-get install gfortran

или как там у вас ставится, компилируем (опции в принципе те же, что у gcc) и запускаем этот код, обратите внимание там в комментариях внутри файла есть результаты для других машин

whets.f

Сообщаем результат. Вместе с процессором, версией компилятора, режимом (32 бит или 64) и опциями оптимизации (-O2, -O3 и др., если были) У меня получилось: 64 бита, gfortran-4.5 c -O2 для Athlon 64 X2 5200+

 **** TEST WHETSTONE ****
 TOTAL TIME -    0.266 SEC.  (  0 MIN.  0.3 SEC.)
    500.0 MILLION WHETSTONE,  1882.353 MILLION WHETSTONE/SEC
 ARRAY ELEMENTS..........    0.00      0.0%
 ARRAY AS PARAMETER......    0.01      2.9%
 CONDITIONAL JUMPS.......    0.01      2.9%
 INTEGER ARITHMETIC......    0.00      0.0%
 TRIG. FUNCTIONS.........    0.04     14.7%
 PROCEDURE CALLS.........    0.05     17.6%
 ARRAY REFERENCE.........    0.02      5.9%
 STANDART FUNCTIONS......    0.15     55.9%

Следующий тест посложнее, взят он с сайта Linux. Кластер и вообще говоря, предназначен для тестирования быстродействия кластера. Но можно и просто машину с многоядерным процессором (несколькими процессорами) протестировать и даже с одним процессором и ядром, как вырожденный случай.

Ставим библиотеку для параллельных вычислений - OpenMPI. У каждого по разному, я для этого ставил библиотеку libopenmpi, libopenmpi-dev, openmpi-common, openmpi-bin уже не помню всё выбирал или по зависимостям.

Качаем файлы whetstoned.f и mwips.f

компилируем

gfortran-4.5 -O2 mwips.f whetstoned.f -o mwips-45 -I /usr/include/mpi/ -lmpif77

Запускаем на одном процессоре. У меня получилось

  Cluster Double Precision Whetstone Test ---------
  Quantity of processors =   1
  Calculation time       = 260.52 seconds
  Cluster speed          =   2303 MWIPS
  -------------------------------------------------
  Cluster node N00 speed =   2303 MWIPS (ml)
  -------------------------------------------------
  Nodes minimal speed    =   2303 MWIPS
  Acceleration factor    =   1.00
  -------------------------------------------------

Затем на двух или сколько у вас ядер (процессоров), для этого используется mpirun

mpirun -np 2 mwips-45

у меня получилось

  Cluster Double Precision Whetstone Test ---------
  Quantity of processors =   2
  Calculation time       = 251.46 seconds
  Cluster speed          =   4772 MWIPS
  -------------------------------------------------
  Cluster node N00 speed =   2454 MWIPS (ml)
  Cluster node N01 speed =   2418 MWIPS (ml)
  -------------------------------------------------
  Nodes minimal speed    =   2418 MWIPS
  Acceleration factor    =   1.97
  -------------------------------------------------

Интересно ещё сравнить с результатом, полученным с помощью Intel Fortran. Если верить вышеуказанному сайту быстродействие выше в несколько раз, чуть ли не на порядок, то есть GNU Fortran очень слаб для вычислений.

Добавление: действительно результат Intel Fortran резко лучше. Но также и у gfortran-4.6 он лучше.

Добавление второе: есть еще один тест, не дающий такой разницы между компиляторами gfortran разных версий - flops.f - компилировать с mpi

★★★★★

Последнее исправление: anonymous_incognito (всего исправлений: 4)
Ответ на: комментарий от anonymous_incognito

4.6

  HPC Test ----------------------------------------
  Quantity of processors =   1
  Calculation time       =   1.27 seconds
  Cluster speed          =   1420 MFLOPS
  -------------------------------------------------
  Cluster node N00 speed =   1420 MFLOPS
  -------------------------------------------------
4.5
  HPC Test ----------------------------------------
  Quantity of processors =   1
  Calculation time       =   1.27 seconds
  Cluster speed          =   1419 MFLOPS
  -------------------------------------------------
  Cluster node N00 speed =   1419 MFLOPS
  -------------------------------------------------
ifc
  HPC Test ----------------------------------------
  Quantity of processors =   1
  Calculation time       =   1.27 seconds
  Cluster speed          =   1418 MFLOPS
  -------------------------------------------------
  Cluster node N00 speed =   1418 MFLOPS
  -------------------------------------------------

megabaks ★★★★
()
Ответ на: комментарий от megabaks

В общем, похоже что у других тестов компилятор intel слишком сильно оптимизировал что-то. Или flops.f основное время тратит не на вещественный счёт.

anonymous_incognito ★★★★★
() автор топика
Ответ на: комментарий от anonymous_incognito

Во, а вот на нем разница между ifort и gfortran отсутствует:

ifort

  HPC Test ----------------------------------------
  Quantity of processors =  40
  Calculation time       =   0.10 seconds
  Cluster speed          =  18397 MFLOPS
  -------------------------------------------------

gfortran

  HPC Test ----------------------------------------
  Quantity of processors =  40
  Calculation time       =   0.10 seconds
  Cluster speed          =  18113 MFLOPS
  -------------------------------------------------

На обоих тестах сильный разброс ±5000 MFLOPS

mclaudt
()
Ответ на: комментарий от anonymous_incognito

Да, где-то так. Или как атом 455.

mono ★★★★★
()
Ответ на: комментарий от nutz

после обновления адра и модулей (ogra), вроде, пропал. И кнопка хардварного отключения тачпада работает.

mono ★★★★★
()

model name : AMD Athlon(tm) 64 X2 Dual Core Processor 4200+

cpu on 1000MHz

$ ./whets
 **** TEST WHETSTONE ****
 TOTAL TIME -    0.086 SEC.  (  0 MIN.  0.1 SEC.)
    500.0 MILLION WHETSTONE,  5818.182 MILLION WHETSTONE/SEC
 ARRAY ELEMENTS..........    0.00      4.5%
 ARRAY AS PARAMETER......    0.03     31.8%
 CONDITIONAL JUMPS.......    0.00      4.5%
 INTEGER ARITHMETIC......    0.00      4.5%
 TRIG. FUNCTIONS.........    0.00      0.0%
 PROCEDURE CALLS.........    0.00      0.0%
 ARRAY REFERENCE.........    0.05     54.5%
 STANDART FUNCTIONS......    0.00      0.0%


cpu on 2200MHz

$ ./whets
 **** TEST WHETSTONE ****
 TOTAL TIME -    0.039 SEC.  (  0 MIN.  0.0 SEC.)
    500.0 MILLION WHETSTONE, 12800.000 MILLION WHETSTONE/SEC
 ARRAY ELEMENTS..........    0.00      0.0%
 ARRAY AS PARAMETER......    0.02     40.0%
 CONDITIONAL JUMPS.......    0.00      0.0%
 INTEGER ARITHMETIC......    0.00     10.0%
 TRIG. FUNCTIONS.........    0.00      0.0%
 PROCEDURE CALLS.........    0.00      0.0%
 ARRAY REFERENCE.........    0.02     50.0%
 STANDART FUNCTIONS......    0.00      0.0%
sdio ★★★★★
()
Ответ на: комментарий от sdio

в предыд. сообщении было gfortran-4.6 -O2 ...

Теперь:
gfortran-4.6 -O3 ...

cpu on 2200Mhz

$ ./whets 
 **** TEST WHETSTONE ****
 TOTAL TIME -    0.020 SEC.  (  0 MIN.  0.0 SEC.)
    500.0 MILLION WHETSTONE, 25600.000 MILLION WHETSTONE/SEC
 ARRAY ELEMENTS..........    0.00      0.0%
 ARRAY AS PARAMETER......    0.02     80.0%
 CONDITIONAL JUMPS.......    0.00      0.0%
 INTEGER ARITHMETIC......    0.00      0.0%
 TRIG. FUNCTIONS.........    0.00      0.0%
 PROCEDURE CALLS.........    0.00      0.0%
 ARRAY REFERENCE.........    0.00     20.0%
 STANDART FUNCTIONS......    0.00      0.0%
sdio ★★★★★
()
Ответ на: комментарий от nutz

лаг действительно больше не наблюдается, но теперь тачпад периодически просто отключается напрочь.

mono ★★★★★
()

> Меряемся длиной MFLOPS

собрать небольшую статистику по процессорам и компиляторам.

Какое отношение компилятор имеет к MFLOPS процессора? Правда, статистику нередко портит всевозможными оптимизациями. Посему в подобных бенчмарках от компилятора стоит отказаться и использовать асм.

Во-вторых, при тесте производительности следует максимально возможно загружать все модули и расширения архитектуры ЦП. А тот тут развелось ЛОРовцев, меряющих скорость АЛУ и свистящих про винарность ARM перед x86.

segfault ★★★★★
()
Ответ на: комментарий от mono

Ркомендую, пока не поправили, юзать мышку(но врубить ее надо до включения) и лага нету, и вообще намного приятнее, но когда починят думаю вернусь на тачпад. Так-то

nutz ★★
()
Ответ на: комментарий от nutz

Мышка - это не так мобильно, чтобы в маршрутке лор почитать тачпад удобнее. Хотя, если баги в конец достанут придется переходить на мышку.

mono ★★★★★
()
Ответ на: комментарий от segfault

> Какое отношение компилятор имеет к MFLOPS процессора? Правда, статистику нередко портит всевозможными оптимизациями. Посему в подобных бенчмарках от компилятора стоит отказаться и использовать асм.

Но вот в каких подобных?

Во-вторых, при тесте производительности следует максимально возможно загружать все модули и расширения архитектуры ЦП. А тот тут развелось ЛОРовцев, меряющих скорость АЛУ и свистящих про винарность ARM перед x86.

Задача ведь очень простая: оценить _практически_ достижимую производительность процессора для решения вычислительных задач. И вот здесь не только процессор, но версия и производитель компилятора очень к месту.

На практике разве специальный тестовый ассемблерный код будет запускаться? Я потому и выбрал whetstone в некоторых модификациях, что это старый тест именно для сравнения производительности вычислений. В отличие от LAPACK более доступный.

Но видимо, мне надо будет чего-нибудь более практичное написать/найти. А то компиляторы странные штуки вытворяют с искусственными тестами.

anonymous_incognito ★★★★★
() автор топика
Ответ на: комментарий от anonymous_incognito

> Но вот в каких подобных?

Имею в виду бенчмарки ЦП

Задача ведь очень простая: оценить _практически_ достижимую производительность процессора для решения вычислительных задач. И вот здесь не только процессор, но версия и производитель компилятора очень к месту.

И снова: больше всего возможностей по оптимизации вычислений предоставляет ассемблер. Но это же неоправданно сложно - скажете вы! Так найдутся люди, для которых с++ - неоправданная сложность, им яву подавай...

На практике разве специальный тестовый ассемблерный код будет запускаться?

Для сравнения быстродействия процессоров одной архитектуры достаточно искусственного теста. Реальные приложения будут выполняться со скоростью, пропорциональной результатам (если не учитывать быстродействие памяти, IOwait-ов и т.п, но это от проца не зависит).

segfault ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.