Кроссплатформенный бенчмарк?

Не DOS, но тоже нам интересно

Кроссплатформенный бенчмарк?

Сообщение nongrato » 30 июл 2014, 01:55

Итак вздумалось мне однажды провести сравнительный тест производительности всех доступных мне систем. Т.к. все системы имеют разные архитектуры, бенчмарк должен иметь открытый код. После недолгого гугления удалось выяснить, что для этой задачи уже сто лет применяется LINPACK benchmark. Изначально написанный на Фортране, он также имеет имплементацю и на Си. Именно эту версию я и выбрал для тестов. На всех платформах код был скомпилирован с помощью "гнутого" компилятора.

Результаты вышли примерно такие:

на Core i5 3.2GHz под Linux тест выдал около 1800 MFLOPS
MIPS R12000 400MHz под Irix 6.5 --------------- 160 MFLOPS
UltraSparc IIi 440MHz под Solaris 8 -------------- 60 MFLOPS
AMD k-6-II 400MHz под Windows 98 ------------- 23 MFLOPS

Некоторые результаты весьма удивили и озадачили. Например по субъективным ощущениям и Sun Ultra и SGI Octane(UltraSparc и MIPS соответственно) имеют схожую производительность, более того "жабий" код на УльтраСпарке выполняется заметно быстрее. Неужели МИПС действительно настолько опрережает по операциям с плавающей точкой?! :?

Отсюда у меня два вопроса:
существует ли кроссплатформенный бенчмарк который более комплексно тестирует производительность?
Можно ли скомпилировать ЭТОТ код под 8086? Мой Amstrad XT еще не протестирован 8-)
SGI Octane2 | SGI VW 320 | Sun Ultra 10 | Sun Sparcstation 20
Аватара пользователя
nongrato
Мастер Даунгрейда
 
Сообщения: 655
Зарегистрирован: 21 апр 2013, 16:26
Откуда: СПб

Re: Кроссплатформенный бенчмарк?

Сообщение Nika » 30 июл 2014, 03:33

Прежде решите, что именно вы решили пробенчить.
Если это скорость работы процессора по выполнению операций с вещественными числами (FLOPS) - скомпилируйте ассемблерный кусок кода любым транслятором, а дальше линкуйте его в двоичном виде к программам на разных платформах. Будет адекватно . И не будет зависеть от платформы, только от железа.
Если интересует производительность системы (софта) - найдите кроссплатформенный архиватор, сделайте сборки его под разные платфомы и на одном и том же железе под разными платформами архивируйте достаточно болшое количество мелких файлов.
Вот и весь бенчмарк.
Остальные способы тестирования для меня туманны. Зависят от комплекса непонятных факторов.
Последний раз редактировалось Nika 30 июл 2014, 03:35, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

Re: Кроссплатформенный бенчмарк?

Сообщение nongrato » 30 июл 2014, 03:45

Где ж я достану эквивалентные фрагменты ассемблерного кода под USparc и MIPS? :) На всякий случай напоминаю, что разница между ними чуть больше чем между Pentium 1 и 2.

Вариант с архиватором более дельный.
SGI Octane2 | SGI VW 320 | Sun Ultra 10 | Sun Sparcstation 20
Аватара пользователя
nongrato
Мастер Даунгрейда
 
Сообщения: 655
Зарегистрирован: 21 апр 2013, 16:26
Откуда: СПб

Re: Кроссплатформенный бенчмарк?

Сообщение Nika » 30 июл 2014, 03:50

nongrato писал(а):Вариант с архиватором более дельный.
Тогда вариант с двоичным куском кода для разного железа да, отпадает.
Имелась в виду всёже только х86 платформа.
А вариант с архиватором чуть ли не вообще единственный из возможных.
nongrato писал(а):Можно ли скомпилировать ЭТОТ код под 8086? Мой Amstrad XT еще не протестирован
В приложении - откомпилированный код того текста, что по вашей ссылке, - для DOS (8086).
Не проверял, что там и как, просто откомпилировал и всё.

-> Вложение удалено <-
Последний раз редактировалось Nika 30 июл 2014, 04:22, всего редактировалось 5 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

Re: Кроссплатформенный бенчмарк?

Сообщение nongrato » 30 июл 2014, 03:58

о, супер! Спасибо. Прогнал пока на виртуальной машине- завтра попробую на железе. Чем компиляли? GCC? Флаг -O выставляли? Без него скорость исполнения в 3-5 раз ниже.
SGI Octane2 | SGI VW 320 | Sun Ultra 10 | Sun Sparcstation 20
Аватара пользователя
nongrato
Мастер Даунгрейда
 
Сообщения: 655
Зарегистрирован: 21 апр 2013, 16:26
Откуда: СПб

Re: Кроссплатформенный бенчмарк?

Сообщение Nika » 30 июл 2014, 04:04

nongrato писал(а):о, супер! Спасибо. Прогнал пока на виртуальной машине- завтра попробую на железе. Чем компиляли? GCC? Флаг -O выставляли? Без него скорость исполнения в 3-5 раз ниже.

Компилировал TurboC v.2.0.
Опции:
tcc -ml -v- -y- -1 -k -a- -f -N- -K- -r- -j10 flops.c
То-есть, заказана "-f" эмуляция 8087 - пойдёт на любой машине, даже без сопроцессора.
Последний раз редактировалось Nika 30 июл 2014, 04:05, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

Re: Кроссплатформенный бенчмарк?

Сообщение nongrato » 30 июл 2014, 04:06

Вот кстати сопроцессор там есть, ну да ладно) Завтра доложу что да как
SGI Octane2 | SGI VW 320 | Sun Ultra 10 | Sun Sparcstation 20
Аватара пользователя
nongrato
Мастер Даунгрейда
 
Сообщения: 655
Зарегистрирован: 21 апр 2013, 16:26
Откуда: СПб

Re: Кроссплатформенный бенчмарк?

Сообщение Nika » 30 июл 2014, 04:12

nongrato писал(а):Вот кстати сопроцессор там есть, ну да ладно) Завтра доложу что да как
Не проблема.
Перекомпилировал в две версии - 8087 и эмуляция.

-> Атач удалён <-
Последний раз редактировалось Nika 31 июл 2014, 05:41, всего редактировалось 2 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

Re: Кроссплатформенный бенчмарк?

Сообщение Freeman » 31 июл 2014, 02:06

nongrato писал(а):AMD k-6-II 400MHz под Windows 98 ------------- 23 MFLOPS

Мне больше всего эта строчка понравилась, ибо раньше уже делился наблюдениями:
Freeman писал(а):Ядро 9x нивелирует любой быстрый компьютер до уровня 500 МГц, и на такой машине выгодней эксплуатировать ОС NT-ветки.

Для полноты восприятия неплохо бы прогнать тест на той же машине под Windows 2000.
Разработчик языка программирования Кантор
Аватара пользователя
Freeman
Мастер Даунгрейда
 
Сообщения: 647
Зарегистрирован: 06 дек 2012, 05:49
Откуда: Санкт-Петербург

Re: Кроссплатформенный бенчмарк?

Сообщение nongrato » 31 июл 2014, 02:40

Итак, бесчеловечные эксперименты продолжаются.

К сожалению попытка запустить Linpack на 8086 потерпела фиаско. Скомпилированные юзером Nika файлы на железяке просто отказались запускаться без объяснения причин, а скомпилированный мной самостоятельно непосредственно на целевой машине, тем же TCC с тем же набором флагов вызывает зависание. Поэтому Amstrad в битве титанов далее не участвует.

Зато нашлась еще одна полезная тулза: Java Micro Benchmark

Как следует из названия, написано оно на "Жабе", а значит теоретически запустится на чем угодно. Но и тут не все слава богу. Самая свежая версия JRE под IRIX - 1.4, программа же на такой тухлятине запускаться отказывается. Остальные результаты вышли такими:

 Развернуть: Core i5 3.2GHz
Number of processors / threads: 4 / 4
*** Start Java Micro Benchmark ***
Thread (0) Int arithmetic operations per second: 755.5723468077068 E6
Thread (0) Long arithmetic operations per second: 449.74139914549136 E6
Thread (0) Double arithmetic operations per second: 600.4202948063645 E6
Thread (0) Trig arithmetic operations per second: 3.1615558014543153 E6
Thread (1) Int arithmetic operations per second: 758.4376192643155 E6
Thread (1) Long arithmetic operations per second: 421.4075014749262 E6
Thread (1) Double arithmetic operations per second: 598.9817316561846 E6
Thread (1) Trig arithmetic operations per second: 3.1347965517241376 E6
Thread (2) Int arithmetic operations per second: 779.7270962962964 E6
Thread (2) Long arithmetic operations per second: 437.15847038251366 E6
Thread (2) Double arithmetic operations per second: 597.7286317991632 E6
Thread (2) Trig arithmetic operations per second: 3.0797662457653217 E6
Thread (3) Int arithmetic operations per second: 781.2500007812499 E6
Thread (3) Long arithmetic operations per second: 439.2708108939161 E6
Thread (3) Double arithmetic operations per second: 605.1437222390318 E6
Thread (3) Trig arithmetic operations per second: 3.114294923699782 E6


Time: 54862.0 ms
Arithmetic operations per second: 1809.332509767451 E6
*** End Java Micro Benchmark ***

 Развернуть: UltraSparc IIi 440MHz
Number of processors / threads: 1 / 1
*** Start Java Micro Benchmark ***
Thread (0) Int arithmetic operations per second: 59.803247376132525 E6
Thread (0) Long arithmetic operations per second: 28.267752176616916 E6
Thread (0) Double arithmetic operations per second: 85.52856662675333 E6
Thread (0) Trig arithmetic operations per second: 0.6535521207764199 E6


Time: 142880.0 ms
Arithmetic operations per second: 43.5632795750698 E6
*** End Java Micro Benchmark ***

 Развернуть: AMD k-6-II 400MHz
