Открыть сервис

LINPACK

LINPACK — это набор тестов производительности (бенчмарков), предназначенный для измерения вычислительной способности компьютерных систем при решении плотных систем линейных алгебраических уравнений методом LU-разложения. Разработан в конце 1970-х годов Джеком Донгаррой, Кливом Молером и другими сотрудниками Аргоннской национальной лаборатории (США). LINPACK является одним из наиболее известных и долгоживущих бенчмарков в области высокопроизводительных вычислений (HPC) и используется для составления рейтинга самых мощных суперкомпьютеров мира TOP500.

История

Первоначально LINPACK был не тестом, а библиотекой подпрограмм на языке Fortran для решения различных задач линейной алгебры. Библиотека LINPACK была выпущена в 1979 году и стала широко распространённым инструментом для научных расчётов. Она включала в себя подпрограммы для решения систем линейных уравнений, вычисления определителей, обращения матриц и оценки числа обусловленности, используя методы Гаусса с частичным выбором главного элемента.

В середине 1980-х годов, с ростом числа векторных и параллельных компьютеров, возникла необходимость в стандартизированном способе сравнения их производительности. Джек Донгарра и его коллеги предложили использовать решение системы линейных уравнений с помощью LU-разложения из библиотеки LINPACK в качестве эталонного теста. Первоначально тест был ориентирован на матрицы размером 100×100, что было актуально для машин того времени.

С развитием технологий тест эволюционировал. Появились версии для параллельных систем (MPI, OpenMP), а размер решаемой задачи стал варьироваться. В 1993 году был запущен проект TOP500, который с самого начала использовал результаты теста LINPACK для ранжирования суперкомпьютеров. С тех пор LINPACK остаётся основным критерием для включения в этот список, несмотря на критику за узкую специализацию.

Методология

Тест LINPACK измеряет скорость, с которой компьютерная система решает плотную (то есть с ненулевыми элементами) систему линейных уравнений вида Ax = b. Матрица A имеет размер N×N, где N — порядок системы. Решение выполняется с помощью LU-разложения с частичным выбором главного элемента, которое является численно устойчивым прямым методом.

Основные этапы выполнения теста:

  1. Генерация случайной матрицы A и вектора правой части b.
  2. Выполнение LU-разложения матрицы A (факторизация).
  3. Решение треугольных систем (прямая и обратная подстановка) для получения вектора x.
  4. Проверка точности решения путём вычисления невязки.

Производительность измеряется в количестве операций с плавающей запятой в секунду (FLOPS). Для задачи размером N теоретическое количество операций, необходимых для LU-разложения, составляет примерно (2/3) * N^3. Фактическая производительность вычисляется как отношение этого числа операций ко времени выполнения теста.

Разновидности теста

Существует несколько версий теста LINPACK, различающихся размером задачи и требованиями к точности:

  • LINPACK N=100: Классический тест для малых машин. Решает систему с матрицей 100×100. Требует около 1 МБ оперативной памяти. Используется для оценки производительности рабочих станций и персональных компьютеров.
  • LINPACK N=1000: Тест для средних систем. Решает систему с матрицей 1000×1000. Требует около 8 МБ памяти. Часто используется для тестирования серверов и кластеров начального уровня.
  • HPL (High-Performance LINPACK): Современная версия для параллельных систем с распределённой памятью. Использует библиотеки MPI (Message Passing Interface) и BLAS (Basic Linear Algebra Subprograms). Размер задачи N выбирается максимально возможным, чтобы задействовать всю доступную память суперкомпьютера. Именно результаты HPL используются для рейтинга TOP500.

Критика

LINPACK, несмотря на свою широкую распространённость, подвергается критике со стороны специалистов в области HPC. Основные претензии:

  • Узкая специализация: Тест измеряет производительность только на одной задаче — плотном LU-разложении. Реальные научные и инженерные приложения (моделирование климата, гидродинамика, квантовая химия) часто используют разреженные матрицы, быстрые преобразования Фурье, методы Монте-Карло и другие алгоритмы, которые имеют совершенно иные профили доступа к памяти и коммуникационные паттерны.
  • Высокая вычислительная интенсивность: LU-разложение имеет высокое отношение числа арифметических операций к числу обращений к памяти (вычислительная интенсивность). Это позволяет достичь высокой доли пиковой производительности на современных процессорах, особенно с использованием оптимизированных библиотек BLAS. Реальные приложения часто имеют гораздо меньшую вычислительную интенсивность и сильнее ограничены пропускной способностью памяти.
  • Оптимизация под тест: Производители систем и разработчики программного обеспечения могут специально оптимизировать свои продукты для достижения высоких результатов в HPL, что не всегда приводит к улучшению производительности в реальных задачах. Использование специализированных библиотек (например, Intel MKL, AMD ACML, IBM ESSL) и ручная настройка параметров MPI позволяют существенно завысить результат.
  • Игнорирование энергопотребления: До недавнего времени LINPACK не учитывал энергоэффективность. Высокая производительность часто достигается за счёт огромного энергопотребления. Для решения этой проблемы был создан рейтинг Green500, который использует LINPACK, но нормирует производительность на ватт потребляемой мощности.

Применение

Основное применение LINPACK — это ранжирование суперкомпьютеров в списке TOP500. Результаты теста публикуются дважды в год (в июне и ноябре) на международных конференциях по суперкомпьютерам (ISC High Performance и SC Conference Series).

Кроме того, LINPACK используется для:

  • Приёмочных испытаний: При установке нового суперкомпьютера заказчик часто требует демонстрации определённой производительности на HPL.
  • Сравнительного анализа: Исследователи и системные администраторы используют LINPACK для оценки производительности различных конфигураций оборудования (процессоров, памяти, сети).
  • Образовательных целей: Тест является простым и понятным примером параллельного алгоритма, используемым в курсах по параллельным вычислениям.

Значение

LINPACK сыграл ключевую роль в развитии суперкомпьютерной индустрии. Он предоставил единый, объективный и воспроизводимый критерий для сравнения систем, стимулируя гонку производительности. Благодаря TOP500, LINPACK стал самым известным бенчмарком в мире, а его результаты — предметом национальной гордости и маркетинговых кампаний. Однако, осознание его ограничений привело к разработке более комплексных тестов, таких как HPCG (High Performance Conjugate Gradients) и HPL-AI, которые лучше отражают производительность в реальных приложениях, включая задачи искусственного интеллекта.

Источники

  • Dongarra, J. J., Luszczek, P., & Petitet, A. (2003). The LINPACK Benchmark: past, present and future. Concurrency and Computation: Practice and Experience, 15(9), 803-820.
  • TOP500 Supercomputer Sites. (2024). The LINPACK Benchmark. Официальный сайт проекта.
  • Bailey, D. H., Barszcz, E., Barton, J. T., Browning, D. S., Carter, R. L., Dagum, L., ... & Simon, H. D. (1991). The NAS parallel benchmarks. The International Journal of Supercomputer Applications, 5(3), 63-73. (Контекст альтернативных бенчмарков).
  • Intel Corporation. (2023). Intel Math Kernel Library (Intel MKL) — LINPACK Benchmark. Документация.
  • Hager, G., & Wellein, G. (2010). Introduction to High Performance Computing for Scientists and Engineers. CRC Press.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →