Замечательный LINPACK,
или беспристрастное cравнение цифровых вычислительных устройств.

08 мая 2025 года

Оценки темы блога
уникальные адреса

👁

"Что в корпусе твоем?"
Чем похвалиться, держа в руках мобильный смартфон, или используя настольный компьютер, планшет, приставку? Если они, конечно, цифровые и двоичные!

Беспристрастное сравнение
с помощью алгоритмов LINPACK.

Все картинки в тексте созданы нейросетью DALL-E и Kandinsky.

Предыстория

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

На самом деле, конечно же задают. Но все известные ответы распространяются на такие характеристики, как объём оперативной памяти и встроенного устройства для хранения данных, тактовая частота процессора и количество процессоров. Увы, не всегда эти характеристики ответят на вопрос - какова величина производительности, достаточна ли она для решения задачи, для которой он предлагается.
Если у компьютера процессора с большим количеством ядер, но с несколько меньшей тактовой частотой, не говоря уже о разных количествах потоков, отличющихся от количества ядер, насколько меняется общая вычислительная мощность компьютера?
Какой же параметр оценит мощность устройства?

Вопрос измерения вычислительной мощности, отнюдь не праздный. Именно вычислительная мощность даст оценку пригодности устройства и долговечность его использования в перспективе.

Изображение создано с помощью нейросети Kandinsky.
Параметр, который поможет ответить на этот вопрос, долгое время использовался в области суперкомпьютеров.

Достаточно долгое время страны, создававшие суперкуомпьютеры, такие как США, КНР, Япония, Россия применяли специальный набор выполняемых программ, запуск которых нагружал всю вычилительную систему - в основном, оперативную память и процессор(ы) и зная стандартный набор операций, вычисляемых по этим программам, определялось время их выполнения. Поскольку вычисление подразумевало использование всей арифметики, включая дробные числа, то характекристика получила название количества операций с дробными числами - так называемыми числами с плавающей запятой, в единицу времени - FLOPS (англ. Floating Point Operation per Second, ФЛОПС). Кратные величины образуются десятичными приставками - кило, мега, и так далее.

LINPACK

LINPACK — программная библиотека, написанная на языке Фортран, которая содержит набор подпрограмм для анализа и решения плотных систем линейных алгебраических уравнений. Она была разработана в Аргоннской национальной лаборатории Джеком Донгаррой, Джимом Банчем (Jim Bunch), Кливом Молером, и Гильбертом Стюартом (Gilbert Stewart) для работы на суперкомпьютерах, которые использовались в 1970-х — начале 1980-х годов. Существует реализация HPL (High-performance Linpack, произвольные размеры, первые версии выпущены в 1991—1993 годах) — популярный тест производительности, предназначенный для оценки производительности параллельных вычислительных систем и созданный на базе некоторых функций из библиотеки LINPACK.
Список 500 самых быстрых компьютеров в мире TOP500 составляется по результатам теста HPL.
(цитата из "Википедии")

Параметр ФЛОПС, вычисляемый с помощью этого пакета программ, не лишен недостатков, однако, его можно использовать в персональных компьютерах, как и в суперкомпьютерах для ориентировочного сравнения, которое оказывается достаточным для выбранного круга задач - работы программиста, или игр. Для пользователя, использующего компьютер только для офисны задач эта характеристика окажется бесполезной. Однако, если речь идет о смартфоне, применяемом, например, для оплаты в магазине, как банковской карточкой, знать значение ФЛОПС не будет лишним.
Кроме того, как написано в "Википедии":

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

Однажды, 5 лет назад я скачал с одного из публичных источников приложение LINPACK с пользовательским интерфейсом (Graphic User Interfact) и успешно запустил его на компьютере с процессором Intel и операционной системой Windows. Обнаружив в то время процессор AMD на одном из компьютеров, тест отказал, выдав сообщение, что он предназначен для выполнения только в системах с "интеловской" начинкой. В принципе, замечание верное. Могут существовать существенные отличия в архитектуре, которые приложение в сило определенной "начинки" может использовать выдавая искаженные результаты. Но спустя несколько лет это же приложение на другой системе с процессором AMD никаких возражений не выдавало.

Я проводил испытания на четырехядерном AMD FX-4350 и затем обновленном восьмиядерном AMD FX-8350 4 ГГц с одинаковым объемом оперативной памяти 11 Гб с операционной системой Windows 10. Для операционной системы Linux (например, как моя актуальная Ubuntu 24.04.3 сначала оснащенной Intel Core2Quad 2 ГГц с объёмом оперативной памяти 8 Гб и затем четырёхядерным процессором 3,4 ГГц Intel Core2Quad Q9650, придется найти соответствующий пакет.
Спустя некоторое время я решил и эту задачу. Существенным отличием от такой же процедуры в Windows является использование интерфейса командной строки (cli - command line interface). Но мне, постепенно освоившим системы с системой Linux, это уже не казалось стестяющим обстоятельством.
Тогда и сейчас я провел измерения производительсти своих персональных компьютеров и у меня теперь есть интересные данные для сравнения, например, после обновления процессора на компьютере при сохранении прежнего объема памяти.
Основываясь на свойствах пакета программ, на результаты испытаний марка операционной системы влиять не должна.

Какой же компьютер "круче"? Не прогадал ли я в свое время с приобретением странного AMD-FX4300 /1/

Изображение создано с помощью нейросети Kandinsky.
Итак, каковы же нечасто встречаемые характеристики, показывающие реальную вычислительную мощность компьютера?

Тестирование

Начну с теста системы с Intel Core2Duo.
Я запустил её из командной строки, поскольку только такой режим возможен в для этого пакета. Программа показывает характеристики процессора - 2-х ядерный 2.332 ГГц (то, что установлен Intel, я знаю из свойств системы)


ubuntuser@ubuntuser-P5KC:~/Загрузки/LINPACK/linpack-xtreme-1.1.3-i386$ bash run_stress_test
Linpack Xtreme v1.1.3 by Regeneration

Current date/time: Tue Aug  3 20:06:46 2021

CPU frequency:    2.332 GHz
Number of CPUs: 1
Number of cores: 2
Number of threads: 2

Parameters are set to:

Number of tests: 1
Number of equations to solve (problem size) : 11026
Leading dimension of array                  : 11026
Number of trials to run                     : 20
Data alignment value (in Kbytes)            : 4

Maximum memory requested that can be used=47357282211720, at the size=4159893716

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

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
11026  11026  4      72.479     12.3330  1.050990e-10 3.046676e-02   pass
11026  11026  4      70.531     12.6736  1.050990e-10 3.046676e-02   pass
11026  11026  4      69.123     12.9318  1.050990e-10 3.046676e-02   pass
11026  11026  4      69.135     12.9295  1.050990e-10 3.046676e-02   pass
11026  11026  4      69.265     12.9052  1.050990e-10 3.046676e-02   pass
11026  11026  4      70.434     12.6910  1.050990e-10 3.046676e-02   pass
11026  11026  4      69.165     12.9239  1.050990e-10 3.046676e-02   pass
11026  11026  4      69.099     12.9363  1.050990e-10 3.046676e-02   pass
^C
ubuntuser@ubuntuser-P5KC:~/Загрузки/LINPACK/linpack-xtreme-1.1.3-i386$

              


Среднее значение на основе показанных величин составило: 12,8559 ГФлопс

Однажды я запустил тест HPL, ориентирующийся на возможности параллельных вычислений. Результаты оказались значительно ниже "простого" LINPACK почти в 3 раза, а то и в 12 раз.

P54KC, процессор Intel
16 марта 2021
(HPLinpack 2.0  --  High-Performance Linpack benchmark  --   September 10, 2008)
Проход 1. Производительность 3.873 Гфлопс
Проход 2. Производительность 4,052 Гфлопс
Проход 3. производительность 5.59908 Гфлопс
Отдельные тесты.
StarDGEMM_Gflops=5.38915 Гфлопс
SingleDGEMM_Gflops=4.52764 Гфлопс
StarFFT_Gflops=1.1556 Гфлопс
SingleFFT_Gflops=0.594984 Гфлопс
MPIFFT_Gflops=0.615219 Гфлопс
StarFFT_Gflops=0.860288 Гфлопс
SingleFFT_Gflops=1.00693 Гфлопс
MPIFFT_Gflops=0.55076 Гфлопс
Когда представилась возможность я вставил диск с системой в компьютер с процессором AMD и повторил процедуру.


ubuntuser@ubuntuser-P5KC:~/Загрузки/LINPACK/linpack-xtreme-1.1.3-amd64$ bash run_stress_test
tee: results.txt: Отказано в доступе
Linpack Xtreme v1.1.3 by Regeneration

Current date/time: Tue Aug  3 00:07:09 2021

CPU frequency:    3.917 GHz
OMP: Warning #205: KMP_AFFINITY: cpuid leaf 11 not supported - decoding legacy APIC ids.
Number of CPUs: 1
Number of cores: 2
Number of threads: 4

Parameters are set to:

Number of tests: 1
Number of equations to solve (problem size) : 22611
Leading dimension of array                  : 22611
Number of trials to run                     : 20
Data alignment value (in Kbytes)            : 4

Maximum memory requested that can be used=4090514884, at the size=22611

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

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
22611  22611  4      229.935    33.5213  4.354224e-10 3.026598e-02   pass
22611  22611  4      221.083    34.8634  4.354224e-10 3.026598e-02   pass
22611  22611  4      220.265    34.9929  4.354224e-10 3.026598e-02   pass
22611  22611  4      221.350    34.8214  4.354224e-10 3.026598e-02   pass
22611  22611  4      225.737    34.1447  4.354224e-10 3.026598e-02   pass
22611  22611  4      232.015    33.2207  4.354224e-10 3.026598e-02   pass
              


Здесь видно странное сочетание данных - программа написала, что количество ядер равно 2, а количество потоков - 4.
Номинальная тактовая частота для данной модели указана верно 3.8 ГГц по документации, здесь - 3.917 ГГц.
Среднее значение на основе показанных величин составило: 34,40862 ГФлопс
Таким образом, можно сделать вывод о том, что система с установленным процессором AMD имеет значительно большую производительность (почти в 3 раза), чем система с процессором Intel.
Что же, спустя несколько лет я могу успокоиться - я приобрел AMD, который позволил эксплуатировать более высокую мощность процессора.

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

Результаты работы программы приведены ниже.


С ./GenuineIntel
Input data or print help ? Type [data]/help :
data
Number of equations to solve (problem size): 25000
Leading dimension of array: 25000
Number of trials to run: 3
Data alignment value (in Kbytes): 4
Current date/time: Wed Apr 16 12:24:16 2025

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

Parameters are set to:

Number of tests: 1
Number of equations to solve (problem size) : 25000
Leading dimension of array                  : 25000
Number of trials to run                     : 3
Data alignment value (in Kbytes)            : 4

Maximum memory requested that can be used=5000504096, at the size=25000

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

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
25000  25000  4      296.178    35.1745  5.280856e-10 3.003033e-02   pass
25000  25000  4      254.424    40.9471  5.280856e-10 3.003033e-02   pass
25000  25000  4      257.113    40.5188  5.280856e-10 3.003033e-02   pass

Performance Summary (GFlops)

Size   LDA    Align.  Average  Maximal
25000  25000  4       38.8801  40.9471

Residual checks PASSED

End of tests
            

Замечу, что определение тактовой частоты здесь отличалось от заявленной. Причиной тому может быть как баг приложения, так и настройки BIOS, согласовывающие тактовую частоту процессора с памятью. Жаль, если она на самом деле понизилась. Однако, производительность, несмотря на это, значительно выше предыдущей аппаратной версии компьютера.

Интересная подробность - во время испытаний температура процессора поднималась до 104 градусов при показанной загрузке 101% (при стандартной офисной работе она не превышала 53 градуса).
То есть, работа на максимальной вычислительной производительности для дробных чисел весьма серьезно повышает температуру процессора. Есть повод задуматься о водяном охлаждении для таких случаев (в настоящий момент оно воздушное). При работе с мультимедийными приложениями или с проектом BOINC SETI@Home, использовавшим CUDA в установленной карте фирмы NVIDIA система такого температурного режима не достигала.
Кстати, при аналогичном испытании системы с процессором AMD, известным своей теплопроизводительностью, температура процессора не превышала 60 градусов благодаря водяному охлажению.


Для разнообразия, что не совсем корректно с точки зрения корректности сравнения, я запустил LINPACK версии для Windows.

Скриншот изображения работы программы. Опции позволяют сохранить как скриншот, так и таблицу полученных значений.

Я запускал приложение дважды и получил различные значения. Ниже приведен первых запуск.


Intel(R) LINPACK 64-bit data - LinX 0.6.5

Current date/time: Wed Apr 16 12:00:10 2025

CPU frequency:    4.084 GHz
Number of CPUs: 8
Number of cores: 8
Number of threads: 8

Parameters are set to:

Number of tests: 1
Number of equations to solve (problem size) : 18265
Leading dimension of array                  : 18280
Number of trials to run                     : 10
Data alignment value (in Kbytes)            : 4

Maximum memory requested that can be used=2671443296, at the size=18265

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

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
18265  18280  4      56.393     72.0463  3.283585e-010 3.489919e-002   pass
18265  18280  4      54.577     74.4438  3.283585e-010 3.489919e-002   pass
18265  18280  4      53.782     75.5438  3.283585e-010 3.489919e-002   pass
18265  18280  4      54.556     74.4724  3.283585e-010 3.489919e-002   pass
18265  18280  4      68.166     59.6037  3.283585e-010 3.489919e-002   pass
18265  18280  4      68.735     59.1102  3.283585e-010 3.489919e-002   pass
18265  18280  4      69.411     58.5341  3.283585e-010 3.489919e-002   pass
18265  18280  4      70.865     57.3332  3.283585e-010 3.489919e-002   pass
18265  18280  4      71.095     57.1480  3.283585e-010 3.489919e-002   pass
18265  18280  4      72.019     56.4146  3.283585e-010 3.489919e-002   pass

Performance Summary (GFlops)

Size   LDA    Align.  Average  Maximal
18265  18280  4       64.4650  75.5438

Residual checks PASSED

End of tests
            

В отличие от версии для Linux данные содержат максимальное и среднее значения производительности.
Далее, второй запуск программы. Видно, что обобщенные значения несколько ниже.

ntel(R) LINPACK 64-bit data - LinX 0.6.5

Current date/time: Wed Apr 16 12:18:50 2025

CPU frequency:    4.086 GHz
Number of CPUs: 8
Number of cores: 8
Number of threads: 8

Parameters are set to:

Number of tests: 1
Number of equations to solve (problem size) : 26000
Leading dimension of array                  : 26008
Number of trials to run                     : 3
Data alignment value (in Kbytes)            : 4

Maximum memory requested that can be used=1115220960, at the size=26000

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

Size   LDA    Align. Time(s)    GFlops   Residual     Residual(norm) Check
26000  26008  4      185.305    63.2400  6.099720e-010 3.207416e-002   pass
26000  26008  4      201.670    58.1082  6.099720e-010 3.207416e-002   pass
26000  26008  4      210.024    55.7968  6.099720e-010 3.207416e-002   pass

Performance Summary (GFlops)

Size   LDA    Align.  Average  Maximal
26000  26008  4       59.0483  63.2400

Residual checks PASSED

End of tests
              

Если говорить об особо важных приложениях, например, связанных с банковскими приложениями, для которых важна криптографическая составляющая, то здесь операции с дробными числами могут оказать не столь важными.

На иллюстрации показана страница онлайн-сервиса caer-ivango.ru по вычислению хэшей разных моделей в единицу времени. Оценка выполнена для процессора AMD FX-4300. Программа вычислений контрольных сумм (функций свёртки в российской терминологии) написана на языке JavaScript.
Скорость выполнения целочисленных операций, так называемая величина хэш в секунду, используется для оценки производительности ASIC (англ. application-specific integrated circuit, «интегральная схема для конкретного применения») — интегральной схемы, специализированная для решения конкретной задачи, такой как генерация блоков в блокчейне. Поскольку контрльные суммы - хэши, используют целые числа, то, очевидно, характеристика Флопс дл яних неприменима.
Что удалось протестировать - приставку для спутникового телевидения и смартфон Nokia 5.4.

Изображение создано с помощью нейросети Kandinsky.
На одном из своих занятий я давал ученикам задание скачать приложение LINPACK из репозиториев для OC Android и iOS. В целом параметры мобильных устройств находились в пределах сотен МФлопс. По сравнению с настольными компьютерами или ноутбуками они солидно проигрывали в вычислительной производительности.

Прочие устройства, для которых удалось провести тестирование с помощью LINPACK.

В моем распоряжении есть также спутниковый ресивер OPENBOX AS_4A с операционной системой Android 7.0, 4-х ядерным процессором ARMv7 и тактовой частотой 2 ГГц, и мобильный телефон Nokia 5.4 также с операционной системой Android (обновляемой, в настоящей момент Android 11.0), 8-ми ядерными процессором Aarch64 rev.2 и тактовой частотой 1.8 ГГц. Благодаря операционной системе было возможно загрузить из репозитория Mobile LINPACK. Сейчас этого приложения там уже нет.


Скриншоты экрана мобильного телефона Nokia 5.4. Операционная система спутникового ресивера не предоставляет возможности выполнить скриншоты, поэтому значения испытаний я приведу в таблице.

Вычислительная производительность мобильного телефона составила 440.5 МФлопс.

Вычислительная производительность спутникового ресивера OPENBOX AS_4A составила 82.79 МФлопс.
Данные этих испытаний сведены в ьалицу в разделе "Итоги".

Теперь ясность выбора подтверждается математическими испытаниями.

Изображение создано с помощью нейросети Kandinsky.
Выбирать следует такую систему, которая обеспечена нужным количеством Флопс.
К сожалению, эту характеристику вряди можно найти в сводках на стойках продаж в магазинах. Насколько выгодна оказалось приобретение, можно установить, только проверив систему, собрав её дома.

Итоги

Набор программ LINPACK постепенно ушел в прошлое. В магазинах приложений для операционной системы Android этого приложения уже найти. Ему на смену можно найти набор программ LAPACK, преследующий ту же самую цель - оценить производительность системы.

Модель процессора Тактовая частота, ГГц Количество ядер Производительность, ГФлопс
2021 год Intel Core2Duo 2.33 2 12,8559 /2/
2021 год AMD FX-4300 3.917 4 34,40862
2025 год Intel® Core™2 Quad Q9650 показано 1.712
(заявлено 3.0)
4 33,7647
(на другом тесте 38,88)/3/
2025 год AMD FX-8350 4.086 8 59.0483/4/
2025 год Aarch64 rev.2 1.8 ГГц 8 0.4405
2025 год ARMv7 2.0 ГГц 4 0.08279

Сравнивая велилины в тесте, можно заметить, что прирост производительности у обновленных систем почти пропорционален росту количеству ядер. Скорее всего, тактовая частота установленного процессора Intel все-таки соотвествует заявленной, поскольку прирост 3-х кратный, а количество ядер увеличилось в 2 раза. Как и процессора AMD - количество ядер увеличилось в 2 раза при примерно одинаковой тактовой частоте, и проивзводительность увеличилась также почти двукратно.

Примечания

Для сравнения сведения из "Википедии", статья "ФЛОПС"
Пиковые значения вычислений двойной точности (float64)

1) Цитата из "Википедии", статья "AMD FX" В 2015 году AMD обвинили в недостоверной рекламе количества ядер в линейке FX. В заявлении говорилось, что, поскольку ядра серии FX используют общие ресурсы, такие как FPU, фактическое количество ядер не соответствовало заявленному.

2) Intel Core 2 Duo E6600 2,4 ГГц, 2 ядра (2006) — 19,2 Гфлопс/с

3) Intel Core 2 Quad Q8300 2,5 ГГц, 4 ядра (2008) — 40 Гфлопс/с

4) AMD FX-8350 4 ГГц, 8 ядер (2012) — 128 Гфлопс/с
По два 128 разрядных FMAC блока в каждом модуле, объединяющем пару ядер, работающих на частоте 4 ГГц: 4х4х2х2х128/64 = 128 ГФлоп/с пиковой производительности при вычислениях двойной точности