Как запускать mpi программу

Информация для пользователей Суперкомпьютерного комплекса МГУ

Удаленный доступ, передача файлов, компиляция и запуск приложений.

Удаленный терминальный доступ

Удаленный доступ к вычислительному кластеру осуществляется через головную машину комплекса t60.parallel.ru и только с ключом, указанным в заявке при регистрации. Непосредственный терминальный доступ на узлы кластера невозможен.

Для доступа нужно использовать протокол SSH версии 2. Читайте более подробную информацию об удаленном доступе и копировании файлов на кластер.

Хранение файлов

Пользовательские директории (вида /home/), физически размещенные на системе хранения данных, доступны по сети на всех узлах. Максимальный объем данных в этом каталоге обусловлен дисковой квотой для пользователя. Дисковая квота определяется при регистрации, но в дальнейшем может быть увеличена при необходимости.

Утилиты перекодировки текстовых файлов

При передаче текстовых файлов из среды Windows следует помнить, что на Unix используется свое соглашение по символам перевода строки, отличное от соглашения в среде DOS/Windows. Если Вы будете компилировать исходные тексты программ, которые записаны в соглашении DOS/Windows, то Вы можете получить множество предупреждений или ошибок. На головной машине кластера установлена утилита перекодировки из формата в DOS в формат Unix — «d2u».

Как установить MPI на Windows 10 и запускать приложения, реализованные в Visual Studio 2019?

В среде Unix традиционной для русских символов является кодировка KOI-8, тогда как в средах DOS и Windows используются свои кодировки. Для выполнения перекодировки файлов с русскими буквами из кодировок DOS и Windows в KOI-8 и обратно установлены утилиты: «dos2koi», «dos2win», «koi2dos», «koi2win», «win2dos», «win2koi».—>

Выбор среды MPI

На СКИФ-МГУ «Чебышёв» установлено несколько реализаций MPI. Для переключения между ними используется программа mpi-selector. Чтобы получить список реализаций, наберите mpi-selector —list. Для выбора нужной — mpi-selector —set your-mpi-version. После смены реализации необходимо открыть новую ssh-сессию.

Если Вы используете Intel MPI, openmpi или mpich, то указывайте команде mpirun дополнительный ключ -as intel, -as openmpi или -as mpich соответственно.

Компиляция программ

Для компиляции MPI-программ рекомендуется пользоваться командами mpicc/mpicxx (для программ на С и С++) и mpif77/mpif90 (для программ на Фортране 77/90). Эти команды автоматически подключают заголовочные файлы и библиотеки MPI. Для программ на языке С++ нужно использовать расширение имени файла .C или .cpp, для программ на языке Фортран 90 — .f90.

По умолчанию скрипты mpicc/mpicxx и mpif77/mpif90 работают с компилятором Intel. Для настройки компилятора, с которым хочет работать пользователь, необходимо воспользоваться утилитой mpi-selector. Для получения полного списка доступных в данный момент компиляторов нужно запустить утилиту с опцией —list, для установки необходимого компилятора — с опцией —set , где — один из вариантов, выданных опцией —list. Установленный данной утилитой компилятор сохраняется в качестве компилятора по умолчанию для данного пользователя.

Установка, настройка и запуск программ средствами MPI в Visual Studio 2019

Рекомендуется использовать опции компиляторов для оптимизации программ. Для компиляторов, установленных на нашем кластере, приемлемый уровень оптимизации даёт опция -O3, для справки о других опциях оптимизации рекомендуем обращаться к руководствам по компиляторам. Обращаем Ваше внимание, что при компиляции программ с помощью скриптов mpicc/mpicxx и mpif77/mpif90 не должны использоваться опции -static и -fast.

Если необходимо только скомпилировать один модуль, и не выполнять сборку исполняемого файла, используется опция «-с», например:

mpicxx -c -program2.C

При этом будет создан объектный модуль «program2.o». Объектный модуль не является исполняемым, он используется как один из блоков при компоновке исполняемого файла.

Если необходимо создать исполняемый файл, то имеет смысл воспользоваться опцией -o имя, чтобы задать его имя (по умолчанию его имя будет a.out). Например:

Читайте также:
Как сделать Хром тачку в кар паркинг без программ

mpif90 -O3 program.f -o program.e

При этом будет создан исполняемый файл program.e, который можно запускать на исполнение командой mpirun.

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

Простейшие примеры MPI-программ на языках С и Фортране 77/90 доступны, например, в каталоге /share/mpi/mvapich-1.1-intel/examples.

Для компиляции программ, использующих технологию OpenMP, необходимо указать опцию соответствующего компилятора:

Необходимое число порождаемых нитей можно задать при помощи переменной среды OMP_NUM_THREADS:

export OMP_NUM_THREADS=8

Запуск приложений

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

mpirun -np N program

