Microsoft mpi что это за программа и нужна ли она

Обновлено: 03.07.2024

В этом документе описана установка и использование MPI (интерфейса передачи сообщений) в OpenMDAO в Windows (64-разрядная версия) с использованием Python3 (64-разрядная версия). Мы начинаем с установки необходимых пакетов и тестируем их, чтобы убедиться, что они работают. Затем мы рассмотрим простой пример использования преимуществ MPI в OpenMDAO.

Питон 3¶

Среда Python 3 должна быть установлена ​​либо с официальной страницы Python, либо с сайта Anaconda. Python 3.5 и более поздние версии используют Microsoft Visual Studio 2015. Python 3.3 и 3.4 используют Microsoft Visual Studio 2010. Устанавливаемая версия должна соответствовать устанавливаемой среде Visual Studio. Убедитесь, что вы также установили numpy и scipy в своей среде.

Microsoft Visual Studio¶

В этом руководстве в качестве компилятора C/C++ использовалась Visual Studio 2010 Professional, поскольку официальная сборка Python 3.4 была скомпилирована с этой версией. Python2 нельзя использовать, так как он был создан с помощью Visual Studio 2008, которого больше не существует.

Microsoft MPI¶

Вам потребуется установить MSMPI (Microsoft MPI). Вам потребуется как пакет SDK (msmpisdk.msi), так и среда выполнения (MSMpiSetup.exe). На момент написания этой статьи использовалась версия 7.0.12437.6.

Git для Windows¶

Вам нужно будет получить копию Git для Windows и убедиться, что она указана на вашем пути.

Cygwin¶

Для сборки PETSc требуется среда Cygwin64. Хотя используется Visual Studio Compiler CL, он необходим для запуска скриптов configure и make-файлов. Cygwin64 должен быть установлен со стандартными пакетами разработки. Кроме того, вам потребуется установить пакет diffutils.

Mpi4py¶

Первый пакет, который необходимо установить, — это mpi4py, который предоставляет привязки Python для MPI. Вам нужно скачать и извлечь исходный код. Соберите mpi4py с помощью следующей команды:

Программа установки должна обнаружить, что MSMPI SDK установлен, и если это так, вы увидите это на экране в выходных данных сборки:

После успешной сборки продолжайте установку с помощью:

PETSc¶

Следующий шаг – сборка PETSc из исходного кода. PETSc расшифровывается как «Портативный, расширяемый набор инструментов для научных вычислений». Он построен на MPI. Получите последний исходный пакет petsc-lite. На момент написания этой статьи использовалась версия 3.6.3.

Запустите Cygwin64. Мы временно хотим отключить компоновщик Cygwin, поэтому переименуйте его:

Закройте терминал Cygwin64. Откройте новое окно терминала ( cmd ) и выполните следующие команды:

Теперь переключитесь на новый терминал Cygwin, открытый mintty.exe. Этот новый терминал cygwin теперь будет иметь компиляторы Visual Studio в пути. Вы должны убедиться, что команда cl работает и что команда link является Microsoft link.exe, а не Cygwin link.exe. Кроме того, в пути должна быть команда GNU make. Также убедитесь, что в пути указана установленная версия Python. По умолчанию Anaconda python 2.7 в порядке. Теперь запустите:

Это займет некоторое время, и по завершении вы получите команду make в конце после сообщения «Этап настройки завершен. Теперь создайте библиотеки PETSc с помощью (gnumake build)». Идите вперед и запустите эту команду, которая будет выглядеть примерно так:

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

Наконец, восстановите компоновщик Cygwin в исходное состояние:

Кроме того, под petsc-3.6.3/arch-mswin-c-opt/lib сделайте дубликат libpetsc.lib и переименуйте его в petsc.lib для подготовки к установке petsc4py .

petsc4py¶

Следующим шагом будет установка petsc4py, которая представляет собой привязку Python для PETSc . Получите последнюю версию. На момент написания этой статьи использовалась версия 3.6.0. Откройте новое окно терминала ( cmd ). Если вы используете Anaconda, активируйте среду Python3, в которой вы хотите использовать petsc4py. Затем установите следующие две переменные среды:

В каталоге petsc4py нам нужно внести исправления. Откройте conf/baseconf.py и закомментируйте строку 186 или строку, которая гласит:

Теперь перейдите к извлеченному каталогу petsc4py и выполните следующую команду, чтобы создать его, убедившись, что все пути указаны правильно:

