Россия, г. Саранск |
Оценка производительности кластерных систем
4.2.2. NAS Parallel Benchmarks
Набор тестов NAS Parallel Benchmarks (NPB) является, пожалуй, не менее распространенным, чем тест Linpack. Текущую реализацию, выполненную специалистами NASA Ames Research Center, можно загрузить с сайта http://www.nas.nasa.gov/Software/NPB (на момент написания данного материала была доступна версия 3.3).
4.2.2.1. История теста
В отличие от теста Linpack, первые версии которого были разработаны в конце 70-х годов, комплекс тестов NPB появился сравнительно недавно. Он был разработан в начале 90-х в исследовательском центре NASA Ames Research Center в рамках программы Numerical Aerodynamic Simulation (NAS), целью которой было обеспечение возможности проведения за несколько часов полномасштабного численного моделирования полета космического аппарата. NPB должен был стать универсальным средством для оценки производительности суперкомпьютеров. Поскольку в рамках проекта NAS создавалось вполне определенное программное обеспечение для решения известных задач гидро- и аэродинамического моделирования, тестовый комплекс включает в себя ядра для наиболее распространенных задач этих классов.
Несмотря на полную определенность с содержащимися в тестовом комплексе ядрами, NPB, по замыслу создателей является " paper and pencil " тестом, т.е. официально NPB лишь набор правил и рекомендаций, доступных "на бумаге" (таким образом, по приведенной выше ссылке доступна, вообще говоря, всего лишь одна из реализаций этого комплекса, выполненная самими исследователями из NASA Ames Research Center).
Правила NPB достаточно жесткие и определяют практически все вопросы, которые могут возникнуть в процессе разработки конкретной реализации:
- определены допустимые языки программирования;
- приведено исчерпывающее описание всех алгоритмов (ядер, приложений, генерации случайных чисел…);
- оговорены разрядности чисел с плавающей запятой;
- определены разрешения/запрещения для распараллеливания некоторых видов алгоритмов (например, поиск минимума в векторе);
- есть договоренности об организации ввода/вывода;
- регламентированы моменты замеров времени и, следовательно, включаемые в тест операции;
- определены правила публикации результатов тестов;
- сформулированы критерии оценки правильности полученных результатов;
- и многое, многое другое.
Как уже упоминалось, на сервере NASA доступны готовые реализации теста. До версии 2.0 программа позиционировалась как пример реализации, чтобы упростить создание своей версии конечными пользователями. После версии 2.0 комплекс представляет собой по сути законченный продукт, настраиваемый для использования как с различными аппаратными платформами/операционными системами, так и с различными технологиями параллельного программирования - OpenMP/MPI. Для получения исходных кодов теста необходимо пройти регистрацию на сайте.
4.2.2.2 Решаемая задача
Тест состоит из ряда простых синтетических задач: ядер ( kernel benchmarks ) и псевдо-приложений ( application benchmarks ), эмулирующих вычисления на реальных задачах (в частности в области вычислительной гидро- и аэродинамики). В терминологии NPB ядра и приложения могут производить вычисления в определенных классах задач ( Problem Classes ):
Важно еще раз отметить, что все классы задач содержат один и тот же набор тестов, и отличие классов между собой состоит лишь в объеме обрабатываемых в тестах данных. Другими словами, класс А - это маленькие матрицы, B - большие, С - очень большие, D - огромные, E - гигантские (класс E введен сравнительно недавно и определен не для всех тестов). Например, для теста на LU-разложение это будет размерность исходной матрицы: 123, 643, 1023, 1623, 4083, 10203 для каждого из перечисленных выше классов соответственно.
В настоящий момент в NPB включено 5 ядер: EP, MG, СG, FT, IS:
- EP - Embarrassing Parallel. Вычисление интеграла методом Монте-Карло - тест "усложненного параллелизма" для измерения первичной вычислительной производительности плавающей арифметики. Этот тест минимального межпроцессорного взаимодействия и фактически определяет "чисто" вычислительные характеристики узла при работе с вещественной арифметикой. Межпроцессорные взаимодействия сводятся к окончательному объединению результатов, рассчитанных на каждом узле независимо от всех остальных. Этот тест может быть полезен, если на кластере будут решаться задачи, связанные с применением метода Монте-Карло. В алгоритме также учитывается время на форматирование и вывод данных.
- MG - simple 3D MultiGrid benchmark. Приближенное решение трехмерного уравнения Пуассона ("трехмерная решетка") в частных производных на сетке N x N x N с периодическими граничными условиями (функция на всей границе равна 0 за исключением заданных 20 точек). Размер сетки N определяется классом теста. Тестирует возможности системы выполнять как длинные, так и короткие передачи данных.
- CG - solving an unstructured sparse linear system by the Conjugate Gradient method. Вычисление наименьшего собственного значения больших, разреженных матриц методом сопряженных градиентов. Матрица является положительно определенной и симметричной. В тесте используется обратный степенной метод для нахождения наибольшего собственного числа матрицы. Тест применяется для оценки скорости передачи данных при отсутствии какой-либо регулярности.
- FT - 3-D Fast-Fourier Transform partial differential equation benchmark. Вычисление методом быстрого преобразования Фурье трехмерного уравнения в частных производных. Этот тест включает большое количество действий, оказывающих большую нагрузку на сетевое окружение (перемещение массивов данных). При создании программы, реализующей данный тест, могут использоваться библиотечные модули преобразования Фурье различной размерности.
- IS - Parallel Sort of small Integers. Параллельная сортировка N целых чисел. Тест не использует арифметические операции с плавающей точкой. На эффективность теста большое влияние оказывает первоначальное распределение чисел в памяти. Сортировка целых чисел является важной частью метода частиц ( particle method ).
Кроме ядер, пакет NPB предлагает ряд псевдо-приложений, которые эмулируют работу реальных программ по вычислительной гидродинамике. Отказаться от использования реальных приложений в пользу псевдо-приложений решено по нескольким причинам:
- сохранение настоящего исходного кода в тайне,
- облегчение работы с исходным кодом в вопросах портирования на другие архитектуры,
- легкость добавления новых компонентов,
- легкость масштабируемости кода для больших размерностей.
Алгоритмы приложений используют описанные выше ядра в том или ином виде и, в конечном итоге, сводятся к решению систем линейных алгебраических уравнений (СЛАУ) специального вида (впрочем, как и подавляющее большинство вычислительных задач). Основная масса машинного времени в таких задачах тратится именно на решение СЛАУ. Поэтому приложения можно охарактеризовать как итерационные методы решения СЛАУ. Таких приложений три: LU, SP, BT.
- LU - LU Solver.Тест выполняет решение системы уравнений с равномерно разреженной блочной треугольной матрицей методом симметричной последовательной верхней сверхрелаксации ( symmetric successive over-relaxation - SSOR ), к которой приводят трехмерные уравнения Навье-Стокса. Для распределения данных этому приложению требуется количество узлов, кратных степени двойки. Особенностью этого теста является его критичность ко времени передачи очень маленьких объемов данных между узлами (размер передаваемого сообщения в этом тесте составляет 40 байт).
- SP - Scalar Pentadiagonal. Тест выполняет решение нескольких независимых систем скалярных уравнений - пентадиагональные матрицы с преобладанием недиагональных членов.
- BT - Block Tridiagonal. Решение серии независимых систем уравнений - блочные трехдиагональные матрицы с преобладанием недиагональных элементов.
4.2.2.3. Использование теста
Для того, чтобы воспользоваться тестом, необходимо загрузить его дистрибутив - он включает в себя три версии теста - "стандартную", версию для технологии OpenMP и версию для технологии MPI. Все три версии содержат описанные выше ядра и псевдо-приложения. Отличаются версии наличием специализированных тестов для обмена данными в версиях OpenMP и MPI. Загруженные дистрибутивы содержат исходный код и makefile-ы, предназначенные для компиляции под различные платформы. Для компиляции также потребуется наличие какой-либо реализации MPI (в случае использования MPI-версии), или компилятор, поддерживающий технологию OpenMP (в случае использование OpenMP-версии).
Ниже приведен вывод теста IS для случая запуска на одном процессоре, для класса задачи A.
NAS Parallel Benchmarks 3.3 -- IS Benchmark Size: 8388608 (class A) Iterations: 10 Number of processes: 1 iteration 1 2 3 4 5 6 7 8 9 10 IS Benchmark Completed Class = A Size = 8388608 Iterations = 10 Time in seconds = 7.41 Total processes = 1 Compiled procs = 1 Mop/s total = 11.33 Mop/s/process = 11.33 Operation type = keys ranked Verification = SUCCESSFUL Version = 3.3 Compile date = 27 Jan 2008 Compile options: MPICC = cc CLINK = $(MPICC) CMPI_LIB = -L/usr/local/lib -lmpi CMPI_INC = -I/usr/local/include CFLAGS = -O CLINKFLAGS = -O Please send the results of this run to: NPB Development Team Internet: npb@nas.nasa.gov If email is not available, send this to: MS T27A-1 NASA Ames Research Center Moffett Field, CA 94035-1000 Fax: 650-604-3957