Составители:
Рубрика:
44
Успешное
выполнение
подпрограммы
MPI_Wait
после
вызова
MPI_Ibsend
подразумевает
,
что
буфер
передачи
можно
использовать
вновь
,
то
есть
пересылаемые
данные
отправлены
или
скопированы
в
буфер
,
выделенный
при
вызове
подпрограммы
MPI_Buffer_attach
.
В
этот
момент
уже
нельзя
отменить
передачу
.
Если
не
будет
зарегистрирован
соответствующий
прием
,
буфер
нельзя
будет
освободить
.
В
этом
случае
можно
применить
подпрограмму
MPI_Cancel
,
которая
освобождает
память
,
выделенную
подсистеме
коммуникаций
.
Неблокирующая
проверка
завершения
приема
или
передачи
сообщения
int MPI_Test(MPI_Request *request, int *flag, MPI_Status *status)
MPI_TEST(REQUEST, FLAG, STATUS, IERR)
Входной
параметр
:
•
request
идентификатор
операции
обмена
.
Выходные
параметры
:
•
flag
"
истина
",
если
операция
,
заданная
идентификатором
request
,
выполнена
;
•
status
статус
выполненной
операции
.
Если
при
вызове
MPI_Test
используется
пустой
или
неактивный
аргумент
request
,
операция
возвращает
значение
флага
"
истина
"
и
пустой
статус
.
Проверка
завершения
всех
обменов
int MPI_Waitall(int count, MPI_Request requests[], MPI_Status
statuses[])
MPI_WAITALL(COUNT, REQUESTS, STATUSES, IERR)
Выполнение
процесса
блокируется
до
тех
пор
,
пока
все
операции
обмена
,
связанные
с
активными
запросами
в
массиве
requests
,
не
будут
выполнены
.
Возвращается
статус
этих
операций
.
Статус
обменов
содержится
в
массиве
statuses
.
count
количество
запросов
на
обмен
(
размер
массивов
requests
и
statuses
).
В
результате
выполнения
подпрограммы
MPI_Waitall
запросы
,
сформированные
неблокирующими
операциями
обмена
,
аннулируются
,
а
соответствующим
элементам
массива
присваивается
значение
MPI_REQUEST_NULL
.
Список
может
содержать
пустые
или
неактивные
запросы
.
Для
каждого
из
них
устанавливается
пустое
значение
статуса
.
В
случае
неуспешного
выполнения
одной
или
более
операций
обмена
подпрограмма
MPI_Waitall
возвращает
код
ошибки
MPI_ERR_IN_STATUS
и
присваивает
полю
ошибки
статуса
значение
кода
ошибки
соответствующей
операции
.
Если
операция
выполнена
успешно
,
полю
присваивается
значение
MPI_SUCCESS
,
а
если
не
выполнена
,
но
и
не
было
ошибки
значение
MPI_ERR_PENDING
.
Последний
случай
соответствует
наличию
запросов
на
выполнение
операции
обмена
,
ожидающих
обработки
.
Неблокирующая
проверка
завершения
обменов
int MPI_Testall(int count, MPI_Request requests[], int *flag,
MPI_Status statuses[])
MPI_TESTALL(COUNT, REQUESTS, FLAG, STATUSES, IERR)
Страницы
- « первая
- ‹ предыдущая
- …
- 42
- 43
- 44
- 45
- 46
- …
- следующая ›
- последняя »
