Московский государственный университет имени М.В.Ломоносова
Опубликован: 16.06.2008 | Доступ: свободный | Студентов: 764 / 147 | Оценка: 4.39 / 3.96 | Длительность: 07:59:00
Специальности: Программист
Дополнительный материал 3:

Приложение 3. Работа с тестом High Performance LINPACK

Для того, чтобы измерить производительность кластерной системы на тесте High Performance Linpack (HPL), потребуется сам тест и библиотека BLAS. Собственно тест HPL доступен по адресу http://www.netlib.org/benchmark/hpl/hpl.tgz. Настоятельно не рекомендуем использовать библиотеку BLAS, поставляемую с дистрибутивами Linux. Этот вариант очень неэффективен на современных вычислительных платформах, поскольку рассчитан на работу на процессорах Intel 80386. Наиболее удачными библиотеками, содержащими BLAS, являются:

Установите библиотеку BLAS (или содержащую BLAS), распакуйте архив с дистрибутивом HPL. Перейдите в созданный каталог, скопируйте из каталога setup любой файл вида Make.<ARCH>. Переименуйте его в Make.MyArch, где MyArch - произвольное название архитектуры узлов. Например, Lin_xeon. Теперь отредактируйте этот файл, указав пути к библиотекам BLAS и компиляторам.

Обязательно измените название переменной ARCH в соответствии с названием архитектуры. В качестве компиляторов Си, Фортран и линкеров укажите команды mpicc и mpif77. Переменные MPinc и MPlib укажите пустыми.

Теперь можно запустить команду make arch=MyArch ( MyArch -имя выбранной архитектуры). Если компиляция прошла успешно, перейдите в каталог bin/MyArch и убедитесь в наличии исполняемого файла xhpl. Скопируйте в этот каталог файл bin/HPL.dat и отредактируйте его в соответствии с конфигурацией кластера.

Для высоких значений производительности важно подобрать размер задачи так, чтобы использовалась вся оперативная память узлов. Подробное описание формата HPL.dat можно найти в файле TUNING. Особенно обратите внимание на строки 6 - это размеры используемых матриц, они всегда квадратные, и строки 11-12 - это варианты разбиения матрицы по процессорам.

Пример файла HPL.dat (слева указаны номера строк):

01: HPLinpack benchmark input file
02: Innovative Computing Laboratory, University of Tennessee
03: HPL.out      output file name (if any)
04: 6            device out (6=stdout,7=stderr,file
05: 2            # of problems sizes (N)
06: 25000 30000  Ns
07: 3            # of NBs
08: 200 224 250  NBs
09: 0            PMAP process mapping (0=Row-,1=Column-major)
10: 3            # of process grids (P x Q)
11: 5 6 3        Ps
12: 6 5 10       Qs
13: 16.0         threshold
14: 1            # of panel fact
15: 1            PFACTs (0=left, l=Crout, 2=Right)
16: 1            # of recursive stopping criterium
17: 4            NBMINs (>= 1)
18: 1            # of panels in recursion
19: 2            NDIVs
20: 1            # of recursive panel fact.
21: 1            RFACTs (0=left, l=Crout, 2=Right)
22: 1            # of broadcast
23: 0            BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
24: 1            # of lookahead depth
25: 0            DEPTHs (>=0)
26: 2            SWAP (0=bin-exch,1=long,2=mix)
27: 64           swapping threshold
28: 0            L1 in (0=transposed,1=no-transposed) form
29: 0            U  in (0=transposed,1=no-transposed) form
30: 1            Equilibration (0=no,1=yes)
31: 8            memory alignment in double (> 0)

В примере используются матрицы на 25000x25000 и ЗООООхЗОООО элементов (строки 05 и 06), размеры блоков 200x200, 224x224 и 250x250 (строки 07 и 08). Матрица распределяется между 30 процессорами тремя вариантами: 5x6, 6x5 и 3x10 (строки 10-12). Остальные параметры обычно не столь значимы, и подробно их рассматривать здесь не будем.

После редактирования файла HPL.dat уже можно запускать тест HPL, для чего нужно воспользоваться командой

mpirun -np N ./xhpl

Число процессоров N должно быть не меньше максимального произведения соответствующих вариантов пар Ps и Qs (строки 11-12).

В конце расчета каждого варианта будет выдана информация о корректности выполнения теста и достигнутая на нем производительность.