Что такое findslide.org?

FindSlide.org - это сайт презентаций, докладов, шаблонов в формате PowerPoint.


Для правообладателей

Обратная связь

Email: Нажмите что бы посмотреть 

Яндекс.Метрика

Презентация на тему Параллельное программирование с использованием технологии MPI

Содержание

Блокирующая проверка завершения всех обменовВызов функции блокирует выполнение процесса до тех пор, пока все операции обмена, связанные с активными запросами в массиве requests, не будут выполнены. Возвращается статус этих операций. Статус обменов содержится в массиве statuses.Параллельное
Параллельное программирование с использованием технологии MPIАксёнов Сергей Владимировичк.т.н., доцент каф.ОСУ ТПУЛекция 7Томский Блокирующая проверка завершения всех обменовВызов функции блокирует выполнение процесса до тех пор, Неблокирующая проверка завершения всех обменовФункция выполняет неблокирующую проверку завершения приема или передачи ПримерMPI_Request *request;MPI_Status *status;MPI_Comm_rank( MPI_COMM_WORLD, &rank );if (rank == 0) { MPI_Isend(&buf1,20,MPI_INT,1,25,MPI_COMM_WORLD, &requests[0]);MPI_Isend(&buf2,20,MPI_INT,1,26,MPI_COMM_WORLD, Блокирующая проверка завершения одного обмена из набора обменовОперация блокирует работу до тех Неблокирующая проверка завершения одного обмена из набора обменовСмысл и назначение параметров этой Дополнительная функция блокирующей проверки завершения обменаПараллельное программирование с использованием технологии MPI Аксёнов Дополнительная функция неблокирующей проверки завершения обменаПараллельное программирование с использованием технологии MPI Аксёнов Неблокирующая пробаПараллельное программирование с использованием технологии MPI Аксёнов С.В.int MPI_Iprobe(int source, int Блокирующая пробаПараллельное программирование с использованием технологии MPI Аксёнов С.В.int MPI_Probe(int source, int ПримерПараллельное программирование с использованием технологии MPI Аксёнов С.В. int myid, numprocs, **buf, Отмена ждущих неблокирующих операций обменаПараллельное программирование с использованием технологии MPI Аксёнов С.В.int Проверка отмены передачиПараллельное программирование с использованием технологии MPI Аксёнов С.В.int MPI_Test_cancelled(MPI_Status *status, ПримерПараллельное программирование с использованием технологии MPI Аксёнов С.В.int myid, flag; int message[3]
Слайды презентации

Слайд 2 Блокирующая проверка завершения всех обменов
Вызов функции блокирует выполнение

Блокирующая проверка завершения всех обменовВызов функции блокирует выполнение процесса до тех

процесса до тех пор, пока все операции обмена, связанные

с активными запросами в массиве requests, не будут выполнены. Возвращается статус этих операций. Статус обменов содержится в массиве statuses.

Параллельное программирование с использованием технологии MPI Аксёнов С.В.

int MPI_Waitall(int count, MPI_Request *requests, MPI_Status *statuses)

Вход count: Размер массивов requests и statuses
Вход/Выход requests: Массив запросов
Выход statuses: Массив статусов


Слайд 3 Неблокирующая проверка завершения всех обменов
Функция выполняет неблокирующую проверку

Неблокирующая проверка завершения всех обменовФункция выполняет неблокирующую проверку завершения приема или

завершения приема или передачи всех сообщений.

При вызове возвращается значение

флага (flag) «истина», если все обмены, связанные с активными запросами в массиве requests, выполнены. Если завершены не все обмены, флагу присваивается значение «ложь», а массив statuses не определен.

Параллельное программирование с использованием технологии MPI Аксёнов С.В.

int MPI_Testall(int count, MPI_Request *requests, int * flag, MPI_Status *statuses)

Вход count: Размер массивов requests и statuses
Вход/Выход requests: Массив запросов
Выход: flag: 1 – если все обмены завершены
Выход statuses: Массив статусов


Слайд 4 Пример
MPI_Request *request;
MPI_Status *status;

MPI_Comm_rank( MPI_COMM_WORLD, &rank );
if (rank ==

ПримерMPI_Request *request;MPI_Status *status;MPI_Comm_rank( MPI_COMM_WORLD, &rank );if (rank == 0) { MPI_Isend(&buf1,20,MPI_INT,1,25,MPI_COMM_WORLD,

0)
{
MPI_Isend(&buf1,20,MPI_INT,1,25,MPI_COMM_WORLD, &requests[0]);
MPI_Isend(&buf2,20,MPI_INT,1,26,MPI_COMM_WORLD, &requests[1]);
MPI_Waitall(2,requests, statuses)
}
if (rank==1)
{
MPI_Irecv(&source1, 20,

MPI_INT, 0, 25, MPI_COMM_WORLD, &requests[0]);
MPI_Irecv(&source2, 20, MPI_INT, 0, 26, MPI_COMM_WORLD, &request[1]);
MPI_Waitall(2,requests, statuses);
}

Параллельное программирование с использованием технологии MPI Аксёнов С.В.


Слайд 5 Блокирующая проверка завершения одного обмена из набора обменов
Операция

Блокирующая проверка завершения одного обмена из набора обменовОперация блокирует работу до

блокирует работу до тех пор, пока не завершится одна

из операций из массива активных запросов. Если более чем одна операция задействована и может закончиться, выполняется произвольный выбор. Операция возвращает в index индекс этого запроса в массиве и возвращает в status статус завершаемого обмена.

Параллельное программирование с использованием технологии MPI Аксёнов С.В.

int MPI_Waitany(int count, MPI_Request *requests, int *index, MPI_Status *status)

Вход count: Размер массива requests
Вход/Выход requests: Массив запросов
Выход: index: Индекс запроса для завершенной операции
Выход status: Статус


Слайд 6 Неблокирующая проверка завершения одного обмена из набора обменов
Смысл

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

и назначение параметров этой функции те же, что и

для подпрограммы MPI_Waitany. Дополнительный аргумент flag, принимает значение «истина», если одна из операций завершена.

Параллельное программирование с использованием технологии MPI Аксёнов С.В.

int MPI_Testany(int count, MPI_Request *requests, int *index, int *flag, MPI_Status *status)

Вход count: Размер массива requests
Вход/Выход requests: Массив запросов
Выход index: индекс запроса для завершенной операции
Выход flag: 1 – если хотя бы один обмен завершен
Выход status: Статус


Слайд 7 Дополнительная функция блокирующей проверки завершения обмена

Параллельное программирование с

Дополнительная функция блокирующей проверки завершения обменаПараллельное программирование с использованием технологии MPI

использованием технологии MPI Аксёнов С.В.
int MPI_Waitsome (int incount, MPI_Request

*requests, int *outcount, int *indices, MPI_Status *statuses)

Вход count: Размер массива requests
Вход/Выход requests: Массив запросов
Выход outcount: Число завершенных запросов
Выход indices: Массив индексов завершенных операций
Выход status: Массив статусов

Функция ожидает, пока, по крайней мере, одна операция, связанная с активным дескриптором в списке, не завершится. Возвращает в outcount число запросов из списка array_of_indices, которые завершены.


Слайд 8 Дополнительная функция неблокирующей проверки завершения обмена

Параллельное программирование с

Дополнительная функция неблокирующей проверки завершения обменаПараллельное программирование с использованием технологии MPI

использованием технологии MPI Аксёнов С.В.
int MPI_Testsome (int incount, MPI_Request

*requests, int *outcount, int *indices, MPI_Status *statuses)

Вход count: Размер массива requests
Вход/Выход requests: Массив запросов
Выход outcount: Число завершенных запросов
Выход indices: Массив индексов завершенных операций
Выход status: Массив статусов

Функция MPI_TESTSOME ведет себя подобно MPI_WAITSOME за исключением того, что заканчивается немедленно. Если ни одной операции не завершено, она возвращает outcount = 0.


Слайд 9 Неблокирующая проба
Параллельное программирование с использованием технологии MPI Аксёнов

Неблокирующая пробаПараллельное программирование с использованием технологии MPI Аксёнов С.В.int MPI_Iprobe(int source,

С.В.
int MPI_Iprobe(int source, int tag, MPI_Comm comm, int *flag,

MPI_Status *status)

Вход source: Номер источника
Вход tag: Значение тега
Вход comm: Коммуникатор
Выход flag: 1 – существует входящее сообщение
Выход status: Статус

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


Слайд 10 Блокирующая проба
Параллельное программирование с использованием технологии MPI Аксёнов

Блокирующая пробаПараллельное программирование с использованием технологии MPI Аксёнов С.В.int MPI_Probe(int source,

С.В.
int MPI_Probe(int source, int tag, MPI_Comm comm, MPI_Status *status)

Вход source:

Номер источника
Вход tag: Значение тега
Вход comm: Коммуникатор
Выход status: Статус

MPI_PROBE ведет себя подобно MPI_IPROBE, исключая то, что функция MPI_PROBE является блокирующей и заканчивается после того, как соответствующее сообщение было найдено.

Сообщение не обязательно должно быть получено сразу после опробования, оно может опробоваться несколько раз перед его получением.


Слайд 11 Пример
Параллельное программирование с использованием технологии MPI Аксёнов С.В.

ПримерПараллельное программирование с использованием технологии MPI Аксёнов С.В. int myid, numprocs,

int myid, numprocs, **buf, source, i;
int message[3] =

{0, 1, 2};
int myrank, count, TAG = 0;
MPI_Status status;
if (myrank == 0) {
MPI_Send(&message, 3, MPI_INT, 2, TAG, MPI_COMM_WORLD);
}
else
{
MPI_Probe(MPI_ANY_SOURCE, 0, MPI_COMM_WORLD, &status);
source = status.MPI_SOURCE;
MPI_Get_count(&status, MPI_INT, &count);
buf = malloc(count*sizeof(int));
MPI_Recv(buf, count, MPI_INT, source, TAG, MPI_COMM_WORLD, &status);
for (i = 0; i < count; i++){
printf("received: %d\n", buf[i]);
}



Слайд 12 Отмена ждущих неблокирующих операций обмена
Параллельное программирование с использованием

Отмена ждущих неблокирующих операций обменаПараллельное программирование с использованием технологии MPI Аксёнов

технологии MPI Аксёнов С.В.
int MPI_Cancel(MPI_Request *request)

Вход request: Коммуникационный запрос

Обращение к

MPI_CANCEL маркирует для отмены ждущие неблокирующие операции обмена (передача или прием). Вызов cancel является локальным. Он заканчивается немедленно, возможно перед действительной отменой обмена. После маркировки необходимо завершить эту операцию обмена, используя вызов MPI_WAIT или MPI_TEST (или любые производные операции).

Слайд 13 Проверка отмены передачи
Параллельное программирование с использованием технологии MPI

Проверка отмены передачиПараллельное программирование с использованием технологии MPI Аксёнов С.В.int MPI_Test_cancelled(MPI_Status

Аксёнов С.В.
int MPI_Test_cancelled(MPI_Status *status, int *flag)

Вход status: Статус
Выход flag:

1 – если была успешно произведена отмена обмена

Функция MPI_TEST_CANCELLED возвращает flag = true, если обмен, связанный со статусным объектом, был отменен успешно. В таком случае все другие поля статуса (такие как count или tag) не определены. В противном случае возвращается flag = false.


  • Имя файла: parallelnoe-programmirovanie-s-ispolzovaniem-tehnologii-mpi.pptx
  • Количество просмотров: 149
  • Количество скачиваний: 0