Number of processors / threads: 1 / 1
*** Start Java Micro Benchmark ***
Thread (0) Int arithmetic operations per second: 69.34812766990291 E6
Thread (0) Long arithmetic operations per second: 23.299161253494873 E6
Thread (0) Double arithmetic operations per second: 17.831669062054207 E6
Thread (0) Trig arithmetic operations per second: 0.19535067395975775 E6


Time: 278030.0 ms
Arithmetic operations per second: 27.668577164852934 E6
*** End Java Micro Benchmark ***


Freeman писал(а):неплохо бы прогнать тест на той же машине под Windows 2000.


Ну это если уж совсем делать будет нечего, но сомневаюсь, что даже такие уловки спасут х86-й хлам от позора. 8-)
SGI Octane2 | SGI VW 320 | Sun Ultra 10 | Sun Sparcstation 20
Аватара пользователя
nongrato
Мастер Даунгрейда
 
Сообщения: 655
Зарегистрирован: 21 апр 2013, 16:26
Откуда: СПб

Re: Кроссплатформенный бенчмарк?

Сообщение Nika » 31 июл 2014, 05:44

nongrato писал(а):К сожалению попытка запустить Linpack на 8086 потерпела фиаско. Скомпилированные юзером Nika файлы на железяке просто отказались запускаться без объяснения причин,

А ведь компилировал я с помощью этого TC2.0 программки для реального 8086.
Давно это было..
Думаю, удалось понять, в чём там было дело. У меня в настройках была забита опция для 286+.
Если не похерили ещё идею с этой Linpack на XT, то вот, попробуйте такой вариант (c опцией "-1-"):
Вложения
FLOPS.RAR
(28.33 Кб) Скачиваний: 241
Последний раз редактировалось Nika 31 июл 2014, 05:47, всего редактировалось 1 раз.
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

Re: Кроссплатформенный бенчмарк?

Сообщение nongrato » 31 июл 2014, 14:41

Nika писал(а):Если не похерили ещё идею с этой Linpack на XT, то вот, попробуйте такой вариант (c опцией "-1-"):



Работает! Вот это спасибо!!!

Результат:

Siemens 8086+Intel 8087: 18 KFLOPS

интересно, что оба варианта программы показали идентичный результат.
SGI Octane2 | SGI VW 320 | Sun Ultra 10 | Sun Sparcstation 20
Аватара пользователя
nongrato
Мастер Даунгрейда
 
Сообщения: 655
Зарегистрирован: 21 апр 2013, 16:26
Откуда: СПб

Re: Кроссплатформенный бенчмарк?

Сообщение Nika » 31 июл 2014, 16:11

nongrato писал(а):
Nika писал(а):Если не похерили ещё идею с этой Linpack на XT, то вот, попробуйте такой вариант (c опцией "-1-"):
Работает! Вот это спасибо!!!
Результат:
Siemens 8086+Intel 8087: 18 KFLOPS
Ну, вот и хорошо.
Компилировалось с опциями
- tcc.exe -ml -v- -y- -1- -k -a- -N- -K- -r- -j10 -f flops.c
и tcc.exe -ml -v- -y- -1- -k -a- -N- -K- -r- -j10 -f87 flops.c

У меня на ноуте под WinXP в DOS-сеансе показывает 232 KFLOPS. В принципе, реальное соотношение,
но по-хорошему стоило бы посмотреть внимательно, чем там именно та программка занимается.
интересно, что оба варианта программы показали идентичный результат.
Что он должен различаться меньше, чем на 386, например, это ясно (на 8087 многое не оптимизировано, долгая засылка в регистры).
Но идентичного результата быть воде как не должно. Да, нужно смотреть, чем именно занимается та программка.

Ну, и я наугад добавил недостающую в исходнике строчку в начале файла flops.c (на соотношение показателей повлиять не должно):
#define CLOCKS_PER_SEC 18.2
Последний раз редактировалось Nika 31 июл 2014, 16:24, всего редактировалось 10 раз(а).
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

Re: Кроссплатформенный бенчмарк?

Сообщение nongrato » 31 июл 2014, 17:53

Nika писал(а): Да, нужно смотреть, чем именно занимается та программка.


Цитата из Википедии:

решение плотной СЛАУ методом LU-декомпозиции
SGI Octane2 | SGI VW 320 | Sun Ultra 10 | Sun Sparcstation 20
Аватара пользователя
nongrato
Мастер Даунгрейда
 
Сообщения: 655
Зарегистрирован: 21 апр 2013, 16:26
Откуда: СПб

Re: Кроссплатформенный бенчмарк?

Сообщение Nika » 31 июл 2014, 18:55

Понятно.
Поэтому там на входе и требуется задавать размер матрицы.
Ну, раз программа написана на стандартном Си, то можно переносить её на разные платформы и сравнивать показатели.
Nika
Мастер Даунгрейда
 
Сообщения: 594
Зарегистрирован: 17 окт 2013, 00:21

След.

Вернуться в Прочее

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4