Тесты LINPACK являются мерой вычислительной мощности системы с плавающей точкой . Представленные Джеком Донгаррой , они измеряют, насколько быстро компьютер решает плотную систему линейных уравнений n на n Ax = b , что является распространенной задачей в инженерии .
Последняя версия этих тестов используется для составления списка TOP500 , в котором ранжируются самые мощные суперкомпьютеры мира. [1]
Цель состоит в том, чтобы приблизительно оценить, насколько быстро компьютер будет работать при решении реальных задач. Это упрощение, поскольку ни одна вычислительная задача не может отразить общую производительность компьютерной системы. Тем не менее, производительность теста LINPACK может обеспечить хорошую поправку по сравнению с пиковой производительностью, предоставляемой производителем. Пиковая производительность — это максимальная теоретическая производительность, которую может достичь компьютер, рассчитываемая как частота машины в циклах в секунду, умноженная на количество операций за цикл, которые она может выполнить. Фактическая производительность всегда будет ниже пиковой производительности. [2] Производительность компьютера — это сложный вопрос, который зависит от многих взаимосвязанных переменных. Производительность, измеряемая тестом LINPACK, состоит из количества 64-битных операций с плавающей точкой , как правило, сложений и умножений, которые компьютер может выполнить в секунду, также известных как FLOPS . Однако производительность компьютера при запуске реальных приложений, вероятно, будет намного ниже максимальной производительности, которую он достигает при запуске соответствующего теста LINPACK. [3]
Название этих бенчмарков происходит от пакета LINPACK , набора алгебраических подпрограмм Fortran, широко использовавшихся в 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 3 + 2n 2 операциями с плавающей точкой, где n равно 100, порядку плотной матрицы A , которая определяет проблему. Его небольшой размер и отсутствие гибкости программного обеспечения не позволяют большинству современных компьютеров достичь пределов производительности. Тем не менее, он все еще может быть полезен для прогнозирования производительности в интенсивном численном пользовательском коде с использованием оптимизации компилятора. [2]
LINPACK 1000 может обеспечить производительность, близкую к пределу машины, поскольку в дополнение к предложению большего размера проблемы, матрицы порядка 1000, возможны изменения в алгоритме. Единственными ограничениями являются то, что относительная точность не может быть уменьшена, а количество операций всегда будет считаться равным 2/3 n 3 + 2 n 2 , где n = 1000. [2]
Предыдущие тесты не подходят для тестирования параллельных компьютеров, [7] и был введен так называемый тест Linpack's Highly Parallel Computing, или тест HPLinpack. В HPLinpack размер n задачи может быть сделан настолько большим, насколько это необходимо для оптимизации результатов производительности машины. Еще раз, 2/3n 3 + 2n 2 будет взято в качестве количества операций, независимо от используемого алгоритма. Использование алгоритма Штрассена не допускается, поскольку он искажает реальную скорость выполнения. [8] Точность должна быть такой, чтобы выполнялось следующее выражение:
где
Для каждой компьютерной системы сообщаются следующие величины: [2]
Эти результаты используются для составления списка TOP500 дважды в год с самыми мощными компьютерами в мире. [1] TOP500 измеряет их в формате с плавающей точкой двойной точности (FP64). Отношение R max к R peak называется параллельной эффективностью или эффективностью HPL. [11] Обычно оно ниже, чем больше узлов в системе из-за накладных расходов на связь. Например, Cray Y-MP 1990-х годов достигает около 90% эффективности HPL, [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}}
: CS1 maint: местоположение ( ссылка ) CS1 maint: местоположение отсутствует издатель ( ссылка )LINPACK — это эталонный тест, на который часто ссылаются, потому что он содержит в себе огромную историческую базу данных, его довольно легко запустить, его довольно легко понять, и он в некотором смысле охватывает лучшее и худшее в программировании.