Создание MPICH2 кластера на базе учебной лаборатории

Автор: Савостин Игорь Анатольевич, Горбунов Александр Николаевич

Журнал: Вестник образовательного консорциума Среднерусский университет. Информационные технологии @vestnik-university

Статья в выпуске: 2 (10), 2017 года.

Бесплатный доступ

Данная статья описывает конкретные шаги по созданию простого варианта вычислительного кластера на базе учебной лаборатории университета. Кластер работает под управлением Linux-подобной ОС Kubuntu.

Кластер, параллельные вычисления

Короткий адрес: https://sciup.org/140225616

IDR: 140225616

Текст научной статьи Создание MPICH2 кластера на базе учебной лаборатории

Обоснование выбора программного обеспечения

В БГТУ для обучения студентов основам параллельного программирования используется MPICH2 реализация протокола MPI. MPICH2 является легкопортируемой быстрой реализацией стандарта MPI. Данная система активно разрабатывается в Аргоннской национальной лаборатории США, с участием компаний IBM, Cray, SiCortex, Microsoft, Intel, NetEffect, Qlogic, Myricom, UBC, а также Университета штата Огайо. Модульная структура для создания производных реализаций, предоставляющая широкие возможности для исследования технологии MPI.

Однако, существовавший ранее учебный кластер под ОС Windows не отличался стабильностью и надежностью, т. к. данная ОС не является основной и приоритетной платформой для MPICH2. В результате анализа материалов по параллельным системам, было принято развернуть кластер на базе Linux-подобной ОС, так как эта операционная система является целевой платформой для выбранной реализации протокола MPI, а так же именно Linux-подобные ОС традиционно используются для развертывания вычислительных кластеров.

За основу была взята инструкция с [2].

Настройка сети

Для работы кластера необходима надежная связь между всеми его узлами, а так же возможность обращения к машинам по их имени.

После согласования с системным администратором кафедры было принято решение о выделении диапазона

IP адресов для компьютеров кластера в зоне, в которой не работает кафедральный DHCP сервер, т. к. адреса машин должны быть статическими. Этим требованиям отвечали адреса в диапазон 192.168.193.201-192.168.193.253.

Т.к. установка DNS сервера является избыточный, с точки зрения количества машин и необходимости наличия у каждой статического IP адреса, было решено отредактировать на каждой машине файл /etc/hosts, используемый POSIX-совместимыми операционными системами для разрешения доменных имён. После редактирования файл /etc/hosts на каждой машине кластера имел вид согласно листингу 1.

127.0.0.1 localhost

192.168.193.211

WS01-408

192.168.193.212

WS02-408

192.168.193.213

WS03-408

192.168.193.214

WS04-408

192.168.193.215

WS05-408

192.168.193.216

WS06-408

192.168.193.217

WS07-408

192.168.193.219

WS09-408

192.168.193.220

WS10-408

192.168.193.221

WS11-408

192.168.193.222

WS12-408

192.168.193.224

WS14-408

192.168.193.226

WS16-408

Листинг 1. Файл /etc/hosts

Далее, в менеджере сетей были созданы подключения с с именами ClusterNode##, где ## – номер компьютера в аудитории, и вышеописанными IP адресами с маской 255.255.255.0.

Т. к. компьютеры аудитории будут использоваться не только для вычислений, автоматическое подключение будет устанавливаться к основной сети кафедры, а подключение к подсети кластера — только по требованию.

После настройки сетевых адаптеров и правки файла / etc/hosts была произведена проверка доступности машин командой ping.

Настройка хранилища

Как было сказано выше, для обеспечения доступа любой машины к программе, выполняющейся на кластере, использован механизм NFS.

Настройка головной машины, которой является WS03-408, включает в себя создание каталога /mirror, который будет являться общим для всех машин кластера, установку сервера NFS при помощи команд из листинга 2.

$ sudo apt-get install nfs-server

Листинг 2. Команда установки сервера NFS

А так же добавление в файл /etc/exports строки из листинга 3, что указывает серверу на необходимость предоставления доступа на чтение и запись к указанному каталогу с использованием любого метода аутентификации.

