Тесты производительности LINPACK

Тесты производительности LINPACK служат для измерения вычислительной производительности компьютеров при обработке чисел с плавающей запятой. Созданы Джеком Донгаррой в 1979, измеряют скорость решения компьютером плотной системы линейных уравнений (СЛАУ) Ax=b, где A является матрицей размера n на n. Подобная задача часто возникает в области машиностроения.

Бенчмарк Linpack
Тип тест производительности
Авторы Джек Донгарра, Jim Bunch, Cleve Moler, Gilbert Stewart
Первый выпуск 1979 (1979)
Сайт netlib.org/benchmark/hpl/

Последняя версия этих тестов производительности используется для составления рейтинга TOP500, списка, в котором перечислены самые высокопроизводительные суперкомпьютеры в мире.[1][2]

Целью создания тестов является оценка скорости решения компьютером реальных задач. Однако оценка при помощи одного теста является упрощением, поскольку ни одна вычислительная задача не может отражать общую производительность компьютерной системы. Производительность в тесте LINPACK предоставляет данные для уточнения пиковой производительности, предоставляемой производителем компьютера (пиковая производительность — это максимальная теоретическая производительность, которую может достичь компьютер, рассчитанная как произведение тактовой частоты процессора на число операций выполняемых за такт), фактическая производительность всегда будет ниже максимальной производительности[3]. Производительность компьютера представляет собой сложную характеристику, которая зависит от множества взаимосвязанных компонентов. Производительность, измеренная эталонным тестом LINPACK показывает количество операций над 64-битными числами с плавающей запятой (сложений и умножений), которые компьютер выполнял за секунду, соотношение, обозначаемое «FLOPS». Однако производительность компьютера при работе с реальными приложениями, вероятно, будет значительно ниже максимальной производительности, достигаемой при выполнении соразмерного теста LINPACK.[4]

Название этих тестов получено пакета LINPACK, набора алгебраических подпрограмм Фортрана, широко использовавшихся в 1980-х годах и изначально тесно связанных с тестом LINPACK. С тех пор пакет LINPACK был заменен другими библиотеками.

История править

Тест производительности LINPACK впервые появился в 1979 году как приложение к руководству пользователя библиотеки математических функций LINPACK.[5]

LINPACK был разработан, чтобы помочь пользователям оценить время, необходимое их компьютерным системам для решения задач при помощи пакета LINPACK. Для этого экстраполируются результаты производительности, полученные на 23 разных компьютерах, решающих задачу с размером матрицы 100 на 100 элементов.

Этот размер задачи был выбран с учетом характерных размеров памяти и производительности процессоров в ту эпоху:

  • 10000 чисел с плавающей запятой со значением от −1 до 1 генерируются случайным образом для заполнения общей плотной матрицы,
  • затем производится замер длительности LU-разложения с частичным поворотом.

За последующие годы были выпущены дополнительные версии с увеличенными различными размерами задач, например с матрицами в 300 на 300 и 1000 на 1000 чисел. Также появились реализации, использующие аппаратные возможности по ускорению операций матрица-вектор и матрица-матрица.[6] Параллельная обработка данных появилась в варианте теста LINPACK Parallel в конце 1980-х годов.[3]

В 1991 году тест LINPACK был модифицирован для[7] решения задач произвольного размера, что позволило высокопроизводительным компьютерам (HPC) приблизиться к своей асимптотической производительности.

С 1993 года этот тест начал использоваться для составления рейтинга TOP500.

Тесты производительности править

LINPACK 100 править

LINPACK 100 очень близок к оригинальному тесту, опубликованному в 1979 году в руководстве руководстве пользователя LINPACK (ISBN 089871172X). Решение СЛАУ производится методом исключения Гаусса с частичным поворотом, с выполнением 2 / 3 n³ + 2n² операций над числами с плавающей точкой, где n равно 100, а плотная матрица A имеет размер 100 на 100. Малый размер матрицы и отсутствие программной гибкости не многим современным компьютерам продемонстрировать на этом тесте производительность, близкую к максимальной. Тем не менее, этот тест все еще может быть полезным при прогнозировании производительности в численно интенсивном пользовательском коде, скомпилированном с оптимизациями.[3]

LINPACK 1000 править

LINPACK 1000 увеличивает размер матрицы до 1000 на 1000 элементов и обеспечивает производительность, более близкую к максимальной для компьютера. Допускаются изменения в алгоритме, однако не допускается снижение относительной точности решения. При подсчете производительности теста всегда используется формула для количества выполненных плавающих операций 2 / 3n³ + 2n², при значении n = 1000.[3]

HPLinpack править

Предыдущие поколения теста не подходили для тестирования параллельных компьютеров,[8] и был разработан так называемый тест «Linpack’s Highly Parallel Computing», он же HPLinpack. В новом тесте размер задачи n может быть увеличен до размера, необходимого для оптимизации результатов работы машины. Все еще используется формула числа операций 2 / 3n³ + 2n², независимо от фактически используемого алгоритма. Использование алгоритма Штрассена не допускается, поскольку оно искажает реальную скорость выполнения.[9] Точность найденного решения должна быть такой, чтобы выполнялось следующее свойство:

 , где   это точность машины, а n это размер задачи,[10]   это норма матрицы, а   соответствует обозначению big-O («O» большое).

