Бенчмаркинг · 7 min read · Dec 14, 2025
HPL (High Performance Linpack): Бенчмаркинг Raspberry PIs
Бенчмаркинг — это процесс запуска некоторых стандартных программ для оценки скорости, достигнутой системой. Существует несколько стандартных программ для бенчмаркинга, и в этом учебном пособии мы проводим бенчмаркинг системы Linux, используя известную программу под названием HPL, также известную как High Performance Linpack.
Введение
В этом учебном пособии мы рассмотрим, как проводить бенчмаркинг системы с одним процессором, Raspberry Pi. Сначала мы проведем бенчмаркинг одного узла, а затем продолжим бенчмаркинг нескольких узлов, каждый из которых представляет собой Raspberry Pi. Здесь есть несколько моментов, которые следует отметить. Во-первых, для бенчмаркинга одного узла или нескольких узлов необходимо удовлетворить несколько зависимостей, которые будут рассмотрены в этом учебном пособии. НО для нескольких узлов есть еще больше зависимостей, таких как реализация MPI (например, MPICH или OpenMPI), которые должны быть собраны и запущены для работы HPL. Поэтому для бенчмаркинга нескольких узлов я предполагаю, что на ваших узлах установлен и запущен MPICH.
Что такое HPL?
HPL — это программный пакет, который решает (случайную) плотную линейную систему в арифметике двойной точности (64 бита) на компьютерах с распределенной памятью. Пакет HPL предоставляет программу тестирования и измерения времени, чтобы количественно оценить точность полученного решения, а также время, затраченное на его вычисление. Лучшая производительность, которую можно достичь с помощью этого программного обеспечения на вашей системе, зависит от множества факторов. Эта реализация масштабируема в том смысле, что их параллельная эффективность сохраняется постоянной относительно использования памяти на процессор. Таким образом, мы можем использовать это для бенчмаркинга одного процессора или серии распределенных процессоров параллельно. Итак, давайте начнем установку HPL.
1 Установка зависимостей
HPL имеет несколько программных зависимостей, которые необходимо удовлетворить перед его установкой. Они следующие:
- gfortran - компилятор программы fortran
- MPICH2 - реализация MPI
- mpich2-dev - инструменты разработки
- BLAS - Базовые подпрограммы линейной алгебры
Здесь мы предполагаем, что у вас установлен MPICH2. Чтобы установить другие зависимости и пакеты, используйте следующую команду:
sudo apt-get install libatlas-base-dev libmpich2-dev gfortranТолько этот шаг необходимо повторить на каждом из узлов (Pis), присутствующих в кластере.
2 Скачивание HPL и его настройка
Скачайте пакет HPL отсюда. Следующее, что нужно сделать, это извлечь tar-файл и создать makefile на основе данного шаблона. Откройте терминал и измените каталог на тот, где хранится загруженный tar-файл HPL. Выполните следующий набор команд одну за другой.
tar xf hpl-2.1.tar.gz
cd hpl-2.1/setup
sh make_generic
cd ..
cp setup/Make.UNKNOWN Make.rpiПоследняя команда копирует содержимое Make.UNKNOWN в Make.rpi. Мы делаем это потому, что make файл содержит все детали конфигурации системы (Raspberry Pi), а также детали различных библиотек, таких как mpich2, atlas/blas пакеты, домашний каталог и т. д. На следующем шаге мы внесем изменения в файл Make.rpi.
3 Настройка файла Make.rpi
Это важный шаг. Изменения, показанные ниже, варьируются в зависимости от вашей системы. Здесь я показываю это относительно своей системы. Пожалуйста, обратите внимание, что следующие изменения имеют параметры, которые разбросаны по всему файлу Make.rpi. Поэтому я предлагаю вам найти каждый параметр и заменить или добавить изменения, и только тогда продолжить к следующему параметру.
Откройте файл Make.rpi с помощью текстового редактора, используя команду:
nano Make.rpiВнесите следующие изменения в файл.
ARCH = rpi
TOPdir = $(HOME)/hpl-2.1
MPdir = /usr/local/mpich2
MPinc = -I $(MPdir)/include
MPlib = $(MPdir)/lib/libmpich.a
LAdir = /usr/lib/atlas-base/
LAlib = $(LAdir)/libf77blas.a $(LAdir)/libatlas.a4 Компиляция HPL
Как только make файл готов, мы можем начать компиляцию HPL. Файл “.xhpl” будет находиться в папке “bin/rpi” внутри папки HPL. Выполните следующую команду:
makeh arch=rpi5 Создание входного файла HPL
Следующий пример — это файл “HPL.dat”. Это входной файл для HPL при его запуске. Значения, указанные в этом файле, используются для генерации и вычисления задачи. Вы можете использовать этот файл напрямую для запуска тестов для одного узла. Создайте файл в папке “bin/rpi” и назовите его “HPL.dat”. Скопируйте содержимое ниже в этот файл.
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
6 device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
5040 Ns
1 # of NBs
128 NBs
0 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
1 Ps
1 Qs
16.0 threshold
1 # of panel fact
2 PFACTs (0=left, 1=Crout, 2=Right)
1 # of recursive stopping criterium
4 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
1 # of recursive panel fact.
1 RFACTs (0=left, 1=Crout, 2=Right)
1 # of broadcast
1 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
1 DEPTHs (>=0)
2 SWAP (0=bin-exch,1=long,2=mix)
64 swapping threshold
0 L1 in (0=transposed,1=no-transposed) form
0 U in (0=transposed,1=no-transposed) form
1 Equilibration (0=no,1=yes)
8 memory alignment in double (> 0)Содержимое этого файла должно варьироваться методом проб и ошибок, пока не будет получен удовлетворительный результат. Чтобы узнать о каждом параметре и о том, как его изменить, обратитесь к статье здесь. Чтобы перейти к основному моменту, начните читать с страницы 6 в этом документе.
6 Запуск HPL на одном узле
Как только файл HPL.dat готов, мы можем запустить HPL. Файл HPL.dat выше предназначен для одного узла или процессора. Произведение значений PQ в вышеуказанном файле дает количество процессоров, для которых тестируется HPL. Таким образом, из вышеуказанного файла P=1 и Q=1 , 11=1, так что это для одного процессора. Теперь, чтобы запустить его, используйте команды:
cd bin/rpi
./xhplВывод выглядит примерно так, как показано ниже:
================================================================================
HPLinpack 2.1 -- Бенчмарк High-Performance Linpack -- 26 октября 2012 года
Написано А. Петиетом и Р. Клинтом Уэли, Инновационная вычислительная лаборатория, UTK
Изменено Пиотром Лужчеком, Инновационная вычислительная лаборатория, UTK
Изменено Жюльеном Лангу, Университет Колорадо в Денвере
================================================================================
Объяснение входных/выходных параметров:
T/V : Время на стене / закодированный вариант.
N : Порядок матрицы коэффициентов A.
NB : Фактор блокировки разбиения.
P : Количество процессорных строк.
Q : Количество процессорных столбцов.
Time : Время в секундах для решения линейной системы.
Gflops : Скорость выполнения для решения линейной системы.
Следующие значения параметров будут использованы:
N : 5040
NB : 128
PMAP : Разбиение процессов по строкам
P : 1
Q : 1
PFACT : Правый
NBMIN : 4
NDIV : 2
RFACT : Круто
BCAST : 1ringM
DEPTH : 1
SWAP : Смешанный (порог = 64)
L1 : транспонированная форма
U : транспонированная форма
EQUIL : да
ALIGN : 8 двойных слов
--------------------------------------------------------------------------------
- Матрица A генерируется случайным образом для каждого теста.
- Будет вычислена следующая проверка масштабированного остатка:
||Ax-b||_oo / ( eps * ( || x ||_oo * || A ||_oo + || b ||_oo ) * N )
- Относительная машинная точность (eps) принимается равной 1.110223e-16
- Вычислительные тесты проходят, если масштабированные остатки меньше 16.0
Также мы должны сосредоточиться на конечном результате. Конечный вывод, который появляется в терминале, будет выглядеть примерно так, как показано ниже. Последнее значение дает скорость, а значения перед ним показывают различные предоставленные параметры. В приведенном ниже содержимом скорость показана в Gflops, и ее значение составляет около 1.21e-01 Gflops, что при преобразовании дает 121 Mega FLOPS (MFLOPS).
================================================================================
T/V N NB P Q Time Gflops
--------------------------------------------------------------------------------
WR11C2R4 21400 128 3 11 537.10 1.210e-01
HPL_pdgesv() время начала Пн Июн 23 17:29:42 2014
HPL_pdgesv() время окончания Пн Июн 23 17:55:19 2014
--------------------------------------------------------------------------------
||Ax-b||_oo/(eps*(||A||_oo*||x||_oo+||b||_oo)*N)= 0.0020152 ...... ПРОЙДЕНО
================================================================================Пожалуйста, обратите внимание, что в зависимости от вашего Raspberry Pi скорость и время выполнения могут значительно отличаться. Поэтому, пожалуйста, не используйте эти результаты для сравнения с вашим узлом или кластером.
7 Запуск HPL на нескольких узлах
Когда мы хотим запустить HPL для нескольких узлов, нам необходимо изменить файл HPL.dat. Здесь предположим, что у нас есть 32 узла. Таким образом, произведение PQ должно составлять 32. Я выбрал P=4 , Q=8, таким образом 48=32. Поэтому помимо этого изменения, нам нужно изменить значение N, методом проб и ошибок мы получили максимальную скорость для N=17400. Конечное содержимое файла показано ниже. внесите эти изменения соответственно в ваш файл “HPL.dat”.
HPLinpack benchmark input file
Innovative Computing Laboratory, University of Tennessee
HPL.out output file name (if any)
6 device out (6=stdout,7=stderr,file)
1 # of problems sizes (N)
17400 Ns
1 # of NBs
128 NBs
0 PMAP process mapping (0=Row-,1=Column-major)
1 # of process grids (P x Q)
4 Ps
8 Qs
16.0 threshold
1 # of panel fact
2 PFACTs (0=left, 1=Crout, 2=Right)
1 # of recursive stopping criterium
4 NBMINs (>= 1)
1 # of panels in recursion
2 NDIVs
1 # of recursive panel fact.
1 RFACTs (0=left, 1=Crout, 2=Right)
1 # of broadcast
1 BCASTs (0=1rg,1=1rM,2=2rg,3=2rM,4=Lng,5=LnM)
1 # of lookahead depth
1 DEPTHs (>=0)
2 SWAP (0=bin-exch,1=long,2=mix)
64 swapping threshold
0 L1 in (0=transposed,1=no-transposed) form
0 U in (0=transposed,1=no-transposed) form
1 Equilibration (0=no,1=yes)
8 memory alignment in double (> 0)Как только это будет сделано, нам нужно будет снова запустить HPL. Используйте следующую команду. Не забудьте изменить путь в команде ниже, чтобы он соответствовал пути к файлу машины в вашей системе.
cd bin/rpi
mpiexec -f ~/mpi_testing/machinefile -n 32 ./xhplРезультат этого будет аналогичен тому, что показано выше для одного узла, но он определенно будет иметь более высокую скорость.
Такие изменения можно вносить в зависимости от количества узлов или процессоров в системе, и результаты бенчмарка могут быть найдены. И как я уже упоминал ранее, чтобы узнать больше о том, как установить значения в файле HPL.dat, перейдите к документу здесь и прочитайте его.
Get new posts in your inbox
No spam. Unsubscribe anytime.