Нам пришлось вручную указать, где находятся все пути и каталоги библиотек через build_ext, потому что setup.py по умолчанию попытается использовать пути Cygwin, которые мы использовали для сборки petsc, которые не будут работать в нашем терминале cmd. setup.py по-прежнему будет вставлять пути Cygwin, но процесс сборки будет выдавать только предупреждения и игнорировать эти пути Cygwin.

Теперь установите petsc4py с помощью следующей команды:

Проверка установленных пакетов¶

Чтобы убедиться, что MPI и petsc4py работают в вашей среде, вы можете использовать этот небольшой скрипт petsc4py:

Этот скрипт создает вектор PETSc MPI/параллельный с четырьмя элементами, устанавливает значение этих элементов, а затем вычисляет общую сумму всех элементов. Вы можете запустить скрипт с двумя процессами, используя mpiexec :

Вывод будет выглядеть примерно так:

Как видите, поскольку у нас был четырехэлементный вектор и два процесса MPI, PETSc автоматически и равномерно разделил вектор пополам между двумя процессами. Если бы мы попробовали три процесса, PETSc не смог бы аккуратно разделить наш четырехэлементный вектор по этим процессам, но все равно вычислил бы (неэффективно) правильный результат:

ryanblog3


Прошло около полутора лет с тех пор, как мы выпустили повторно используемую облачную службу Azure для подготовки простого кластера Windows MS-MPI без установки HPC Pack. С тех пор Azure претерпела множество изменений, и мы подумали, что стоит вернуться к этой теме, чтобы увидеть, как выглядит текущая ситуация с запуском приложений Windows MPI в облаке.
Во-первых, облачным службам и так называемым «виртуальным машинам IaaS версии 1» присвоен статус «классический» на портале Azure. Microsoft теперь рекомендует, чтобы все новые развертывания использовали Azure Resource Manager (ARM). Azure Resource Manager позволяет клиентам отправлять декларативный шаблон, написанный в формате json, который определяет все облачные ресурсы, такие как виртуальные машины, балансировщики нагрузки и сетевые интерфейсы, которые необходимо создать как часть приложения или кластера. Между ресурсами можно определить зависимости, а диспетчер ресурсов достаточно умен, чтобы распараллелить развертывание ресурсов там, где это возможно. Это может значительно ускорить развертывание нового кластера или приложения по сравнению со старой моделью. Azure Resource Manager по сути является эквивалентом CloudFormation на AWS. Однако здесь есть некоторые дополнительные тонкости, такие как возможность указывать циклы в шаблоне. Однако работа с условным развертыванием ресурсов в шаблонах ARM сложнее, чем в CloudFormation. Оба сервиса страдают от попыток поддерживать логику программирования внутри json. В целом, однако, развертывания ARM намного проще в управлении, чем классические.
Проект Azure Quickstart Templates на сайте Github — отличный ресурс для поиска шаблонов ARM. Развернуть приложение буквально так же просто, как нажать кнопку «Развернуть в Azure» и ввести несколько значений параметров шаблона. Что касается высокопроизводительных вычислений, доступен удобный пример пакета высокопроизводительных вычислений, который можно использовать для подготовки и настройки планировщика.
Однако, как мы уже упоминали в нашем исходном сообщении в блоге, использование HPC Pack может быть не лучшим выбором, если вы только начинаете работу с MPI и просто хотите развернуть новый кластер MPI, протестировать свое приложение, а затем закрыть все снова вниз. Хотя HPC Pack предоставляет возможности полноценного планировщика HPC, эта дополнительная мощность достигается за счет некоторых накладных расходов на узле отправки (настройка Active Directory, установка SQL Server и т. д.). Это может быть излишним, если вы просто хотите, чтобы одноразовый кластер запускал приложение MPI.
Другим потенциально более легким вариантом для запуска приложений Windows MPI в облаке является пакетная служба Azure. Недавно Microsoft объявила о поддержке выполнения задач MPI с несколькими экземплярами на пуле виртуальных машин. Это выглядит полезной опцией для тех, кто заинтересован в автоматизации выполнения заданий MPI, однако требует определенных вложений ресурсов разработчика, чтобы ознакомиться со службой, прежде чем задания MPI можно будет запускать.
Мы считаем, что еще есть место для шаблона Azure Resource Manager, который 1) запускает простой кластер Windows MPI без накладных расходов, связанных с пакетом HPC, и 2) позволяет запускать задания MPI из командной строки или в пакетном режиме. скрипт из любой операционной системы.
По второму пункту выше, еще одно интересное изменение после нашего первоначального поста заключается в том, что Microsoft решила официально поддерживать SSH для удаленного доступа. После этого объявления предварительная версия кода была доступна на GitHub.
Итак, учитывая эти части, мы решили собрать простой шаблон ARM для достижения обеих этих целей. Для тех, кто только начинает работать с MS-MPI, мы считаем, что это более простой вариант запуска кода в кластере Windows в Azure.
Вот простой пример использования:

ryan

  1. Нажмите кнопку «Развернуть в Azure» в проекте Github. Заполните параметры шаблона. Здесь подготавливается кластер Standard_D2 с двумя узлами:


  2. Запишите общедоступный IP-адрес, назначенный кластеру, после завершения развертывания.
  3. Шаблон активирует SSH и SFTP на всех узлах.Загрузите свое приложение на первую виртуальную машину в кластере (N0). Здесь мы используем приложение hello world из этого поста в блоге.
  4. SSH в N0, скопируйте двоичный файл MPI в общий каталог SMB (C:\shared) и запустите его. Введите свой пароль в качестве
    аргумента для параметра -pwd (отредактировано ниже). Аргумент командной строки -savecreds надежно сохранит ваши учетные данные
    на вычислительных узлах, поэтому вам не придется указывать пароль при будущих вызовах mpiexec. Подробнее см. здесь.

И все! Для тех, кто более склонен к графическому интерфейсу, RDP также открыт для всех экземпляров в кластере MPI. Перейдите на страницу проекта Github, чтобы узнать подробности.

Похожие записи

Понимание того, как думает инженер

Понимание того, как думает инженер

Когда инженеры-программисты смотрят на фрагмент кода, первый вопрос, который они задают себе, — «Что он делает?» Следующий вопрос: «Почему…

Microsoft MPI (MS-MPI) — это реализация Microsoft стандарта интерфейса передачи сообщений для разработки и запуска параллельных приложений на платформе Windows. MS-MPI предлагает несколько преимуществ: Простота переноса существующего кода, использующего MPICH.

Является ли Microsoft MPI бесплатным?

Microsoft Download Manager бесплатен и доступен для скачивания прямо сейчас. Примечание. Для этой загрузки доступно несколько файлов. После того, как вы нажмете на кнопку «Скачать», вам будет предложено выбрать нужные файлы. Microsoft MPI (MS-MPI) v10.

Как установить Microsoft MPI?

Чтобы использовать MPI с Windows, вам необходимо установить бесплатную загрузку Microsoft MPI. Перейдите на страницу установки и загрузите MSMpiSetup.exe. После загрузки запустите исполняемый файл и следуйте инструкциям. Если вы хотите установить PATH на постоянной основе, следуйте этим инструкциям.

Как добавить MPI в Visual Studio?

Запуск MPI из Visual Studio

  1. установка команды запуска (Свойства конфигурации — Отладка — Команда) на полный путь к файлу mpiexec.exe (например, C:\Program Files (x86)\MPICH2\bin\mpiexec.exe)
  2. задание для аргументов (Свойства конфигурации – Отладка – Аргументы команды) значения -n 2 $(TargetPath)

Работает ли MPI в Windows?

Как запустить программу MPI C в Windows?

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

Что делает MPI INIT?

Функции MPI_INIT и MPI_FINALIZE используются для запуска и завершения вычисления MPI соответственно. MPI_INIT должен вызываться перед любой другой функцией MPI и должен вызываться ровно один раз для каждого процесса. Никакие другие функции MPI не могут быть вызваны после MPI_FINALIZE.

Как запустить код MPI?

Вот один из способов компиляции и запуска программ MPI:

  1. [1] ДЛЯ СОСТАВЛЕНИЯ ПРОГРАММЫ MPI:
  2. A) Используйте следующую команду: qsub -I -V -l walltime=00:30:00,nodes=2:ppn=2:prod.
  3. Б)
  4. C) Теперь вы вошли в узел запуска.
  5. [3] ВЫХОД:
  6. Примечание. С вас будет взиматься плата за время настенных часов, используемое всеми запрошенными узлами, пока вы не завершите задание.