Для каждой компьютерной системы сообщаются следующие величины:[3]

  • R max : производительность в GFLOPS для самой большой проблемы, выполненной на машине.
  • N max : размер самой большой проблемы, выполненной на машине.
  • N 1/2 : размер, при котором достигается половина от производительности Rmax.
  • R peak: теоретическая пиковая производительность в GFLOPS для машины.

Эти результаты используются для составления списка TOP500 самых производительных суперкомпьютеров в мире, а также Green500. Публикуется два раза в год.[1]

Реализация тестов LINPACK править

В предыдущем разделе описаны основные правила для эталонных тестов. Реальная реализация программы может отличаться, существуют варианты для языков Fortran,[11] C[12] и Java[13].

HPL править

 
Вычислительная мощность 500 наиболее мощных компьютерных систем в мире (рейтинг Top500) с 1993 года по результатам теста производительности Linpack (HPL).

HPL — мобильная реализация задачи HPLinpack, созданная на языке программирования Си. Изначально она служила примером реализации, но затем стала широко использоваться для получения данных для списка TOP500, хотя могут использоваться и иные реализации и пакеты. HPL создает линейную систему уравнений порядка n со случайными коэффициентами и затем решает её, используя LU-разложение с частичным поворотом строк. Для работы реализации требуются установленные реализации MPI (библиотеки передачи сообщений) и математическая библиотека: BLAS, либо VSIPL[14].

В целом, данная реализация имеет следующие характеристики:[15][16]

  • Циклическое распределение данных в плоской решетке (в 2D блоках).
  • LU-разложение в варианте с просмотром правого элемента и различной глубиной упреждения (look-ahead).
  • Рекурсивная факторизация панелей.
  • Шесть различных методов групповой рассылки данных (broadcast).
  • Алгоритм обмена-рассылки с уменьшенными требованиями к пропускной способности.
  • Обратная подстановка с упреждением на глубину 1.

Критика править

Иногда заявляется, что успех теста LINPACK связан с хорошей масштабируемостью задачи HPLinpack[17], тому, что результатом теста является одно число, простое для сравнения, и большим количеством исторических данных.[18] Однако уже вскоре после его появления тест LINPACK подвергся критике за демонстрирование уровней производительности, «как правило, недоступных для всех, кроме очень небольшого числа программистов, утомительно оптимизирующих свой код для данного компьютера и только для него».[19] Бенчмарк проверяет скорость решения плотных линейных систем, но эта задача не является репрезентативной для всех операций, обычно производимых в научных вычислениях.[20] Джек Донгарра, соавтор тестов LINPACK и списка TOP500, отмечал что эти тесты уделяют больше значения только «пиковой» скорости процессора и их числу, недостаточно при этом нагружая локальные шины памяти и сетевые межсоединения.[21]

Том Даннинг-младший, директор Национального центра суперкомпьютерных приложений описал тесте LINPACK так: «Тест Linpack — одно из тех интересных явлений, полезность которых высмеивается почти каждым, кто знает о нём. Они понимают его ограничения, но тест пользуется популярностью, поскольку показывает одно число и использовался на протяжении многих лет.»[22]

По словам Донгарры, «организаторы рейтинга Top500 активно стремятся расширить охват сравнительных тестов производительности», поскольку «важно включить больше характеристик производительности и сигнатур для каждого участника рейтинга».[23] Один из вариантов дополнения тестов для TOP500 — набор HPC Challenge Benchmark[24]. С появлением суперкомпьютеров петафлопсного уровня производительности (Petascale), был предложен тест Graph500, измеряющий число пройденных ребер в секунду (TEPS) в качестве альтернативы FLOPS, измеряемой LINPACK[25]. Другой альтернативой является тест производительности HPCG, предложенный Донгаррой.[26][27]

Время выполнения теста править

По словам Джека Донгарры, время работы теста HPLinpack, необходимое для получения хороших результатов постепенно увеличивается. На конференции в 2010 году он заявил, что уже через «несколько лет» ожидает увеличения длительности запуска до порядка 2,5 дней.[28]

См. также править

Примечания править

  1. 1 2 The Linpack Benchmark, TOP500 Supercomputing Sites. Дата обращения: 10 февраля 2015. Архивировано 21 мая 2012 года.
  2. Тесты производительности процессора — LINPACK // parallel.ru / Архивная копия от 13 ноября 2018 на Wayback Machine
  3. 1 2 3 4 5 Dongarra, Jack J.; Luszczek, Piotr; Petitet, Antoine (2003), "The LINPACK Benchmark: past, present and future" (PDF), Concurrency and Computation: Practice and Experience, John Wiley & Sons, Ltd.: 803—820 Архивная копия от 20 января 2019 на Wayback Machine
  4. Jack Dongarra interview by Sander Olson Архивная копия от 4 марта 2016 на Wayback Machine
  5. Dongarra, J.J.; Moler, C.B.; Bunch, J.R.; Stewart, G.W. (1979), LINPACK: users' guide, SIAM, ISBN 9780898711721
  6. Dongarra, Jack (1988), "The LINPACK benchmark: An explanation" (PDF), Supercomputing, Springer Berlin/Heidelberg: 456—474 Архивная копия от 4 апреля 2019 на Wayback Machine
  7. High Performance Linpack Benchmark (PDF), Дата обращения: 10 февраля 2015 Архивная копия от 4 марта 2016 на Wayback Machine
  8. Bailey, D.H.; Barszcz, E.; Barton, J.T.; Browning, D.S.; Carter, R.L.; Dagum, L.; Fatoohi, R.A.; Frederickson, P.O.; Lasinski, T.A.; Schreiber, R.S.; Simon, H.D.; Venkatakrishnan, V.; Weeratunga, S.K. (1991), "The NAS parallel benchmarks summary and preliminary results", Supercomputing: 158—165 {{citation}}: Неизвестный параметр |conference= игнорируется (справка)
  9. LINPACK FAQ - Can I use Strassen’s Method when doing the matrix multiples in the HPL benchmark or for the Top500 run? Дата обращения: 10 февраля 2015. Архивировано 1 сентября 2009 года.
  10. LINPACK FAQ - To what accuracy must be the solution conform? Дата обращения: 10 февраля 2015. Архивировано 1 сентября 2009 года.
  11. Linpack benchmark program in Fortran. Дата обращения: 10 февраля 2015. Архивировано 20 февраля 2015 года.
  12. Linpack benchmark program in C. Дата обращения: 10 февраля 2015. Архивировано 20 февраля 2015 года.
  13. Linpack benchmark program in Java. Дата обращения: 10 февраля 2015. Архивировано 10 февраля 2015 года.
  14. HPL - A Portable Implementation of the High-Performance Linpack Benchmark for Distributed-Memory Computers. Дата обращения: 10 февраля 2015. Архивировано 15 февраля 2015 года.
  15. HPL algorithm. Дата обращения: 13 декабря 2019. Архивировано 25 октября 2019 года.
  16. HPL overview. Дата обращения: 10 февраля 2015. Архивировано 10 февраля 2015 года.
  17. An interview with supercomputer legend Jack Dongarra (24 мая 2012). Дата обращения: 13 декабря 2019. Архивировано из оригинала 3 февраля 2013 года.
  18. Haigh, Thomas An interview with Jack J. Dongarra (2004). — «LINPACK is a benchmark that people often cite because there’s such a historical data base of information there, because it’s fairly easy to run, it’s fairly easy to understand, and it captures in some sense the best and worst of programming.» Дата обращения: 13 декабря 2019. Архивировано 12 января 2021 года.
  19. Hammond, Steven (1995), Beyond Machoflops: Getting MPPs Into the Production Environment Архивировано 13 июля 2012 года.
  20. Gahvari, Hormozd; Hoemmen, Mark; Demmel, James; Yelick, Katherine (2006), "Benchmarking Sparse Matrix-Vector Multiply in Five Minutes", SPEC Benchmark Workshop (PDF) Архивная копия от 29 января 2012 на Wayback Machine
  21. Dongarra, Jack J. (2007), "The HPC Challenge Benchmark: A Candidate for Replacing Linpack in the Top500?", SPEC Benchmark Workshop (PDF) Архивная копия от 4 марта 2021 на Wayback Machine
  22. Christopher Mims (2010-11-08). "Why China's New Supercomputer Is Only Technically the World's Fastest". Архивировано из оригинала 21 октября 2012. Дата обращения: 22 сентября 2011.
  23. Meuer, Martin An interview with supercomputing legend jack dongarra (24 мая 2002). Дата обращения: 10 февраля 2015. Архивировано из оригинала 3 февраля 2013 года.
  24. Luszczek, Piotr; Dongarra, Jack J.; Koester, David; Rabenseifner, Rolf; Lucas, Bob; Kepner, Jeremy; Mccalpin, John; Bailey, David; Takahashi, Daisuke (2005), Introduction to the HPC Challenge Benchmark Suite (PDF) Архивная копия от 1 марта 2021 на Wayback Machine
  25. Рейтинг Top500 и прогресс высокопроизводительных вычислений (англ.). Открытые системы. СУБД, 2006 №1 (1 февраля 2016). Дата обращения: 13 декабря 2019. Архивировано 13 декабря 2019 года.
  26. Hemsoth, Nicole (2014-06-26). "New HPC Benchmark Delivers Promising Results". HPCWire. Архивировано из оригинала 8 сентября 2014. Дата обращения: 8 сентября 2014.
  27. Суперкомпьютеры: новые архитектуры требуют новых методов измерения. itWeek (27 ноября 2015). Дата обращения: 13 декабря 2019. Архивировано 5 апреля 2022 года.
  28. Dongarra, Jack J. (2010), LINPACK Benchmark with Time Limits on Multicore & GPU Based Accelerators (PDF) {{citation}}: Неизвестный параметр |conference= игнорируется (справка) Архивная копия от 17 января 2014 на Wayback Machine

Ссылки править