Если указанное число процессоров в данный момент недоступно, задача будет поставлена в очередь. Если программа является однопроцессорной или использует технологию OpenMP и написана без использования MPI, то при ее запуске нужно добавить ключ -as single. Например:

mpirun -np 1 -as single program.e

Для запуска программ, скомпилированных с IntelMPI используйте ключ -as intel, для запуска программ, скомпилированных с OpenMPI — -as openmpi.

Читайте более подробную информацию о системе управления заданиями и других ее опциях.

Оболочка и текстовые редакторы

В качестве пользовательского командного интерпретатора используется bash, справку по которому можно получить командой «man bash». Для редактирования файлов на системе доступны текстовые редакторы joe и vi. Также доступна NC-подобная оболочка «Midnight Commander» (mc).

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

означает, что мы работаем под именем пользователя alex, и текущим является каталог с названием hpl.

Базовые команды ОС Unix

Для пользователей, не знакомых с операционной системой Unix, приводим базовые команды, необходимые для работы:

  • pwd — получить полный путь текущего каталога;
  • cd — сменить текущий каталог;
  • ls — распечатать содержимое каталога;
  • cp — копировать файл;
  • mv — переместить (переименовать) файл;
  • rm — удалить файл;
  • cat — выдать содержимое файла на консоль;
  • gzip — сжать файл;
  • exit — выйти из оболочки (или отключиться от машины).

Справку по любой команде можно получить командой man имя_команды.

В случае проблем

При обращениях по электронной почте следует указать свое имя пользователя (login). Проблему, с которой Вы обращаетесь, желательно описать как можно более подробно. В частности, если проблема связана с компиляцией или запуском программы, то нужно указать, в какой директории находится программа, каким образом (какими именно командами) Вы ее компилируете и запускаете, какие сообщения получаете.

Источник: parallel.ru

Как установить mpi на windows

В этой заметке показано как установить MPI, подключить его к Visual Studio, а затем использовать с заданными параметрами (числом вычислительных узлов). В статье используется Visual Studio 2015, т.к. именно с ней возникали проблемы у моих студентов (эта заметка написана студентами для студентов), однако вероятно инструкция подойдет и для других версий.

Шаг 1:
Необходимо установить пакет HPC Pack 2008 SDK SP2 (в вашем случае может быть уже другая версия), доступный на официальном сайте Microsoft. Разрядность пакета и системы должны соответствовать. Шаг 2:
Необходимо настроить пути, для этого переходим во вкладку Debug — Properties:
Далее во вкладке VC++ Directories необходимо прописать в поле Include Directories: В поле Library Directories:

В поле с библиотеками, если стоит 32 разрядная версия, вместо amd64 нужно прописать i386. Далее во вкладке Linker – Input в поле Additional Dependencies необходимо указать библиотеку :
Шаг 3: Для настройки запуска необходимо перейти во вкладку Debugging и в поле Command указать:

В поле Command Arguments указать, например, Число 4 указывает на количество процессов.
Для запуска программы необходимо подключить библиотеку . Путь к проекту не должен содержать кириллицу. При возникновении ошибок можно воспользоваться Microsoft MPI, доступный по на сайте Microsoft. Для этого после установки достаточно прописать в поле Command вкладки Debugging путь: “C:Program FilesMicrosoft MPIBinmpiexec.exe” Также перед запуском программы не забудьте указать её разрядность:

Читайте также:
Как создать игру на компьютер без программ

Пример запуска программы с MPI: Работа программы на 2 узлах:
В соседней статье вы можете прочитать про установку MPI в Linux и настройку в CLion . Источник

Настройка среды для MPI-программирования

Выбираем операционную систему, затем переходим по ссылке и скачиваем msi — файл , например: Затем следует щелкнуть по имени файла, тогда запустится программа -установщик. Для установки потребуются права Администратора системы ( запуск MPI -программ выполняется соответствующей службой). После щелчка будет произведена установка диспетчера процессов spmd ( spmd process manager ). Необходимо указать «секретное» слово . По умолчанию это:

В меню «Пуск»->»Все программы» появится раздел MPICH2 с пунктами: jumpshot wmpiconfig.exe wmpiexec.exe wmpiregister.exe В папке MPICH2 располагаются папки: Динамически подключаемые ( dll ) библиотеки копируются в папку windows/system32 . Диспетчер процессов smpd автоматически запускается сразу же после установки MPICH2 , а также после перезагрузки системы. Запустим MS Visual Studio 2008 и создадим новый проект Win32 Console Application (Консольное приложение Win32), в конфигурации Release.В окно проекта копируется исходный текст программы, если он уже существует или программа набирается заново. Затем необходимо настроить пути и ссылки на библиотеку MPICH2 . properties -> C++->General->Additional Include Directories вводится путь к каталогу include (см. рис. П-1).

