Найти в Дзене
DIY Robots

Кластер на Raspberry pi 4 [часть 3]

Здравствуйте, уважаемые читатели! Эта статья является завершающей в цикле "Кластер на Raspberry pi 4".
кластер raspberry pi
Часть 1
Часть 2
Оглавление

Здравствуйте, уважаемые читатели! Эта статья является завершающей в цикле "Кластер на Raspberry pi 4".

кластер raspberry pi
кластер raspberry pi

В данной статье полностью закончим с настройкой кластера. Установим статические ip-адреса для каждой "малинки", пропишем hostname и посчитаем производительность.

Приступим к работе

Статический ip-адрес

Для установки статического ip-адреса необходимо в файле /etc/dhcpcd.conf прописать следующие строки:

interface eth0

static ip_address=192.168.1.*/24

static routers=192.168.1.1

static domain_name_servers=192.168.1.1

interface wlan0

static ip_address=192.168.1.*/24

static routers=192.168.1.1

static domain_name_servers=192.168.1.1

Где вместо * указать, начиная с 100, ip для каждой raspberry.

Hostname

Так же для каждого raspberry укажем свой hostname. Для этого на каждом хосте в файле /etc/hostname пропишем следующую строчку:

nodemain - для узла с ip 100.

node* (вместо * ip наших хостов) - 101 - 111, например, node1 - node11.

Так же в файле /etc/hosts на каждом узле необходимо указать все доступные нам raspberry:

Доступные узлы
Доступные узлы

SSH-доступ

Для работы Mpich нам необходим доступ по ssh к каждому узлу с главного хоста. Для этого с nodemain нужно:

ssh-keygen

ssh-copy-id pi@<hostname>

ssh pi@<hostname>

Теперь у нас есть беспарольный доступ по ssh к каждой raspberry.

Установка ПО на других хостах

Как установить ПО для подсчета производительности, я рассказывал тут. Нам необходимо заархивировать папку на nodemain ~/tmp, в которую мы установили наше программное обеспечение, и скопировать все на остальные узлы, в такую же директорию. Заново пересобирать пакеты нет необходимости.

Необходимо:

cd ~/tmp/hpl-2.3

make arch=rpi

cd ..

cd mpich-3.4a3

sudo make install

На этом настройка кластера полностью закончена. Можно приступать к расчетам производительности.

Расчет производительности

Переходим в ~/tmp/hpl-2.3/bin/rpi. Здесь нас интересует файл HPL.dat. У меня он выглядит примерно так:

Файл HPL.dat
Файл HPL.dat

Здесь нас будут интересовать следующие величины:

  • Ns - размер вычисляемой матрицы
  • # of NBs - количество расчетов NBs
  • NBs - 1-е разбиение матрицы
  • Ps - 2-е разбиение матрицы
  • Qs - 2-е разбиение матрицы

Значение Ps*Qs должно быть равно количеству узлов * 4 и Ps<Qs. Например для 1 узла:

  • Ps = 1
  • Qs = 4

Для 7 узлов:

  • Ps = 4
  • Qs = 7

Подробнее почитать как работают эти тесты можно почитать тут.

Запуски тестов будут производиться из этой директории на nodemain ~/tmp/hpl-2.3/bin/rpi.

Для запуска тестов будем использовать следующую команду:

mpiexec -f <количество узлов>nodes ./xhpl

Я заранее создал файлы с различным количеством узлов и пронумеровал их <1-12>nodes. Пример файла 3nodes для 3 узлов:

Файл 3nodes
Файл 3nodes

Таким образом для каждого узла необходимо прописывать ip 4 раза.

Наилучшая производительность достигалась при величине NBs = 192, иногда 200. Также при росте Ns также росла производительность. Но подбирать Ns стоит таким образом, чтобы занимаемая память была примерно 80% от общего количества. Посмотреть занимаемую память можно командой htop.

В результате тестов пиковая производительность для 12 узлов получилась 108 ГФлопс.

График зависимости производительности от количества узлов
График зависимости производительности от количества узлов

Заключение

Вот и завершили цикл из 3 статей про кластер. Собрали конструктивно, произвели настройку ПО, вычислили его производительность. Пиковая производительность для 12 узлов получилась 108 ГФлопс.

Такая производительность сопоставима с одним процессором Intel Core-i5-2500K. Конечно о каких-либо высоких мощностях говорить не приходится, но для практики параллельных вычислений подойдет отлично.

Спасибо за внимание! Всего Вам хорошего!))