Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Справочник по функциям MPI




Инициализация MPI

int MPI_Init(int* argc, char** argv)

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

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

Сложный тип аргументов MPI_Init предусмотрен для того, чтобы передавать всем процессам аргументы main:

Пример вызова:

int main(int argc, char** argv) { … MPI_Init(&argc, &argv); … }

Закрытие MPI

int MPI_Finalize(void)

Завершение параллельной части приложения. Все последующие обращения к любым MPI-процедурам, в том числе к MPI_Init, запрещены. К моменту вызова MPI_Finalize любым процессом все действия по обмену сообщениями должны быть завершены.

Пример вызова:

int main(int argc, char** argv) { … MPI_Finalize(); … }

 

Определение числа процессов

int MPI_Comm_size(MPI_Comm comm, int* size)

Определение общего числа параллельных процессов в группе comm (вместо comm во всех лабораторных работах использовать константу MPI_COMM_WORLD - группа "все процессы", связи в виде полного графа).

· comm - идентификатор группы

· выходной параметр size - размер группы. Здесь возвращается число процессов, которое пользователь задал при запуске программы.

Пример вызова:

… int size; MPI_Comm_size(MPI_COMM_WORLD, &size); …

 

Определение номера процесса

int MPI_Comm_rank(MPI_comm comm, int* rank)

Определение номера процесса в группе comm. Возвращаемое значение (номер процесса, rank) лежит в диапазоне от 0 до size-1.

· comm - идентификатор группы

· выходной параметр rank - номер вызывающего процесса в группе comm

Пример вызова:

… int rank; MPI_Comm_rank(MPI_COMM_WORLD, &rank); …

 

Аварийное завершение программы

int MPI_Abort(MPI_Comm comm, int errorcode)

Аварийное завершение работы всех процессов. Эта функция должна вызываться одновременно всеми процессами приложения.

· errorcode - код ошибки

· comm - идентификатор группы

Пример вызова:

… MPI_Abort(MPI_COMM_WORLD,MPI_ERR_OTHER); …

 

Передача сообщения

int MPI_Send(void* buf, int count, MPI_Datatype datatype, int dest, int msgtag, MPI_Comm comm)

Посылка сообщения с меткой msgtag, состоящего из count элементов типа datatype, процессу с номером dest. Все элементы сообщения расположены подряд в буфере buf. Значение count может быть нулем. Тип передаваемых элементов datatype должен указываться с помощью предопределенных констант типа (для целых - MPI_INT). Разрешается передавать сообщение самому себе. Метка должна быть одной и той же при приеме и передаче сообщения. Дальнейшее выполнение программы задерживается до тех пор, пока передача не завершится.

· buf - адрес начала буфера посылки сообщения

· count - число передаваемых элементов в сообщении

· datatype - тип передаваемых элементов

· dest - номер процесса-получателя

· msgtag - метка сообщения

· comm - идентификатор группы

Пример вызова:

… #define N 10 … int rank,buf[N]; … MPI_Send(buf,N,MPI_INT,1,10,MPI_COMM_WORLD); …

 

 

Прием сообщения

int MPI_Recv(void* buf, int count, MPI_Datatype datatype, int source, int msgtag, MPI_comm comm, MPI_Status *status)

Прием сообщения с меткой msgtag от процесса source с блокировкой. Число элементов в принимаемом сообщении не должно превосходить значения count.

· выходной параметр buf - адрес начала буфера приема сообщения

· count - максимальное число элементов в принимаемом сообщении

· datatype - тип элементов принимаемого сообщения

· source - номер процесса-отправителя

· msgtag - метка принимаемого сообщения

· comm - идентификатор группы

· выходной параметр status - параметры принятого сообщения

Пример вызова:

… #define N 10 … int rank,buf[N]; MPI_Status status; … MPI_Recv(buf,N,MPI_INT,1,10,MPI_COMM_WORLD,&status); …




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


Дата добавления: 2016-07-29; Мы поможем в написании ваших работ!; просмотров: 676 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Если вы думаете, что на что-то способны, вы правы; если думаете, что у вас ничего не получится - вы тоже правы. © Генри Форд
==> читать все изречения...

4213 - | 4145 -


© 2015-2026 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.