Что такое MPI C++?

MPI — это каталог программ C++, которые иллюстрируют использование интерфейса передачи сообщений для параллельного программирования. MPI позволяет пользователю написать программу на знакомом языке, таком как C, C++, FORTRAN или Python, и выполнять вычисления параллельно на произвольном количестве взаимодействующих компьютеров.

Могу ли я запустить MPI в Windows?

Как настроить MPI?

Есть несколько общих шагов. Приобретите систему параллельных вычислений. Установить МПИ. Настройте свою среду….

  1. Установите Open MPI локально в /opt/openmpi на всех хостах.
  2. Установите Open MPI в экспортированном по NFS каталоге, смонтированном в /cluster/apps/openmpi на каждом хосте.
  3. Установите Open MPI в домашний каталог, экспортированный через NFS.

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

К счастью, с тех пор ситуация изменилась. На Supercomputing 2013 Аргоннская национальная лаборатория, Intel, Cray и IBM объявили о совместной инициативе по двоичной совместимости реализаций MPI. Благодаря этой инициативе реализации MPI на основе MPICH становятся бинарно совместимыми друг с другом, и не требуется повторная компиляция для использования другой реализации MPI с вашим скомпилированным приложением MPI.Это дает возможность сравнить производительность конкретного приложения HPC при использовании различных реализаций MPI.

Библиотека Intel® MPI для Windows* имеет следующие преимущества:

  • Поддержка широкого спектра аппаратного и программного обеспечения кластера
    • Полная поддержка и настроенная производительность всех современных процессоров Intel®;
    • Полная поддержка и настроенная производительность широкого спектра современных межсоединений, полная поддержка межсоединений Intel®;
    • Отслеживание всех событий MPI в параллельном приложении;
    • Обнаружение дисбаланса;
    • проверки корректности MPI;
    • API для инструментовки пользовательского кода;
    • Библиотека Intel MPI может собирать ключевые статистические данные о параллельном выполнении для выявления проблем и оптимизации производительности.
    • Большой набор элементов управления с помощью переменных среды, управляющих флагов или файлов конфигурации;
    • Онлайн-поддержка с Intel® Premier Support; ; .

    Требования

    Установите библиотеку Intel MPI для ОС Windows в системе на базе архитектуры Intel® 64.

    Пошаговое руководство

    Чтобы использовать библиотеку Intel MPI 5.1 в Windows с приложениями на основе MS-MPI*, вы можете перекомпилировать исходный код вашего приложения с помощью библиотеки Intel MPI или использовать двоичную совместимость без перекомпиляции.

    В этой статье будет рассмотрен последний вариант.

    Компилятор Intel® C++/Fortran для Windows используется для создания приложений.

    Давайте рассмотрим следующее простое приложение MPI:

      В целях тестирования скомпилируйте приложение с помощью MS-MPI:

    > dumpbin /depends .exe

    Дамп файла testapp.exe

    Тип файла: ИСПОЛНЯЕМОЕ ИЗОБРАЖЕНИЕ

    Изображение имеет следующие зависимости:

    > mpiexec –n 2 testapp.exe

    Майкрософт MPI 7.0.12437.6

    > скопировать impi.dll msmpi.dll

    > mpiexec –n 2 testapp.exe

    Библиотека Intel(R) MPI 5.1.2 для ОС Windows*

    > ifort путь к каталогу включения MS-MPI >/mpi.f90 testapp.f90 -o testapp.exe -I" путь к каталогу включения MS-MPI >" -I"" путь к каталогу включения MS-MPI >\ x64"/ссылка/LIBPATH:"

    >\x64" msmpifec.lib msmpi.lib

    > mpiexec –n 2 testapp.exe

    Майкрософт MPI 7.0.12437.6

    > скопировать impi.dll msmpi.dll

    > mpiexec –n 2 testapp.exe

    Библиотека Intel(R) MPI 5.1.2 для ОС Windows*

    Заключение

    В этой статье показано, как запустить приложение, связанное с реализацией MPI, отличной от Intel, с использованием библиотеки Intel MPI в ОС Windows*. Чтобы оценить библиотеку Intel MPI, вы можете бесплатно загрузить среду выполнения библиотеки Intel MPI (с ограниченными возможностями поддержки). Дополнительные сведения см. в разделе часто задаваемых вопросов о лицензировании библиотеки Intel MPI.

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

    Читайте также: