Тесты LINPACK Benchmarks являются мерой вычислительной мощности системы с плавающей запятой . Введенные Джеком Донгаррой , они измеряют, насколько быстро компьютер решает плотную систему линейных уравнений размера n на n Ax = b , что является распространенной задачей в инженерии .
Последняя версия этих тестов используется для составления списка TOP500 самых мощных суперкомпьютеров в мире. [1]
Цель состоит в том, чтобы приблизительно оценить, насколько быстро компьютер будет работать при решении реальных задач. Это упрощение, поскольку ни одна вычислительная задача не может отразить общую производительность компьютерной системы. Тем не менее, производительность теста LINPACK может обеспечить хорошую корректировку пиковой производительности, заявленной производителем. Пиковая производительность — это максимальная теоретическая производительность, которую может достичь компьютер, рассчитываемая как частота машины в циклах в секунду, умноженная на количество операций за цикл, которые он может выполнить. Фактическая производительность всегда будет ниже максимальной производительности. [2] Производительность компьютера — это сложный вопрос, который зависит от многих взаимосвязанных переменных. Производительность, измеряемая тестом LINPACK, состоит из количества 64-битных операций с плавающей запятой , обычно сложения и умножения, которые компьютер может выполнить в секунду, также известных как FLOPS . Однако производительность компьютера при запуске реальных приложений, скорее всего, будет сильно отставать от максимальной производительности, которую он достигает при выполнении соответствующего теста LINPACK. [3]
Название этих тестов происходит от пакета LINPACK , набора алгебраических подпрограмм Фортрана , широко используемых в 1980-х годах и изначально тесно связанных с тестом LINPACK. Пакет LINPACK с тех пор был заменен другими библиотеками.
Отчет о тестировании LINPACK впервые появился в 1979 году как приложение к руководству пользователя LINPACK . [4]
LINPACK был разработан, чтобы помочь пользователям оценить время, необходимое их системам для решения проблемы с использованием пакета LINPACK, путем экстраполяции результатов производительности, полученных 23 различными компьютерами, решающими матричную задачу размером 100.
Этот размер матрицы был выбран из-за ограничений памяти и процессора на тот момент:
С годами были выпущены дополнительные версии с различными размерами задач, такими как матрицы порядка 300 и 1000, а также ограничениями, что открыло новые возможности оптимизации, поскольку аппаратные архитектуры начали реализовывать матрично-векторные и матрично-матричные операции. [5]
Параллельная обработка также была представлена в тесте LINPACK Parallel в конце 1980-х годов. [2]
В 1991 году LINPACK был модифицирован для [6] решения задач произвольного размера, что позволило высокопроизводительным компьютерам (HPC) приблизиться к их асимптотической производительности.
Два года спустя этот тест был использован для измерения эффективности первого списка TOP500 .
LINPACK 100 очень похож на оригинальный тест, опубликованный в 1979 году вместе с руководством пользователя LINPACK. Решение получается путем исключения Гаусса с частичным поворотом , с 2/3n³ + 2n² операций с плавающей запятой, где n равно 100, порядку плотной матрицы A , которая определяет проблему. Его небольшой размер и отсутствие гибкости программного обеспечения не позволяют большинству современных компьютеров достичь предела производительности. Тем не менее, прогнозирование производительности в коде, написанном пользователем, с интенсивным числом вычислений все равно может быть полезно с помощью оптимизации компилятора. [2]
LINPACK 1000 может обеспечить производительность, близкую к пределу возможностей машины, поскольку в дополнение к задаче большего размера и матрице порядка 1000 возможны изменения в алгоритме. Единственным ограничением является то, что относительная точность не может быть уменьшена, а количество операций всегда будет считаться равным 2/3n³ + 2n², при n = 1000. [2]
Предыдущие тесты не подходят для тестирования параллельных компьютеров, [7] и был представлен так называемый тест Linpack's Highly Parallel Computing, или HPLinpack. В HPLinpack размер n задачи можно сделать настолько большим, насколько это необходимо для оптимизации результатов производительности машины. Опять же, 2/3n³ + 2n² будет считаться количеством операций независимо от используемого алгоритма. Использование алгоритма Штрассена не допускается, поскольку он искажает реальную скорость выполнения. [8] Точность должна быть такой, чтобы удовлетворялось следующее выражение:
, где — точность машины, а n — размер задачи, [9] — матричная норма (наибольшая сумма строк [10] ) и соответствует обозначению big-O .
Для каждой компьютерной системы сообщаются следующие величины: [2]
Эти результаты используются для составления списка TOP500 два раза в год с участием самых мощных компьютеров в мире. [1] TOP500 измеряет их в формате двойной точности с плавающей запятой (FP64). Отношение Rmax к Rpeak называется параллельной эффективностью или эффективностью HPL. [11] Обычно оно тем ниже, чем больше узлов имеет система из-за накладных расходов на связь. Например, Cray Y-MP 1990-х годов достигает эффективности HPL около 90% [12] , а Frontier достигает около 70% в 2023 году. [13]
В предыдущем разделе описаны основные правила для тестов. Фактическая реализация программы может отличаться, некоторые примеры доступны на Fortran , [14] C [15] или Java . [16]
HPL — это переносимая реализация HPLinpack, написанная на языке C первоначально в качестве руководства, но теперь широко используемая для предоставления данных для списка TOP500, хотя можно использовать и другие технологии и пакеты. HPL генерирует линейную систему уравнений порядка n и решает ее, используя LU-разложение с частичным поворотом строк. Для его работы требуются установленные реализации MPI и BLAS или VSIPL . [17]
Грубо говоря, алгоритм имеет следующие характеристики: [18] [19]
Говорят, что тест LINPACK добился успеха благодаря масштабируемости [20] HPLinpack, тому факту, что он генерирует одно число, что делает результаты легко сопоставимыми, а также обширной базе исторических данных, с которой он связан. [21] Однако вскоре после выпуска тест LINPACK подвергся критике за обеспечение уровня производительности, «обычно недостижимого для всех, за исключением очень немногих программистов, которые утомительно оптимизируют свой код для этой машины и только для этой машины», [22] потому что он только тестирует разрешение плотных линейных систем, которые не отражают все операции, обычно выполняемые в научных вычислениях. [23] Джек Донгарра , основная движущая сила тестов LINPACK, сказал, что, хотя они подчеркивают только «пиковую» скорость процессора и количество процессоров, недостаточной нагрузки уделяется локальной пропускной способности и сети. [24]
Том Даннинг-младший , директор Национального центра суперкомпьютерных приложений , так сказал о тесте LINPACK: «Бенч-тест Linpack — это один из тех интересных феноменов: почти любой, кто знает о нем, будет высмеивать его полезность. ограничения, но у него есть мнение, потому что это единственное число, на которое мы все верили на протяжении многих лет». [25]
По словам Донгарры, «организаторы Top500 активно стремятся расширить объем отчетов о тестах», потому что «важно включать больше характеристик производительности и сигнатур для конкретной системы». [26] Одной из возможностей, которая рассматривается для расширения эталона для TOP500, является пакет HPC Challenge Benchmark Suite. [27] С появлением петамасштабных компьютеров количество пройденных ребер в секунду начало становиться дополнительным показателем к FLOPS, измеряемому LINPACK. Еще одна такая метрика — бенчмарк HPCG , предложенный Донгаррой. [28]
По словам Джека Донгарры , ожидается, что время работы, необходимое для получения хороших результатов производительности с помощью HPLinpack, увеличится. На конференции, состоявшейся в 2010 году, он заявил, что ожидает, что время работы составит 2,5 дня через «несколько лет». [29]
{{cite book}}
: |journal=
игнорируется ( помощь )CS1 maint: местоположение ( ссылка ) CS1 maint: местоположение отсутствует издатель ( ссылка )LINPACK — это эталон, на который люди часто ссылаются, потому что там есть такая историческая база данных, потому что его довольно легко использовать, его довольно легко понять, и он в некотором смысле отражает лучшее и худшее в программировании.