Параллельное программирование: Учебное пособие, страница 80

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

4.10  Трансляция программ в пакете NT-MPICH

После раскрытия архива  nt-mpich-1.3.0-a.zip  на сетевом диске будет создан каталог NT-MPICH, структура которого была приведена выше (рис.4.3). На рисунке 4.5 раскрыто содержимое папки bin, в которой находятся исполняемые файлы пакета NT-MPICH и динамически подключаемые библиотеки, а также папка plugins (вставок) со специальными динамически подключаемыми библиотеками (Рисунок 4.6). В рассматриваемом пакете эта подборка представляет “интерфейс абстрактных устройств” (ADI – Abstract Device Interface). Устройствами являются наборы процедур, реализующих пересылку и прием пакетов с учетом конкретной архитектуры, чем и обеспечивается переносимость системы на различные платформы:

При разработке проекта параллельной программы связь NT-MPICH с уже существующими устройствами и системами обеспечивается благодаря подключению следующих вставок:

·  ch_ntshmem предназначается для поддержки взаимодействия вычислительных процессов исключительно через общедоступную память;

·  ch_smi обеспечивает взаимодействие в кластерах, использующих для межпроцессорной связи масштабируемый когерентный интерфейс SCI;

·  ch_wsock поддерживает взаимодействия в многопроцессорных системах (SMP) и в сети автоматизированных рабочих мест;

·  Mpi_pro предназначена для запуска программ, использующих пакет MPI/PRO компании MPI Software Technology;

·  mpich_nt используется для запуска программ, которые были разработаны ANL (Аргонской лабораторией) для MPICH.NT.

Рисунок 4.5. Состав каталога bin

Рисунок 4.6. Состав подкаталога plugins

Во всех вставках, начинающихся с "ch_", при их компиляции были созданы свои динамически подключаемые библиотеки (DLLs), которые экспортируют все функции MPI, MPI-IO и MPE. В частности,вставка mpich_nt поставляет библиотеки mpich[_xxx].dll, где содержатся и функции привязки к C++. В дополнение к ним подключаются библиотеки CPP.lib или CPPd.lib, которые, в общем, являются версиями библиотеки отладки среды разработки. В настоящее время пакетом NT-MPICH пока не поддерживается интерфейс профилирования C++ для класса   PMPI::…   .

Кроме plugins, файлы, приведенные на рисунке К1, предназначены для решения нескольких специальных задач. Их имена представлены следующим перечнем:

cpi.exe

rcluma.cpl

mpe_server.dll

rclumad.exe

mpe_server_frontend.exe

rcluma-install.bat

mpiexec.exe

rcluma-uninstall.bat

ntrexec.exe

rcluma-update.bat

PSAPI.DLL

RexecShell.exe

Файл cpi.exe работает в среде MPICH и служит для запуска на платформе Linux простой тестирующей программы для 4 процессоров:

cd examples/basic

make cpi

../../bin/mpirun -np 4 cpi

Чтобы использовать средства регистрации существующего MPE-сервера, ориентированного на протокол X-Windows, разработчики поставили новую программу автономного сервера mpe_server_frontend, которая включает код mpe_server и использует его же библиотеки. Это сделано по той причине, что не все компьютеры, оснащенные операционными системами Windows, поддерживали упомянутый протокол графической регистрации. Новая программа позволяет отображать окна MPE, созданные распределенными прикладными программами. Программа сервера должна выполняться в узле, который должен отображать графический вывод. Так как в качестве механизма связи используется удаленный вызов процедур (RPC), то нет необходимости, чтобы отображающий процесс выполнялся на главном процессоре (процессоре разработки). Сервер MPE полностью независим от MPI связей. Семантика всех MPE графических функций была максимально сохранена, хотя никакой формальной спецификации их нет. Некоторые функции были изменены преднамеренно, например,MPE_Capture_file. Обычно снимок с экрана представляется в точечном формате .bmp и поэтому занимает большой объем памяти, который для пересылки изображений не используют. NT-MPICH позволяет выдать инструкцию MPE-серверу записать изображение на диск, используется префикс "server:" перед строковым параметром имени файла. Например, запрос