Чтение онлайн

ЖАНРЫ

Параллельное и распределенное программирование на С++
Шрифт:

|Таблица 9.1. Функции, используемыедля работы с коммуникаторами

Функции

Описание

int

MPI_Intercomm_create

(MPI_Comm LocalComm,int LocalLeader, MPI_Comm PeerComm, int remote_leader, int MessageTag, MPI_Comm *CommOut);

 

 Создает

inter

– коммуникатор из двух

intra

коммуникаторов

int

MPI_Intercomm_merge

(MPI_Comm Comm, int High,

MPI_Comm *CommOut);

 Соз

д

ает

intra

коммуникатор из

inter- коммуникатора

int

MPI_Cartdim_get

(MPI_Comm Comm,int *NDims);

 Возвращает декартову топологическую информацию, связанную с коммуникатором

int

MPI_Cart_create

(MPI_Comm CommOld, int NDims, int *Dims, int *Periods, int Reorder, MPI_Comm *CommCart)

Создает новый коммуникатор, к которому присоединяется топологическая информация

int

MPI_Cart_sub

(MPI_Comm Comm, int *RemainDims, MPI_Comm *CommNew);

Делит коммуникатор на подгруппы, которые образуют декартовы подсистемы более низкой размерности

int

MPI_Cart_shift

(MPI_Comm Comm, int Direction, int Display,int *Source,int *Destination);

Считывает смещенные ранги источника и приемника при заданном направлении и величине смещения

int

MPI_Cart_map

(MPI_Comm CommOld, int NDims, int *Dims, int *Periods, int *Newrank);

Преобразует процесс в декартову топологическую информацию

int

MPI_Cart_get

(MPI_Comm Comm, int MaxDims, int *Dims, int *Periods, int *Coords);

Возвращает декартову топологическую информацию, связанную с коммуникатором

int

MPI_Cart_coords

(MPI_Comm Comm, int Rank, int MaxDims, int *Coords);

Вычисляет координаты процесса в декартовой топологии при заданном ранге в группе

int

MPI_Comm_create

(MPI_Comm Comm, MPI_Group Group, MPI_Comm *CommOut) ;

Создает новый коммуникатор

int

MPI_Comm_rank

(MPI_Comm Comm, int *Rank ) ;

Вычисляет и возвращает ранг вызывающего процесса в коммуникаторе

int

MPI_Cart_rank

(MPI_Comm Comm, int *Coords, int *Rank );

Вычисляет и возвращает ранг процесса в коммуникаторе при заданном декартовом местоположении

int

MPI_Comm_compare

(MPI_Comm Comm1, MPI_Comm Comm2, int *Result);

Сравнивает два коммуникатора Comm1 и Comm2

int

MPI_Comm_dup

( MPI_Comm CommIn, MPI_Comm *CommOut) ;

Дублирует уже существующий коммуникатор со всей его кашированной информацией

int

MPI_Comm_free

( MPI_Comm *Comm) ;

Отмечает

объект коммуникатора как освобожденный

int

MPI_Comm_group

( MPI_Comm Comm, MPI_Group *Group);

Получает доступ к группе, связанной с заданным коммуникатором

int

MPI_Comm_size

( MPI_Comm Comm, int *Size);

Вычисляет и возвращает размер группы, связанной с заданным коммуникатором

int

MPI_Comm_split

(MPI_Comm Comm, int Color,int Key,MPI_Comm *CommOut) ;

Создает новые коммуникаторы на основе цветов и ключей

int

MPI_Comm_test_inter

( MPI_Comm Comm, int *Flag);

Определяет, является ли коммуникатор inter-коммуникатором

int

MPI_Comm_remote_group

( MPI_Comm Comm, MPI_Group *Group);

Получает доступ к удаленной группе, связанной с заданным inter-коммуникатором

int

MPI_Comm_remote_size

( MPI_Comm Comm, int *Size);

Вычисляет и возвращает размер удаленной

группы, связанной с заданным inter-

коммуникатором

Анатомия MPI-задачи

На рис.9.1 представлена каркасная MPI-программа. Задачи, выполняемые этой программой, просто сообщают свои ранги MPI-задаче с нулевым рангом. Каждая MPI-программа должна иметь по крайней мере функции MPI_Init и MPI_Finalize. Функция MPI_Init инициализирует MPI-среду для вызывающей задачи, а функция MPI_Finalize освобождает ресурсы этой MPI-задачи. Каждая MPI-задача должна вызвать функцию MPI_Finalize до своего завершения. Обратите вни м ание на обращения к функция м MPI_COMM_rank HMPI_COMM_Size . Они используются для получения значений ранга и количества процессов, которые принадлежат MPI-приложению. Эти функции вызываются большинством MPI-приложений. Вызов же остальных MPI-функций зависит от конкретного приложения. MPI-среда поддерживает более 300 функций (подробная информация представлена в соответствующей документации).

Рис. 9.1. MPI-программа

Использование шаблонных функций для представления MPI-задач

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

Поделиться с друзьями: