Приложение 3. Работа с тестом High Performance LINPACK
Для того, чтобы измерить производительность кластерной системы на тесте High Performance Linpack (HPL), потребуется сам тест и библиотека BLAS. Собственно тест HPL доступен по адресу http://www.netlib.org/benchmark/hpl/hpl.tgz. Настоятельно не рекомендуем использовать библиотеку BLAS, поставляемую с дистрибутивами Linux. Этот вариант очень неэффективен на современных вычислительных платформах, поскольку рассчитан на работу на процессорах Intel 80386. Наиболее удачными библиотеками, содержащими BLAS, являются:
- Atlas (http: //www.netlib.org/atlas/),
- GotoBLAS (http://www.tacc.utexas.edu/resources/software/#blas),
- Intel MKL (http://www3.intel.com/cd/software/products/asmo-na/eng/perf lib/).
Установите библиотеку 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).
В конце расчета каждого варианта будет выдана информация о корректности выполнения теста и достигнутая на нем производительность.