Использование интерфейса обмена сообщениями Microsoft (MS-MPI) Техническая документация Эрик Ланц (Eric Lantz) Senior Program Manager Lead (старший руководитель менеджеров проекта), корпорация «Майкрософт» Обновление: июнь 2008 г. Этот документ был разработан до выпуска продукта, поэтому мы не можем гарантировать, что все описанные детали будут соответствовать тому, что находится в продукте. Информация, приведенная в этом документе, соответствует позиции корпорации «Майкрософт» в отношении описываемых задач на момент публикации документа. Из-за необходимости соответствовать изменяющимся рыночным условиям сведения в этом документе не должны расцениваться как обязательства корпорации «Майкрософт». Актуальность представленной информации позднее даты ее публикации не гарантируется. Этот документ носит исключительно информационный характер. КОРПОРАЦИЯ «МАЙКРОСОФТ» НЕ ПРЕДОСТАВЛЯЕТ НИКАКИХ ГАРАНТИЙ, ЯВНЫХ, ПОДРАЗУМЕВАЕМЫХ ИЛИ ПРЕДПИСАННЫХ ЗАКОНОМ В ОТНОШЕНИИ СВЕДЕНИЙ, СОДЕРЖАЩИХСЯ В ЭТОМ ДОКУМЕНТЕ. Соблюдение всех применимых авторских прав является обязанностью пользователя. Воспроизведение, сохранение или размещение любых частей документа в информационно-поисковых системах, а также передача этих частей в любой форме и любым способом: электронным, механическим, путем фотокопирования, записи или иными методами, без официального письменного уведомления корпорации «Майкрософт» запрещается. На материалы, содержащиеся в документе, может распространяться действие патентов, заявок на патенты, товарных знаков или других прав на интеллектуальную собственность корпорации «Майкрософт». Документ не дает никаких разрешений на использование патентов, товарных знаков, авторских прав или иных форм интеллектуальной собственности, за исключением случаев, когда эти права предоставляются явным образом на основании письменного лицензионного соглашения корпорации «Майкрософт». © Корпорация «Майкрософт» (Microsoft Corp.), 2008. Все права защищены. Microsoft, Active Directory, Microsoft System Center, Visual Studio, SQL Server, Microsoft Exchange, Windows и Windows Server являются товарными знаками группы компаний «Майкрософт». Все другие товарные знаки являются собственностью их соответствующих владельцев. Содержание Описание интерфейса MPI ..................................................................................................................... 1 Сравнение интерфейсов MS MPI и MPICH2 .......................................................................................... 1 MS MPI: возможности для разработки ПО............................................................................................ 2 Возможности Mpiexec ............................................................................................................................ 3 Интеграция со средством отслеживания событий ........................................................................... 4 Совместимые протоколы и оборудование ........................................................................................... 6 Топология сети ........................................................................................................................................ 7 Интеграция со службой каталогов Active Directory .............................................................................. 9 Учетные данные и управление процессами ......................................................................................... 9 Приложение Пример простой программы MPI ........................................................................................................ 12 Ссылки по темеI..................................................................................................................................... 12 Введение Пакет Windows® HPC Server 2008 поставляется на двух DVD-дисках. На первом диске поставляется ОС Windows Server® 2008 и HPC Server Edition, на втором — пакет Microsoft® HPC Pack 2008, включающий в себя планировщик заданий, новый высокопроизводительный стек интерфейса передачи сообщений (MPI) и новое управляющее приложение, использующее интерфейс Microsoft® System Center для интеграции и развертывания образов узлов, их диагностики, формирования отчетности и управление кластерами. Этих средств достаточно для создания высокопроизводительных систем (high performance computing, HPC) на существующих 64-разрядных компьютерах. Интерфейс MPI Программное обеспечение интерфейса передачи сообщений (MPI) является переносимым, гибким, независимым от используемой платформы и от поставщика стандартным средством передачи сообщений на HPC-узлах. «MPI» — это название спецификации, а «Microsoft MPI» (или «MS-MPI»), «MPICH2» и другие подобные термины — это названия реализаций этой стандартной спецификации. «MPI2» — это расширение исходной спецификации MPI. Главное предназначение интерфейса MPI — организация взаимодействия узлов в HPC-кластере. MPI позволяет связывать узлы между собой и предоставляет переносимый механизм межпроцессного взаимодействия с широкими возможностями, благодаря которому упрощается взаимодействие сотен и тысяч работающих параллельно процессоров. Интерфейс MPI состоит из двух основных частей: прикладного программного интерфейса (API), поддерживающего более 160 функций, и средства запуска, которое позволяет пользователям запускать приложения MPI. Сравнение MS MPI и MPICH2 Наиболее известной реализацией спецификации MPI является эталонная реализация MPICH2, которая была выполнена и поддерживается национальной лабораторией Argonne. MPICH2 является реализацией спецификации MPI2 с открытым исходным кодом и широко используется в HPC-кластерах. Дополнительные сведения о спецификации MPI2 можно получить на сайте спецификация MPI2 или на Web-форуме MPI. Реализация MS MPI подразумевает максимальную совместимость с эталонной реализацией MPICH2, за исключением процедур запуска и управления заданиями. Прикладные интерфейсы API, используемые независимыми поставщиками ПО (ISV), идентичны интерфейсам в MPICH2. Отличия в реализации MPICH2 от MS MPI были необходимы для обеспечения соответствия строгим требованиям безопасности в Windows HPC Server 2008. Реализация MS MPI включает все функции MPICH2, за исключением динамического создания и публикации процессов. Эти функции могут быть включены в последующие выпуски. Примечание: при использовании Windows HPC Server 2008 необязательно использовать реализацию MS MPI. Можно применять любой стек MPI. Однако возможности для обеспечения безопасности, которые были добавлены в реализацию MS MPI, могут быть недоступны в других реализациях стека MPI. Windows HPC Server 2008 - Using MS MPI White Paper 1 Возможности MS MPI Реализация MS MPI является полноценной реализацией спецификации MPI2 и включает более 160 APIфункций, доступных независимым поставщикам ПО для организации межпроцессного взаимодействия и управления. Дополнительно имеется средство запуска приложений, обеспечивающее высокую степень контроля выполнения и управления параметрами для каждого MPI-приложения. MS MPI: возможности для разработки ПО Несмотря на то, что реализация MS MPI включает более 160 API-функций, для большинства приложений достаточно около десятка из них. MS MPI включает интерфейсы к языкам Cи, Fortran 77 и Fortran 90. Средства разработки Microsoft Visual Studio® Professional Edition и Visual Studio Team System включают средства удаленной отладки, поддерживающие MS MPI. Разработчики могут запускать MPI-приложения на нескольких вычислительных узлах из окружения Visual Studio. Затем осуществляется автоматическое подключение Visual Studio к процессам на каждом узле, что позволяет приостанавливать выполнение программ и проверять значения их переменных. Использование интерфейса MS MPI в Windows HPC Server 2008 обеспечивает поддержку 32- и 64-разрядных приложений. Для управления перечнями процессов, которые могут взаимодействовать между собой, в интерфейсе MPI используются объекты-коммуникаторы (communicators). Это процессы, каждый из которых может получать сообщения от остальных, игнорируя при этом все внутренние сообщения, за исключением сообщений, адресованных непосредственно им самим. У каждого процесса есть идентификатор или ранг коммуникатора. По умолчанию используется коммуникатор MPI_COMM_WORLD, который включает все процессы задания. Разработчики могут создавать собственные коммуникаторы, чтобы процессы взаимодействовали лишь с подмножеством процессов этого коммуникатора. Процедуры взаимодействия в реализации MS MPI также содержат коллективные операции, позволяющие за одно обращение собирать и анализировать все результаты конкретной операции на всех узлах коммуникатора. Интерфейс MPI предоставляет контроль высокого уровня над взаимодействиями и буферами на узлах кластера. Стандартные процедуры подходят для многих действий, однако интерфейс MPI также поддерживает специфичную буферизацию. Операции взаимодействия могут быть блокирующими или неблокирующими. Интерфейс MPI поддерживает как встроенные типы данных, так и производные. Данные встроенных базовых типов располагаются в памяти непрерывно, а данные производных типов могут располагаться как непрерывно, так и раздельно. Спецификация MPI2 поддерживает четыре модели многопоточности (multithreading): { MPI_THREAD_SINGLE}. Выполняется только один поток (тред). { MPI_THREAD_FUNNELED}. Процесс может быть многопоточным, однако методы интерфейса MPI вызываются только из основного потока (основной поток пропускает все вызовы через себя). { MPI_THREAD_SERIALIZED}. Процесс может быть многопоточным, и методы интерфейса MPI могут вызываться из любых потоков, но только последовательно. Два потока не могут вызывать методы интерфейса одновременно. { MPI_THREAD_MULTIPLE}. Несколько потоков могут обращаться к MPI без ограничений. Реализация MS MPI поддерживает модели многопоточности вплоть до MPI_THREAD_SERIALIZED (включительно). В спецификации MPICH2 на текущий момент нет полной поддержки модели MPI_THREAD_MULTIPLE. Windows HPC Server 2008 - Using MS MPI White Paper 2 Возможности Mpiexec Команда job submit является основным механизмом загрузки и запуска заданий на кластере Windows HPC Server 2008. Она используется для передачи большого количества параметров управления запуском приложений и выполняет на кластере программу mpiexec.exe, которая загружает MS MPI. Можно указать необходимое количество процессоров и перечень узлов, которые могут быть использованы для конкретного задания. В свою очередь программа mpiexec предоставляет полный контроль над выполнением заданий на кластере. Типичная командная строка для запуска приложения MPI с помощью планировщика заданий выглядит следующим образом: job submit /numprocessors:8 /runtime:5:0 mpiexec myapp.exe Эта команда предписывает планировщику заданий запустить приложение MyApp.exe на восьми процессорах с ограничением максимального времени выполнения пятью часами. В табл. 1 представлены другие распространенные аргументы для программы mpiexec. Таблица 1. Распространенные аргументы программы mpiexec Аргумент mpiexec mpiexec Результат Процесс MyApp.exe будет запущен на всех MyApp.exe -n * ядрах, выделенных заданию, либо (в случае MyApp.exe использования пакета разработки HPC Server 2008 SDK) на каждом ядре локальной системы. Экземпляр процесса MyApp.exe будет запущен mpiexec -hosts 2 Node1 1 Node2 1 MyApp.exe на каждом из двух указанных вычислительных узлов. Процесс MyApp.exe будет запущен на каждом mpiexec -cores 1 MyApp.exe узле, выделенном для задания. При использовании совместно с командой job submit процесс MyApp.exe будет запущен на четырех ядрах, выделенных mpiexec -n 4 для задания. При использовании пакета HPC MyApp.exe Server 2008 SDK кластер будет эмулироваться на одном компьютере (на котором выполняется программа mpiexec) путем запуска четырех процессов MyApp.exe. mpiexec -wdir \\headnode\MyFolder MyApp.exe Указывает единый общий рабочий каталог для всех процессов MyApp.exe в задании. Указывает отдельный рабочий каталог (с пробелами в имени, из-за которых имя папки требуется заключить в кавычки) для каждого mpiexec -wdir “%%USERPROFILE%%\My Folder” MyApp.exe процесса MyApp.exe в задании. Будет использован домашний каталог пользователя на каждом узле (значение берется из переменной окружения USERPROFILE). mpiexec –n 1 master : -n * worker Windows HPC Server 2008 - Using MS MPI White Paper Запускается мастер-процесс, а на оставшихся 3 Аргумент Результат ядрах, выделенных для задания, запускается рабочий процесс. При использовании пакета разработки HPC Server 2008 SDK используются свободные ядра локальной системы. Запускается мастер-процесс и 31 рабочий mpiexec –gmachinefile nodes.txt –n 1 master : worker процесс. В файле nodes.txt перечислены четыре сервера, на каждом из которых имеется по восемь ядер. Отслеживание коллективных вызовов MPI и вызовов типа «точка-точка», которые mpiexec -trace (pt2pt,coll,interconn) -n 2 app1 осуществляются двумя процессами приложения, а также внутренних вызовов, которые осуществляются средствами MS MPI. mpiexec -env MPICH_NETMASK 157.59.0.0/255.255.0.0 MyApp.exe Перенаправление MPI-сообщений приложения MyApp.exe в подсеть кластера с адресами 157.59.x.x/255.255.0.0. Приложение MyApp.exe запускается mpiexec –lines MyApp.exe на всех ядрах, выделенных для задания, а ко всей выводимой информации добавляется префикс с рангом источника вывода. Программа mpiexec позволяет задавать параметры с помощью аргументов командной строки и переменных окружения и может быть запущена с помощью командных файлов. Это обеспечивает максимальную гибкость управления заданиями как для администраторов, так и для пользователей кластера Windows HPC Server 2008. Можно задать значения переменных окружения для конкретного задания, а можно задать глобальные значения для всего кластера. Важным улучшением спецификации MPICH2, реализованным в MS MPI, является управление безопасностью во время выполнения заданий MPI. Каждое задание выполняется с учетными данными пользователя, которые доступны только во время выполнения задания и удаляются после его завершения. Отдельные процессы могут получить доступ только к своим маркерам входа, доступ к учетным данным других заданий или процессов у них отсутствует. С помощью планировщика заданий можно зарезервировать узлы для конкретных заданий (с указанием учетных данных), а затем загрузить эти задания непосредственно из среды разработки Visual Studio 2005 с помощью программы Mpiexec. Подробное руководство можно найти на сайте Microsoft в разделе Отладка распараллеленных приложений с помощью Visual Studio 2005 (на английском языке). Эта функция значительно упрощает процесс отладки при разработке приложений. Также можно создавать небольшие отладочные кластеры и работать с ними с помощью программы Mpiexec непосредственно в среде разработки Visual Studio. Интеграция со средством отслеживания событий В Windows HPC Server 2008 появилась новая полезная возможность для разработчиков, которым необходимо оперативно отлаживать и настраивать MPI-приложения. Интерфейс MS MPI теперь интегрируется со средством отслеживания событий для Windows (ETW), входящим в Windows Server 2008. Это позволяет разработчикам выполнять следующие действия: Windows HPC Server 2008 - Using MS MPI White Paper 4 осуществлять трассировку в рабочих условиях без использования специальных сборок — достаточно добавить к команде mpiexec флаг trace, чтобы автоматически создавались трассировочные файлы для последующего анализа; создавать журналы событий MPI с временной корреляцией от всех процессов на всех узлах, где выполняется MPI-приложение. Команда mpisync обеспечивает высокоточную синхронизацию событий, что упрощает выявление взаимосвязей. Трассировка в MS-MPI имеет двойное назначение: она может быть использована для анализа производительности и для диагностики. Высокоточная синхронность временных данных позволяет разработчикам детально анализировать продолжительность этапов выполнения приложения, запись в журнал всех обращений к MPI, а также передаваемых и возвращаемых значений упрощают диагностику. На рис. 1 представлен поток трассировки MPI-приложения с помощью службы трассировки событий для Windows. Рисунок 1. Поток трассировки событий Windows HPC Server 2008 - Using MS MPI White Paper 5 Реализация интерфейса MPI Исходная спецификация интерфейса MPI была сформулирована и согласована сообществом MPI Forum в начале 90-х гг. В 1996 г. этим же сообществом, состоящим из примерно сорока организаций, спецификация была расширена и появилась спецификация MPI2. На сегодняшний день спецификации MPI де-факто являются стандартами для передачи сообщений на большинстве высокопроизводительных вычислительных платформ. Программы, разработанные с поддержкой MPI, можно переносить между платформами и различными реализациями MPI без изменения исходного кода. Несмотря на то, что изначально интерфейс MPI разрабатывался для распределенных систем, существующие реализации также поддерживают системы с разделяемой памятью. Реализация MS MPI, помимо всего прочего, обеспечивает низкую задержку при взаимодействии через разделяемую память. Реализация такого вида взаимодействия, выполненная с нуля в Windows HPC Server 2008, улучшает общую эффективность взаимодействия между ядрами (особенно в тех случаях, когда разделяемая память используется совместно с компьютерной сетью), а также снижает загрузку процессоров при передаче сообщений между ядрами. Совместное использование нового интерфейса MS MPI NetworkDirect и нового сетевого стека в ОС Windows Server 2008 позволяет добиться значительного увеличения эффективности HPC-кластера. Совместимые протоколы и оборудование В состав Windows HPC Server 2008 входит интерфейс MS MPI, являющийся частью пакета HPC Pack 2008. Для обеспечения максимальной совместимости с высокопроизводительным сетевым оборудованием и максимальной производительности работы сети этот интерфейс использует протокол NetworkDirect. Может использоваться любое подключение через Ethernet, которое поддерживается в ОС Windows Server 2008, а также любое подключение с низкой задержкой и высокой пропускной способностью: InfiniBand, 10Gigabit Ethernet или Myrinet. В ОС Windows HPC Server 2008 также поддерживаются любые сетевые подключения, у которых есть NetworkDirect или Winsock Direct провайдер. Подключение Gigabit Ethernet обеспечивает высокую скорость и эффективность взаимодействия, в то время как подключения InfiniBand, 10-Gigabit Ethernet и Myrinet идеально подходят для приложений, которым необходима низкая задержка и высокая пропускная способность. Windows HPC Server 2008 - Using MS MPI White Paper 6 Рисунок 2. Архитектура NetworkDirect Протокол NetworkDirect работает в обход службы Windows Socket (Winsock) и стека протокола TCP/IP. Если оборудование поддерживает удаленный прямой доступ к памяти (RDMA), этот протокол также позволяет улучшить производительность и снизить нагрузку на процессор. На рис. 2 показан принцип работы интерфейса MS MPI с драйвером NetworkDirect в обход службы Winsock и стека протокола TCP/IP. Топология сети Система Windows HPC Server 2008 поддерживает множество различных сетевых топологий (рис.3), включая топологии с выделенным сетевым интерфейсом для сообщений MPI и топологии с приватной сетью для внутрикластерного взаимодействия и передачи сообщений MPI. Поддерживается даже топология с одним сетевым интерфейсом на каждом узле, когда узлы взаимодействуют между собой через открытую сеть. Далее перечислены пять поддерживаемых сетевых топологий. Три сетевых интерфейса на каждом узле. Один сетевой интерфейс подключен к корпоративной сети, другой — к приватной сети, выделенной для управления кластером, третий — к высокоскоростной выделенной сети приложений. Windows HPC Server 2008 - Using MS MPI White Paper 7 Три сетевых интерфейса на головном узле и по два на каждом узле кластера. Головной узел подключен к корпоративной сети, а каждый вычислительный узел подключен к приватной сети и к высокоскоростной сети приложений. Два сетевых интерфейса на каждом узле. Один сетевой интерфейс подключен к корпоративной сети, а другой — к приватной выделенной сети кластера. Два сетевых интерфейса на головном узле и по одному на каждом узле кластера. Головной узел подключен к корпоративной сети, а все вычислительные узлы подключены к приватной. Один сетевой интерфейс на каждом узле. Для всех видов сетевого взаимодействия используется корпоративная сеть. В этом ограниченном сценарии не поддерживается автоматическое развертывание вычислительных узлов с помощью службы развертывания Windows. Требуется ручная настройка и активация каждого вычислительного узла. Рисунок 3. Типичная сетевая топология системы Windows HPC Server 2008 Благодаря тому, что в основе системы Windows HPC Server 2008 лежит ОС Windows Server 2008, она очень хорошо интегрируется с другими серверными продуктами компании «Майкрософт». Например, можно отслеживать состояние Windows HPC Server 2008 с помощью решения Microsoft System Center Operations Manager, а приложения могут интегрироваться с решением Microsoft Exchange Server для отправки владельцам отчетов о состоянии их заданий. Внимание! Для удаленной отладки приложений необходимо обеспечить прямой доступ к вычислительным узлам для рабочей станции, на которой установлена среда разработки Visual Studio. Windows HPC Server 2008 - Using MS MPI White Paper 8 Безопасность в реализации MS MPI Основным отличием реализации MS MPI от эталонной реализации MPICH2 является управление безопасностью. MS MPI поддерживает интеграцию со службой каталогов Active Directory ® для запуска заданий с учетными данными пользователей вместо использования основной учетной записи администратора. Интеграция со службой каталогов Active Directory Система Windows HPC Server 2008 интегрируется со службой каталогов Active Directory и взаимодействует с ней, что позволяет использовать безопасные учетные данные для пользователей и заданий в кластере. Перед установкой пакета HPC Pack 2008 на головной узел и созданием кластера необходимо либо присоединить головной узел к домену Active Directory, либо сделать его контроллером домена и создать на нем отдельный домен. Учетные записи Active Directory используются для создания всех заданий и выполнения их на кластере. Все задания выполняются с учетными данными пользователей, которые их загружали. Учетные данные и управление процессами Для выполнения задания MPI используются учетные данные пользователя, который загрузил это задание. Пароль или учетные данные никогда не передаются по сети в виде открытого текста. Учетные данные передаются по зашифрованным каналам с проверенной подлинностью, как это показано на рис. 4. Они сохраняются вместе с данными задания на головном узле и удаляются после завершения задания. По решению пользователя учетные данные могут быть сохранены в кэше на рабочей станции пользователя, чтобы упростить загрузку задания. При этом они сохраняются в зашифрованном виде, а ключ известен только головному узлу. Во время выполнения задания учетные данные используются для создания маркера входа и затем удаляются. У выполняющегося процесса есть только маркер входа, что позволяет еще больше изолировать учетные данные от других процессов на вычислительных узлах. Процессы выполняются на вычислительных узлах в виде одного объекта заданий Windows, что позволяет головному узлу контролировать объекты заданий и закрывать процессы после завершения работы или отмены задания. Windows HPC Server 2008 - Using MS MPI White Paper 9 Рисунок 4. Управление учетными данными заданий MPI Windows HPC Server 2008 - Using MS MPI White Paper 10 Заключение MPI и MPI2 — широко распространенные спецификации для управления сообщениями в высокопроизводительных кластерах. Одной из наиболее распространенных реализаций спецификации MPI является эталонная реализация MPICH2 с открытым исходным кодом, выполненная в национальной лаборатории Argonne. Система Windows HPC Server 2008 включает реализацию MS MPI, которая основана на реализации MPICH2 и хорошо совместима с ней. Прикладной программный интерфейс MS MPI идентичен более чем 160 вызовам интерфейса MPICH2, однако реализация MS MPI включает расширенные возможности для обеспечения безопасности и управления процессами, необходимые для крупных предприятий. Также в эту реализацию добавлена новая возможность трассировки выполнения для системы Windows HPC Server 2008. Для взаимодействия между ядрами на вычислительном узле используется эффективный механизм разделяемой памяти и сетевые драйверы NetworkDirect, что позволяет обеспечить высокую производительность сети MPI. Поддерживаются такие сетевые интерфейсы, как Gigabit Ethernet, InfiniBand, а также другие интерфейсы, у которых имеется провайдер NetworkDirect или Winsock Direct. Windows HPC Server 2008 - Using MS MPI White Paper 11 Приложение Пример простой программы MPI Распространенным примером программы MPI является программа, вычисляющая значение числа Пи: #include <time.h> #include <mpi.h> void main(int argc, char *argv[]) { Int NumIntervals = 0; //количество интервалов в домене [0,1] из F(x)= 4 / (1 + x*x) double IntervalWidth = 0.0; //ширина интервалов double IntervalLength = 0.0; //длина интервалов double IntrvlMidPoint = 0.0; //средняя точка интервала int Interval = 0; //счетчик цикла int done = 0; //флаг double MyPI = 0.0; //переменная для хранения приближенных результатов вычисления Пи double ReferencePI = 3.141592653589793238462643; //контрольное значение Пи для сравнения double PI; char processor_name[MPI_MAX_PROCESSOR_NAME]; char (*all_proc_names)[MPI_MAX_PROCESSOR_NAME]; int numprocs; int MyID; int namelen; int proc = 0; char current_time [9]; if (argc > 1) { MPI_Init(&argc,&argv); MPI_Comm_size(MPI_COMM_WORLD,&numprocs); MPI_Comm_rank(MPI_COMM_WORLD,&MyID); MPI_Get_processor_name(processor_name,&namelen); if (MyID == 0){ /* если это узел с рангом 0... */ NumIntervals = (int)_strtoi64(argv[1], 0, 10); /* считать количество интервалов из аргумента командной строки */ all_proc_names = malloc(numprocs * MPI_MAX_PROCESSOR_NAME); /* выделить память для всех имен процессоров */ } /* отправить количество интервалов всем процессорам */ MPI_Bcast(&NumIntervals, 1, MPI_INT, 0, MPI_COMM_WORLD); /* получить список имен процессоров для этого задания */ MPI_Gather(processor_name, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, all_proc_names, MPI_MAX_PROCESSOR_NAME, MPI_CHAR, 0, MPI_COMM_WORLD); if (NumIntervals == 0) { printf("аргумент командной строки должен иметь значение больше 0"); } else { Windows HPC Server 2008 - Using MS MPI White Paper 12 //получить усредненное значение PI IntervalWidth = 1.0 / (double) NumIntervals; for (Interval = MyID + 1; Interval <= NumIntervals; Interval += numprocs){ IntrvlMidPoint = IntervalWidth * ((double)Interval - 0.5); IntervalLength += (4.0 / (1.0 + IntrvlMidPoint*IntrvlMidPoint)); } MyPI = IntervalWidth * IntervalLength; MPI_Reduce(&MyPI, &PI, 1, MPI_DOUBLE, MPI_SUM, 0, MPI_COMM_WORLD); Windows HPC Server 2008 - Using MS MPI White Paper 13 Ссылки по теме Домашняя страница MPICH2 http://go.microsoft.com/fwlink/?LinkId=55115 Руководство по использованию MPI на сайте национальной лаборатории Livermore (на английском языке) http://go.microsoft.com/fwlink/?LinkId=56096 Развертывание системы Microsoft Windows HPC Server 2008 и управление ею (на английском языке) http://go.microsoft.com/fwlink/?LinkId=55927 Использование планировщика заданий Windows HPC Server 2008 (на английском языке) http://go.microsoft.com/fwlink/?LinkId=55929 Миграция распараллеленных приложений (на английском языке) http://go.microsoft.com/fwlink/?LinkId=55931 Отладка распараллеленных приложений с помощью среды разработки Visual Studio 2005 (на английском языке) http://go.microsoft.com/fwlink/?LinkId=55932 Форумы сообщества HPC — все разделы http://go.microsoft.com/fwlink/?LinkId=118932 Форумы сообщества HPC — разделы для разработчиков http://go.microsoft.com/fwlink/?LinkId=118933 Форумы сообщества HPC — разделы о MPI http://go.microsoft.com/fwlink/?LinkId=118937 Форумы сообщества HPC — разделы для ИТ-специалистов http://go.microsoft.com/fwlink/?LinkId=118935 Форумы сообщества HPC — разделы о загрузке заданий и планировщике заданий http://go.microsoft.com/fwlink/?LinkId=118936 Windows HPC Server 2008 - Using MS MPI White Paper 14