properties -> C++->Linker->General->Additional Library Directories вводится путь к каталогу lib (см. рис. П-2). properties -> C++->Linker->Input->Additional Dependencies вводится имя библиотеки mpi.lib (см. рис. П-3). Теперь проект настроен на использование MPICH2 . Источник

Установка и начала использования библиотеки MPI

Иногда необходимо запустить приложение на нескольких машинах (или процессорах), чтобы улучшить производительность (т.е. уменьшить время выполнения). Можно создать компьютерную сеть для последующего запуска приложения распределённо по всем узлам. При разработке такого приложения необходимо организовать обмен сообщениями. Я знаю две реализации:

  • использование сокетов и работа с OS API напрямую,
  • использование MPI.

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

Установка библиотеки MPICH2 под Windows

Для того чтобы начать работу с библиотекой MPICH2, необходимо скачать совместимую с используемой операционной системой версию продукта здесь. Для ОС Windows – это установочный пакет формата MSI, поэтому инсталляция библиотеки проходит стандартным образом. Важно, что установку в этом случае надо проводить для всех пользователей системы.

Теперь необходимо добавить два основных исполняемых файла библиотеки mpiexec.exe и smpd.exe в список правил брандмауэра. Это необходимо, поскольку, при организации кластера используется сеть и доступ к каждому узлу сети должен быть разрешен для компонентов MPI. Конкретные настройки зависят от типа используемого брандмауэра.

На следующем этапе необходимо создать пользователя в системе, от имени которого будут исполняться компоненты библиотеки. Важно, что данный пользователь обязательно должен иметь свой пароль, т.к. MPICH2 не позволяет зарегистрировать исполняющего пользователя с пустым паролем. Регистрация осуществляется с помощью компонента wmpiregister.exe, находящегося в папке bin библиотеки и имеющего понятный оконный интерфейс:

Однако, это возможно сделать, используя консольную команду [путь_к_библиотеке]/bin/mpiexec -register.

Установка практически завершена. Осталось проверить правильность всех сделанных настроек. Для этой цели в папке examples есть примеры программ с параллельными алгоритмами. Для запуска можно использовать компонент wmpiexec.exe, который использует оконный интерфейс, который не нуждается в дополнительных комментариях.

Другой путь для исполнения приложений с использованием MPI – через консоль, например, написав подобную команду [путь_к_библиотеке]/bin/mpiexec -n 2 cpi.exe, где -n 2 указывает количество задействованных процессов (здесь их 2), а cpi.exe – это имя исполняемого приложения. Для простоты работы через консоль советую добавить в переменную окружения PATH путь к mpiexec.exe. Если выполнение приложения производится на однопроцессорной машине, то происходит эмуляция многопроцессорности, т.е. проверять работоспособность своих приложений можно «не отходя от кассы».

Читайте также:
Как накачать пресс девушке за месяц программа

Проверка работоспособности

В качестве IDE для разработки используется MVS 2005. Напишем программу, которая будет привествовать этот мир от имени разных новорожденных процессов процессов. Для этого используется пустой проект (empty project) с изменением некоторых настроек проекта.

Итак, в первую очередь добавим директории, где будут лежать подключаемые заголовочные файлы и файлы библиотеки. Если кто-то не знает, то делается это следующим образом:

  • Выбираем пункт меню Tools => Options.
  • В дропдауне “Show directories for:” выбираем пункт “Include files”.
  • Добавляем [путь_к_библиотеке]Include
  • В дропдауне “Show directories for:” выбираем пункт “Library files”.
  • Добавляем [путь_к_библиотеке]Lib
  • В Solution Explorer кликаем правой кнопкой мыши на проекте и выбираем add => existing item. Выбираем все файлы с расширением .lib в папке [путь_к_библиотеке]Lib

Проект полностью готов для работы с MPI. Могу посоветовать создавать фильтр для файлов библиотеки, добавленных в проект, чтобы они не мешались. Теперь добавим cpp файл с кодом приложения:

#include «stdio.h»
#include «mpi.h»
#include «stdlib.h»
#include «math.h»

int ProcNum;
int ProcRank;

int main( int argc, char *argv[])

Компилируем его и запускаем полученный бинарник через wmpiexec на 4 процессах.

Как видим, мир поприветствовал каждый рождённый процесс.

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

Поэтому у меня возник основной вопрос — сфера применимости в web технологиях? Пока мой интерес к параллельным вычислениям вызван другой проблемой: ускорение моделирования разного рода процессов.

Источник: onecomp.ru

За­пуск mpi-про­грамм

