Создание И Использование Кластеров Matlab

Цель статьи: хочу поделиться своим опытом создания трех вычислительных кластеров Matlab, а также их удаленного администрирования.

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

Со временем у меня тоже появилась эта потребность.

Моделирование, связанное с решением систем нелинейных дифференциальных уравнений за длительный период относительного времени, отнимает довольно много процессорного времени, поэтому было решено «распараллелить» все это дело.



Итак, обо всем – по порядку



В наличии железо:
Дома : компьютер (Phenom II x4 840, 7x64) и ноутбук (Athlon II Dual-Core M320, 7x64), объединенные в одну сеть старым добрым роутером DIR-300. В доме девушки: ПК (i5 4440, 7х64).

На работе: 10 компьютеров (Athlon II Dual-Core, XPx86) (подключены в одну сеть) в одной комнате и 4 (двухъядерный процессор Athlon II, XPx86) в другом (тоже подключены в одну сеть).

Между комнатами нет локальной сети.

Все вышеперечисленные боксы имеют доступ в Интернет.

Начнем создавать 2 кластера на работе.

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

(Хотя все делалось по замечательной инструкции, за что автору спасибо!) Для начала хотелось бы отметить, что в первую очередь необходимо правильно установить Матлаб.

Дело здесь не в том, чтобы «не дышать при установке» или в выборе «правильных» компонентов, а в том, что существует 2 версии Матлаба.

Один серверный, другой локальный.

Итак, если вы установите только один из них, он не будет работать.

В этом статья есть данные, которые помогут разобраться в вопросе с версиями, однако следует отметить, что в новой версии Matlab R2013b установщик работает немного иначе, чем описано на скриншотах в статье, поэтому сначала необходимо установить локальную версию из Parallel Computing Toolbox, и только потом, в другую папку, серверную версию с Distributed Computing Server, иначе при запуске Parallel Computing Toolbox возникнет ошибка:

  
  
  
   

Starting parallel pool (parpool) using the 'MJSProfileXXX' profile .

Error using parpool (line 111) Failed to start a parallel pool. (For information in addition to the causing error, validate the profile 'MJSProfile8' in the Cluster Profile Manager.) Error in parallel.internal.ui.PoolHelper.startPool (line 11) parpool(); Caused by: Error using parallel.internal.pool.InteractiveClient/start (line 326) Failed to start pool. Error using parallel.Job/submit (line 304) All dimension arguments must be greater than zero

Эта ошибка очень популярна на различных форумах, но никто не говорит о том, как от нее избавиться.

Это происходит при запуске Parallel Computing Toolbox на серверной версии Matlab (кнопка запуска параллельного пула).



Создание и использование кластеров Matlab

Поэтому вам необходимо запустить параллельные/кластерные вычисления с помощью Mastera в локальной версии Matlab. Установщик R2013b не позволил установить две версии Матлаба в одну папку, как рекомендовалось в статье выше, и, как оказалось, поступил правильно! После полной установки программного обеспечения Matlab на Мастере должно остаться 2 папки.

Первая — с локальной версией Matlab, которая улавливает все расширения файлов Matlab и создает ярлыки, а вторая — с установленным Matlab Distributed Computing Server. (вторая папка автономна и может быть перенесена на все компьютеры локальной сети для экономии времени при развертывании кластера) Мастером мы будем считать компьютер, на котором установлены 2 версии Матлаба, так как именно с него будет запускаться наша программа.

На другие компьютеры этой локальной сети вам нужно только установить серверную версию Матлаба (или просто скопировать вторую папку из Мастера в любую директорию на других компьютерах) Теперь вы можете смело использовать вышеупомянутую статью для создания локального кластера Matlab. Однако стоит отметить, что первый запуск команд !mdce install и !mdce start следует производить из самого окна Matlab, независимо от его версии.

Это поможет избежать ошибки отсутствия библиотек vcredist64/86, поскольку если вы запустите команду установки !mdce из окна Matlab, они будут установлены самостоятельно.

В противном случае mdce-сервер, вызванный например из батника, может просто не запуститься несмотря на отсутствие библиотек.

Запускать эти команды нужно из каталога bin 2-й папки соответственно (там есть файл mdce.bat).

Лично мне для запуска хватило 3-х команд на Мастере кластер :

!mdce install !mdce start !admincenter

А из Центра администрирования вы можете создать планировщик и распределить рабочие процессы по компьютерам.

Но и здесь есть подводный камень.

Чертов брандмауэр! Настоятельно рекомендую выключить и прочно! Со всеми правилами входящих и исходящих соединений и со всеми исключениями.

Это единственный способ заставить Центр администрирования добавить все компьютеры в этой локальной сети.

Кстати, при добавлении компьютера в локальную сеть можно задать его имя, например Siegurd-PC, и не бояться тире.

По крайней мере, в последней версии Матлаба это работает. При добавлении компьютеров в Центр администрирования служба mdce уже должна быть запущена на каждом компьютере и висеть в процессах.

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

В Центре администрирования можно запустить службу mdce удаленно, но мне так и не удалось этого сделать.

Возможно, причиной этого является отсутствие прав администратора на доступ к папкам компьютеров в локальной сети, но это не столь важно и не влияет на поставленную задачу.

И да, при запуске mdce вы, скорее всего, увидите следующие сообщения:

Setting permissions on LOGBASE C:\Windows\TEMP\MDCE\Log Setting permissions on CHECKPOINTBASE C:\Windows\TEMP\MDCE\Checkpoint Setting permissions on SECURITY_DIR C:\Windows\TEMP\MDCE\Checkpoint\security Unable to give the "Administrators" group full control for C:\Windows\TEMP\MDCE\Checkpoint\security You may need to manually give the "Administrators" group read and write access to this directory. Unable to give the "CREATOR OWNER" group full control for C:\Windows\TEMP\MDCE\Checkpoint\security You may need to manually give the "CREATOR OWNER" group read and write access to this directory. Unable to give the "Authenticated Users" group traversal rights for C:\Windows\TEMP\MDCE\Checkpoint\security You may need to manually give the "Authenticated Users" group traversal rights to this directory.

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

Важный! При использовании Центра администрирования для создания воркеров разработчики рекомендуют убедиться, что порт 7 открыт на случай ошибок.

Создание планировщика В Центре администрирования щелкните правой кнопкой мыши на любом из добавленных компьютеров и в контекстном меню выберите Запустить MJS, либо нажмите кнопку Запустить в самом окне Центра администрирования:

Создание и использование кластеров Matlab

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

Вот и всё с настройкой кластера в местный сети все.



Начинаем расчеты
Чтобы начать кластерные вычисления, вам необходимо запустить локальную версию Matlab на Master и добавить планировщик.

В главном окне Мталаба нажмите Discover Clusters.

Создание и использование кластеров Matlab

Затем найдите в локальной сети ранее созданный планировщик:

Создание и использование кластеров Matlab

После его добавления вам необходимо выбрать количество воркеров в настройках параллельного профиля!

Создание и использование кластеров Matlab

Перейдите в Parallel Preferences и выберите количество воркеров, к которым нужно подключиться.



Создание и использование кластеров Matlab

Важный! Если количество воркеров, заданное в настройках, меньше созданного в Центре администрирования, то расчеты будут происходить только по указанному количеству воркеров.

То есть, если вы создали 20 ходунков, а в настройках выставлены 4, то работать будут только первые 4 в списке Админцентра.

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

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

После того, как работа будет проделана, вы можете смело запускать свой код, который сам будет распараллелен между всеми воркёрами текущего планировщика (кластера).

(Лично я использовал для этого цикл parfor, но есть и другие команды) Эта схема используется в двух комнатах, а управление мастерами осуществляется удаленно через программу просмотра команд из дома.

К сожалению, эти кластеры не связаны друг с другом, так как требуется полносвязная сеть (каждый с каждым), а настроить VPN между таким количеством компьютеров мне не удалось.



Создание домашнего кластера на VPN

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

Избавиться от них мне удалось только после долгих танцев с бубном.

Всем известный Hamachi использовался для объединения домашних компьютеров и компьютера его девушки в одну сеть.

Текущая версия позволяет бесплатно добавить в сеть 5 машин.

Как сделать это правильно: Установите Hamachi на все компьютеры.

Создайте виртуальную сеть на любом из них и все будут подключаться к этой сети.

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

При добавлении компьютеров в Центр администрирования их необходимо добавить, IP-адреса , а не по имени.

Это важно! Главный компьютер, на котором будут запускаться расчеты из локальной версии Матлаба, необходимо добавить по имени.

В настройках Hamachi отключите шифрование, сжатие и фильтрацию трафика (установите значение: разрешить все).

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

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

Примечание.

Hamachi хорош, но нестабильен, особенно при экспериментах с настройками сети, поэтому если вдруг вы не можете подключиться к удаленному компьютеру, рекомендую перезагрузить оба (Мастер и компьютер, с которым нет связи); если это не поможет, переустановите Хамачи.

Да, и еще одна вещь.

Служба mdce после установки и запуска будет включаться сама при включении компьютера до тех пор, пока не будет остановлена.

Однако иногда при изменении настроек сети и возникновении конфликтов советую в качестве решения проблемы перезапустить эту службу с помощью команд:

!mdce stop !mdce start



Полученные результаты

Таким образом, преодолев все эти тонкости, было организовано 3 вычислительных кластера, администрирование которых через Team Viewer осуществляется удаленно с любого компьютера в любое время.

Главное не забудьте отключить сон и автовыключение на всех компьютерах! Еще раз хотел бы поблагодарить авторов 2-х статей, которые были использованы выше.

Спасибо! Ведь без ваших усилий мне бы никогда не удалось поднять эти гроздья! Надеюсь, моя статья поможет людям, которые хотели создать вычислительный кластер Matlab, но наткнулись на подводные камни и не смогли это сделать.

PS: Если кто-нибудь знает, как создать полноценный бесплатный VPN в Windows, дайте мне знать.

Это поможет многим ученым в организации и проведении серьезных научных исследований.

Удачи в развертывании кластера! Спасибо за внимание! Теги: #matlab #matlab #Сервер распределенных вычислений #распределенные вычисления #Parallel Computing Toolbox #параллельные вычисления #parpool(); #кластеры #кластер #Высокая производительность #matlab

Вместе с данным постом часто просматривают:

Автор Статьи


Зарегистрирован: 2019-12-10 15:07:06
Баллов опыта: 0
Всего постов на сайте: 0
Всего комментарий на сайте: 0
Dima Manisha

Dima Manisha

Эксперт Wmlog. Профессиональный веб-мастер, SEO-специалист, дизайнер, маркетолог и интернет-предприниматель.