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

Оригинальный дистрибутив MPICH, начиная с версии MPICH 1.2, благодаря разработчикам ANL (Аргонской Национальной Лабораторией) начал поддерживать Windows NT. Дистрибутив ANL MPICH.NT и более совершенный NT-MPICH были разработаны под Windows NT 4.0 SP6 для сред программирования Visual C++ 6.0 и Fortran Power Station 4.0, устанавливаемых на машинах x86. NT-MPICH показал свою нормальную работу на машинах с любой версией Windows 2000, Windows XP professional и .NET сервер.

Статические библиотеки, поставляемы с NT-MPICH, их связывание и компилирование исходных файлов выполняются в среде разработки VC++ 6.0 или в ее более поздних версиях. Некоторые библиотечные подпрограммы MPI используют мультимедийные команды Intel MMX и сообщения командной строки в синтаксисе MS-DOS. Поэтому, чтобы компилировать эти коды, на компьютере должен быть установлен Visual C++ Processor Pack [http://msdn.microsoft.com/vstudio/downloads/ppack]. Для успешной трансляции заголовочных файлов и/или библиотек необходимо загрузить последнюю версию Microsoft Platform SDK (Software Development Kit – комплект программных средств разработки) [http://www.microsoft.com/msdownload/platformsdk/setuplauncher.htm].

NT-MPICH снабжает пользователя, как двоичным, так и исходным дистрибутивами. Исходный дистрибутив может использоваться для создания собственного двоичного дистрибутива с помощью компилирующей среды Microsoft Visual C++ версии 6.0. Для поддержки будущих модификаций пакета разработчики рекомендуют двоичный дистрибутив раскрывать в каталоге MPI_ROOT, в котором будет создан каталог с именем nt-mpich. Это связано с тем, что инсталляция двоичного дистрибутива у разработчика  выполнялась путем вызова пакетного файла MPI_ROOT\make_dist.bat, который копировал все нужные исполняемые файлы (binaries), библиотеки, файлы для включения и примеры в каталог с таким же именем.

bin          –  исполняемые файлы;

doc          –  руководство по установке;

examples     –  исходные тексты примеров;

include      –  раздел заголовочных файлов;

jumpshot     –  визуализация CLOG файлов;

jumpshot-3   –  визуализация SLOG файлов;

lib          –  файлы двоичных библиотек;

profiling    –  файлы профилирования;

slog_api     –  файлы чтения и записи API;

www          –  синтаксис подпрограмм MPI;

    Рисунок 4.3.

Среди множества подпрограмм MPI можно выделить 6, которые используются практически в любой параллельной программе:

1)  MPI_Init(int *argc, char **argv) – подключение к MPI. Аргументы argc и argv требуются только в программах на С, где они при запуске программы задают количество аргументов в командной строке и вектор этих аргументов. Данный вызов предшествует всем прочим вызовам подпрограмм MPI.

2)  MPI_Finalize() – завершение работы с MPI. После вызова данной подпрограммы нельзя вызывать подпрограммы MPI. MPI_Finalize должны вызывать все процессы перед завершением своей работы.

3)  MPI_Comm_size(comm, size) – определение размера области взаимодействия. Здесь comm – входной параметр, задающий имя коммуникатору, а выходным является параметр целого типаsize, определяющий количество процессов в области взаимодействия.

4)  MPI_Comm_rank(comm, pid) – определение номера (ранга) процесса. Здесь pid – идентификатор процесса, связываемый с областью взаимодействия, принадлежащей коммуникатору comm.

5)  MPI_Send(buf, count, datatype, dest, tag, comm) – отправка сообщения. Все параметры являются входными: buf – адрес буфера отправки, count – количество пересылаемых элементов данных (неотрицательное целое значение), datatype – тип пересылаемых данных, tag – тег сообщения (целое значение), comm – коммуникатор.

6)  MPI_Recv(buf, count, datatype, source, tag, comm, status) – приемcoобщения. Выходные параметры: buf – адрес получающего буфера, и status– статус завершения операции; входные параметры: source – идентификатор процесса, от которого получают сообщение, а все остальные имеют назначение, аналогичное параметрам MPI_Send(…).