Для за­пус­ка MPI-про­грамм в ком­плект MPICH2 вхо­дит про­грам­ма с гра­фи­че­ским ин­тер­фей­сом Wmpiexec, ко­то­рая пред­став­ля­ет со­бой обо­лоч­ку во­круг со­от­вет­ствую­щей ути­ли­ты ко­манд­ной стро­ки Mpiexec. К со­жа­ле­нию, Wmpiexec не всегда работает корректно, по­это­му са­мый подходящий спо­соб за­пус­кать MPI-про­грам­мы — это поль­зо­вать­ся не­по­сред­ствен­но Mpiexec. Од­на­ко, рассмотрим Wmpiexec, так как эта про­грам­ма ин­ту­и­тив­но по­нят­нее.

Ок­но про­грам­мы Wmpiexec по­ка­за­но на ри­с. 1.2. (об­ра­ти­те вни­ма­ние, что вклю­чён фла­жок «more options»).

Ри­с. 1.2. Про­грам­ма Wmpiexec

Эле­мен­ты управ­ле­ния ок­на име­ют сле­дую­щий смысл:

  • По­ле вво­да «Application»: сю­да вво­дит­ся путь к MPI-про­грам­ме. Как уже бы­ло ска­за­но ра­нее, путь пе­ре­да­ёт­ся в не­из­мен­ном ви­де на все ком­пью­те­ры се­ти, по­это­му же­ла­тель­но, что­бы про­грам­ма рас­по­ла­га­лась в об­щей се­те­вой пап­ке.
  • «Number of processes»: чис­ло за­пус­кае­мых про­цес­сов. По умол­ча­нию про­цес­сы рас­пре­де­ля­ют­ся по­ров­ну меж­ду ком­пью­те­ра­ми се­ти, од­на­ко это по­ве­де­ние мож­но из­ме­нить при по­мо­щи кон­фи­гу­ра­ци­он­но­го фай­ла.
  • Кноп­ка «Execute» за­пус­ка­ет про­грам­му; кноп­ка «Break» при­ну­ди­тель­но за­вер­ша­ет все за­пу­щен­ные эк­зем­пля­ры.
  • Фла­жок «run in a separate window» пе­ре­на­прав­ля­ет вы­вод всех эк­зем­пля­ров MPI-про­грам­мы в от­дель­ное кон­соль­ное ок­но.
  • Кноп­ка «Show Command» по­ка­зы­ва­ет в по­ле спра­ва ко­манд­ную стро­ку, ко­то­рая ис­поль­зу­ет­ся для за­пус­ка MPI-про­грам­мы (Wmpiexec — обо­лоч­ка над Mpiexec). Ко­манд­ная стро­ка со­би­ра­ет­ся из всех на­стро­ек, вве­дён­ных в осталь­ных по­лях ок­на.
  • Да­лее идёт боль­шое тек­сто­вое по­ле, в ко­то­рое по­па­да­ет ввод-вы­вод всех эк­зем­пля­ров MPI-про­грам­мы, ес­ли не уста­нов­лен фла­жок «run in a separate window».
  • Фла­жок «more options» по­ка­зы­ва­ет до­пол­ни­тель­ные па­ра­мет­ры.
  • «working directory»: сю­да мож­но вве­сти ра­бо­чий ка­та­лог про­грам­мы. Опять же, этот путь дол­жен быть ве­рен на всех вы­чис­ли­тель­ных уз­лах. Ес­ли путь не ука­зан, то в ка­че­стве ра­бо­че­го ка­та­ло­га бу­дет ис­поль­зо­вать­ся ме­сто на­хож­де­ния MPI-про­грам­мы.
  • «hosts»: здесь мож­но ука­зать че­рез про­бел спи­сок вы­чис­ли­тель­ных уз­лов, ис­поль­зуе­мых для за­пус­ка MPI-про­грам­мы. Ес­ли это по­ле пу­стое, то ис­поль­зу­ет­ся спи­сок, хра­ня­щий­ся в на­строй­ках ме­не­дже­ра про­цес­сов те­ку­ще­го уз­ла.
  • «environment variables»: в этом по­ле мож­но ука­зать зна­че­ния до­пол­ни­тель­ных пе­ре­мен­ных окру­же­ния, уста­нав­ли­вае­мых на всех уз­лах на вре­мя за­пус­ка MPI-про­грам­мы. Син­так­сис сле­дую­щий: имя_1=зна­че­ние_1, имя_2=зна­че­ние_2.
  • «drive mappings»: здесь мож­но ука­зать се­те­вой диск, под­клю­чае­мый на каж­дом вы­чис­ли­тель­ном уз­ле на вре­мя ра­бо­ты MPI-про­грам­мы. Син­та­кис: Z:\winsrvwdir.
  • «channel»: поз­во­ля­ет вы­брать спо­соб пе­ре­да­чи дан­ных меж­ду эк­зем­пля­ра­ми MPI-про­грам­мы.
  • «extra mpiexec options»: в это по­ле мож­но вве­сти до­пол­ни­тель­ные клю­чи для ко­манд­ной стро­ки Mpiexec.

Источник: studfile.net

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru