NAS Parallel Benchmarks ( NPB ) — это набор тестов, нацеленных на оценку производительности высокопараллельных суперкомпьютеров . Они разрабатываются и поддерживаются NASA Advanced Supercomputing (NAS) Division (ранее NASA Numerical Aerodynamic Simulation Program), базирующимся в NASA Ames Research Center . NAS запрашивает результаты производительности для NPB из всех источников. [1]
Традиционные бенчмарки, существовавшие до NPB, такие как Livermore loops , LINPACK Benchmark и NAS Kernel Benchmark Program, обычно были специализированы для векторных компьютеров. Они, как правило, страдали от недостатков, включая ограничения настройки, препятствующие параллелизму, и недостаточные размеры задач, что делало их непригодными для высокопараллельных систем. Столь же непригодными были полномасштабные прикладные бенчмарки из-за высокой стоимости портирования и отсутствия автоматических программных инструментов параллелизации. [2] В результате NPB были разработаны в 1991 году [3] и выпущены в 1992 году [4] для решения возникшей в результате нехватки бенчмарков, применимых к высокопараллельным машинам.
Первая спецификация NPB признавала, что эталонные тесты должны включать
В свете этих рекомендаций было признано, что единственным жизнеспособным подходом является использование набора «бумажно-карандашных» контрольных показателей, которые определяют набор проблем только алгоритмически и оставляют большую часть деталей реализации на усмотрение разработчика в определенных необходимых пределах.
NPB 1 определил восемь бенчмарков, каждый из которых был в двух размерах задач, названных Классом A и Классом B. Были предоставлены примеры кодов, написанные на Fortran 77. Они использовали небольшой размер задачи Класса S и не были предназначены для целей бенчмаркинга. [2]
С момента своего выпуска NPB 1 продемонстрировал две основные слабости. Во-первых, из-за его спецификации «бумага-и-карандаш» поставщики компьютеров обычно сильно настраивали свои реализации, так что их производительность становилась сложной для достижения научными программистами. Во-вторых, многие из этих реализаций были запатентованными и не были общедоступными, что фактически скрывало их методы оптимизации. Во-вторых, размеры задач NPB 1 отставали от развития суперкомпьютеров, поскольку последние продолжали развиваться. [3]
NPB 2, выпущенный в 1996 году, [5] [6] поставлялся с реализациями исходного кода для пяти из восьми бенчмарков, определенных в NPB 1, чтобы дополнить, но не заменить NPB 1. Он расширил бенчмарки с помощью актуального размера проблемы Class C. Он также изменил правила отправки результатов бенчмаркинга. Новые правила включали явные запросы на выходные файлы, а также измененные исходные файлы и скрипты сборки для обеспечения публичной доступности изменений и воспроизводимости результатов. [3]
NPB 2.2 содержал реализации еще двух тестов производительности. [5] NPB 2.3 1997 года был первой полной реализацией в MPI . [4] Он поставлялся с последовательными версиями тестов производительности, соответствующими параллельным версиям, и определял размер проблемы класса W для систем с небольшим объемом памяти. [7] NPB 2.4 2002 года предлагал новую реализацию MPI и вводил еще один еще больший размер проблемы класса D. [6] Он также дополнял один тест производительности подтипами с интенсивным вводом-выводом . [4]
NPB 3 сохранил реализацию MPI из NPB 2 и вышел в большем количестве разновидностей, а именно OpenMP , [8] Java [9] и High Performance Fortran . [10] Эти новые параллельные реализации были получены из последовательных кодов в NPB 2.3 с дополнительными оптимизациями. [7] NPB 3.1 и NPB 3.2 добавили еще три бенчмарка, [11] [12] которые, однако, были доступны не во всех реализациях; NPB 3.3 ввел размер задачи класса E. [7] На основе однозонного NPB 3 был выпущен набор многозонных бенчмарков, использующих преимущества гибридной модели программирования MPI/OpenMP, под названием NPB-Multi-Zone ( NPB-MZ ) для «тестирования эффективности парадигм и инструментов многоуровневой и гибридной параллелизации». [1] [13]
В NPB 3.3 определены одиннадцать контрольных показателей, которые обобщены в следующей таблице.