/mirror *(rw,sync)

Листинг 3. Установка параметров общего каталога

После этого сервер NFS необходимо перезапустить командой, данной в листинге 4.

$ sudo service nfs-kernel-server restart

Листинг 4. Команда перезапуска сервера NFS

Т. к. в UNIX-подобных системах разграничение доступа к файлам происходит на основе идентификаторов пользователей и групп, необходимо на всех машинах создать пользователя с одинаковым идентификатором UID, который будет являться владельцем общего каталога.

Для этого на каждом узле, кроме главного, создаем каталог /mirror, в который будет монтироваться одноимённый катало с головной машины по средствам NFS. Затем создаём пользователя mpich с UID 12345 и домашним каталогом в /mirror. Это обеспечит автоматическое перемещение в общий катлог при входе пользователя в систему. Далее, делаем пользователя mpich владельцем каталога / mirror. Затем необходимо установить клиенты NFS на машины кластера. После данных действий, описанных в листинге 5, авторизовавшись в системе под именем пользователя mpich, можно получить полный доступ к каталогу / mirror. Описание команд можно получить в [1].

$ sudo mkdir /mirror

$ sudo chown mpich /mirror

$ sudo useradd -d /mirror -u 12345 -p mpich -U mpich

Листинг 5. Настройка доступа к общему каталогу кластера

Для монтирования общего каталога на узлах кластера (кроме головного) необходимо выполнить команду из листинга 6.

sudo mount WS-03-408:/mirror /mirror

Листинг 6. Команда монтирования общего каталога

Для упрощения монтирования каталога неподготовленными пользователями, данная команда была обёрнута в скрипт, показанный на листинге 7.

#!/bin/bash sudo mount WS03-408:/mirror /mirror

Листинг 7. Скрипт монтирования общего каталога

После подключения всех узлов к подсети кластера и монтирования общего каталога, можно приступить к настройке SSH.

Настройка SSH

Сначала на всех узлах кластера командой из листинга 8.

$ sudo apt-get install openssh-server

Листинг 8. Команда установки SSH сервера

Т. к. для работы MPICH2 требуется такая настройка SSH [3], при которой должен предоставляться автоматический доступ к узлам кластера без запроса паролей [5], сконфигурируем SSH для аутентификации по публичному ключу.

Поскольку SSH хранит ключи в домашнем каталоге пользователя, а ранее мы создали пользователя mpich с домашним каталогом на общем сетевом ресурсе, достаточно производить настройку на одной любой машине, войдя в систему под именем mpich. D дальнейшем, все действия с кластером будем производить с головной машины.

Входим в систему под именем mpich, создаем пару ключей, зашифрованных несимметричным алгоритмом RSA как показано в листинге 9.

$ sudo su - mpich

$ ssh-keygen -t -rsa

Листинг 9. Вход в систему и генерация RSA ключей

При генерации программа ssh-keygen предложит установить пароль на связку ключей, который следует оставить пустым, дважды нажав на клавишу Enter.

Теперь необходимо добавить сгенерированный публичный ключ в список доверенных, используя команды из листинга 10.

$ cd /mirror/.ssh/

Листинг 10. Команда добавления публичного ключа в список доверенных

Очень важным моментом при настройке SSH является установка корректных прав доступа к файлам ключей [4], т. к. при слишком сильном ограничении прав не смогут работать утилиты настройки и сам SSH сервер, но, с другой стороны, если ключи будут открыты для общего доступа, сервер так же откажется работать, или будет постоянно требовать пароль, что неприемлемо для работы MPICH2. Настройка прав доступа показана в листинге 11.

$ sudo go-w /mirror

$ sudo chmod -R 700 /mirror/.ssh

$ sudo chmod 644 /mirror/.ssh/authorized_keys

Листинг 11. Установка правильных прав доступа к файлам ключей

После всех вышеуказанных действий необходимо произвести подключение через SSH ко всем узлам кластера для обмена ключами и проверки работоспособности подключений. При этом будет предложено добавить ключи в список доверенных, на что следует ответить «yes» и нажать Enter на клавиатуре компьютера.

