Шаг 38.
Параллельные алгоритмы. Средства построения параллельных программ. MPI: основные понятия и определения (окончание)

    На этом шаге мы закончим изложение основных понятий и определений, а также приведем алгоритм установки MPICH2 и запуска приложений.

Виртуальные топологии

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

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

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

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

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

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

Создание программ с использованием MPI

    MPICH2 - одна из реализаций стандарта MPI. Для работы с MPI необходимо произвести установку MPICH2. MPICH2 для MS Windows можно скачать, например, по адресу: http://www.mcs.anl.gov/research/projects/mpich2/.

    После установки в меню Пуск | Программы появится раздел MPICH2 с пунктами jumpshot, wmpiconfig.exe, wmpiexec.exe, wmpiregister.exe (рисунок 1).


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

    Динамически подключаемые библиотеки (dll) копируются в папку windows/system32.

    Диспетчер процессов smpd автоматически запускается сразу же после установки MPICH2, а также после перезагрузки системы.

    Щелкните правой кнопкой по иконке Мой компьютер. В пункте Свойства | Дополнительно | Переменные среды (кнопка) | Системные переменные | Path допишите C:\Program Files\MPICH2\bin.


Рис.2. Изменение переменной среды Path

    Для написания MPI-программы в Microsoft Visual Studio 2005 требуется создать новый проект Win32 Console Application (консольное приложение Win32) в конфигурации Release.


Рис.3. Создание консольного приложения

    Затем необходимо настроить пути и ссылки на библиотеку MPICH2. В строке Project | <Project_name> Property Pages | C/C++ | General | Additional Include Directories вводится путь к каталогу include: C:\Program Files\MPICH2\include.


Рис.4. Задание пути к каталогу include

    В строке Project | <Project_name> Property Pages | Linker | General | Additional Library Directories вводится путь к каталогу lib: C:\Program Files\MPICH2\lib.


Рис.5. Задание пути к каталогу lib

    В строке Project | <Project_name> Property Pages | Linker | Input |Additional Dependencies вводится имя библиотеки mpi.lib.


Рис.6. Подключение библиотеки

    Подключаем заголовочный файл mpi.h.


Рис.7. Подключение заголовочного файла

    Теперь проект настроен на использование MPICH2.

    Выполним компиляцию программы (пункт Build | Rebuild Solution). Если отсутствуют синтаксические ошибки, программа готова к выполнению.

    Зпустим wmpiregister.exe и введем свое регистрационное имя и пароль. В результате будет запущена служба spmd.

    Запуск MPI-программы можно осуществить из командной строки с помощью команды:

  mpiexec -n N -localonly <Название проекта>.exe, 
где N - число процессов.

    Для выполнения MPI-программы также можно воспользоваться программой wmpiexec.exe. В этом случае необходимо указать путь к exe-файлу, число процессов, поставить галочку в пункте run in an separate window, в подпункте extra mpiexec options пункта more options написать -localonly и нажать на кнопку Execute.


Рис.8. Задание параметров в приложении wmpiexec.exe

    На следующем шаге мы рассмотрим стандарт программирования для систем с общей памятью OpenMP.




Предыдущий шаг Содержание Следующий шаг