Здравствуйте, уважаемые читатели! Эта статья является завершающей в цикле "Кластер на Raspberry pi 4".
В данной статье полностью закончим с настройкой кластера. Установим статические 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. У меня он выглядит примерно так:
Здесь нас будут интересовать следующие величины:
- 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 узлов:
Таким образом для каждого узла необходимо прописывать ip 4 раза.
Наилучшая производительность достигалась при величине NBs = 192, иногда 200. Также при росте Ns также росла производительность. Но подбирать Ns стоит таким образом, чтобы занимаемая память была примерно 80% от общего количества. Посмотреть занимаемую память можно командой htop.
В результате тестов пиковая производительность для 12 узлов получилась 108 ГФлопс.
Заключение
Вот и завершили цикл из 3 статей про кластер. Собрали конструктивно, произвели настройку ПО, вычислили его производительность. Пиковая производительность для 12 узлов получилась 108 ГФлопс.
Такая производительность сопоставима с одним процессором Intel Core-i5-2500K. Конечно о каких-либо высоких мощностях говорить не приходится, но для практики параллельных вычислений подойдет отлично.
Спасибо за внимание! Всего Вам хорошего!))