Следующим этапом является установка GCC и MPICH2.

Установка GCC и MPICH2

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

о -j— 1000

/

--I юследовательный алгоритм

Базовый параллельный алгоритм! 10 потоков)

Базовый параллельный алгоритм! 100 потоков)

Ленточный пара ллел ьный алго ритм! 10 потоков)

Ленточный параллельный

Г.ярПГ.ППППППм........;...................

1500            2000

Рис. 1. Результаты эксперимента

алгоритм(100_

- потоков).. . ......

sudo apt-get install build-essential

Листинг 12. Команда установки необходимых для сборки программ

Build-essential является метапакетом, содержащим информационный список пакетов, необходимых для сборки программ в ОС Kubuntu. Для упрощения установки этих пакетов build-essential зависит от них, что приводит к автоматической установке всего необходимого для сборки одной командой.

Заключительным этапом является установка на все машины кластера самого MPICH2 с помощью команды из листинга 13.

sudo apt-get install mpich2

Листинг 13. Команды установки пакета MPICH2

Для проверки успешности установки MPICH2 на все машины можно воспользоваться командами из листинга 14.

$ which mpiexec

$ which mpirun

Листинг 14. Команды проверки установки MPICH2

Далее необходимо создать файл с именем mf, указывающий , какие машины могут участвовать в расчетах. Как это сделать показано в листинге 15.

$ touch /mirror/mf

$ sudo chown mpich /mirror/mf

$ nano /mirror/mf

Листинг 15. Создание файла mf

Структура файла является довольно простой. На каждой новой строке указывается имя машины, затем следуют двоеточие и число процессов. Содержимое файла, созданного для нашего кластера, показано на листинге 16.

WS01-408:4

WS02-408:4

WS03-408:4

WS04-408:4

WS05-408:4

WS06-408:4

WS07-408:4

WS09-408:4

WS10-408:4

WS11-408:4

WS12-408:4

WS14-408:4

WS16-408:4

Листинг 16. Содержимое файла mf

На этом настройка кластера завершена. Теперь можно приступить к тестированию системы, путем запуска пользовательских программ.

Запуск программ

Перезагружаем все машины, чтобы имитировать обычный запуск кластера, затем подключаем их к подсети кластера и выполняем скрипт монтирования общего каталога командой из листинга 17.

$ sudo bash ./mount

Листинг 17. Команда монтировния общего каталога

Для сборки и запуска необходимо выполнить команды из листинга 18.

$ sudo su — mpich mpic++ -o test test.c mpiexec -n 52 -f ./mf /mirror/test

Листинг 18. Команды для сборки и запуска тестовой программы

Сравнение скорости работы алгоритмов

В процессе работы с кластером был проведен эксперимент по определению ускорения работы алгоритмов умножения матриц при использовании параллельных алгоритмов. Результаты представлены на рисунке 1.

По результатам эксперимента видно явное снижение времени расчетов при использовании кластера.

Список литературы Создание MPICH2 кластера на базе учебной лаборатории

  • Гранненман С. Linux. Карманный справочник./С. Гранненман, М.: ООО «И. Д. Вильямс», 2013. -416 с
  • Гришанова Т.В., Использование облачных технологий в образовании//Вестник образовательного консорциума Среднерусский университет. Информационные технологии. 2015. № 2 (6). С. 22
  • Setting Up an MPICH2 Cluster in Ubuntu -: https://help.ubuntu.com/community/MpichCluster
  • Теория и практика использования SSH (ssh crypt security) -: https://www.opennet.ru/base/sec/ssh_intro.txt.html
  • Permissions on private key in.ssh folder? -: http://superuser.com/questions/215504/permissions-on-private-key-in-ssh-folder
  • MPICH Wiki -: https://wiki.mpich.org/mpich/index.php/Main_Page
  • Хвостенко Т.М., Формирование электронной информационно-образовательной среды учебного заведения//Вестник образовательного консорциума Среднерусский университет. Информационные технологии. 2015. № 2 (6). С. 48
Статья научная