| |
MPI-1 предоставляет операцию исключающего сканирования. Исключающее сканирование описывается здесь.
------------------------------------------------------------------ MPI_EXSCAN(sendbuf, recvbuf, count, datatype, op, comm) ------------------------------------------------------------------
IN | sendbuf | Стартовый адрес буфера передачи (по выбору) | ||||
OUT | recvbuf | Стартовый адрес буфера приема (по выбору) | ||||
IN | count | Количество элементов во входном буфере | ||||
IN | datatype | Тип данных элементов входного буфера (указатель) | ||||
IN | op | Операция (указатель) | ||||
IN | comm | Интракоммуникатор (указатель) |
int MPI_Exscan(void *sendbuf, void *recvbuf, int count, MPI_Datatype datatype, MPI_Op op, MPI_Comm comm)
MPI_EXSCAN(SENDBUF, RECVBUF, COUNT, DATATYPE, OP, COMM, IERROR) <type> SENDBUF(*), RECVBUF(*) INTEGER COUNT, DATATYPE, OP, COMM, IERROR
void MPI::Intracomm::Exscan(const void* sendbuf, void* recvbuf, int count, const MPI::Datatype& datatype, const MPI::Op& op) const
MPI_EXSCAN
используется для того, чтобы выполнить префиксное
сокращение данных, распределенных по группе. Значение в recvbuf
для процесса с номером 0
неопределено и recvbuf
не имеет
смысла для данного процесса. Значение в recvbuf
для процессе с
номером 1
определено как значение в sendbuf
для процесса с
номером 0
. Для процессов с номером операция возвращает в
буфере приема процесса с номером редуцированные значения в буферах
передачи процессов с номерами 0
, Е
, (включительно).
Тип поддерживаемых операций, их семантика и ограничения, накладываемые на
буферы приема и передачи, такие же, как и для MPI_REDUCE
.
Опция in-place
не поддерживается.
Совет пользователям:
Что касается MPI_SCAN
, MPI не определяет, которые процессы могут
вызывать операцию, только то, что результат будет вычислен правильно. В
частности обратите внимание, что процесс с номером 1
не требует
вызова MPI_op
, так как все, что он должен сделать, это получить
значение от процесса с номером 0
. Однако, все процессы, даже с
нулевыми и единичными номерами, должны предоставить одинаковую op
.
[]
Объяснение:
Исключающее сканирование более общее, чем включающее, реализованное в
MPI-1 в виде MPI_SCAN
. Любая включающая операция сканирования
может быть заменена исключающим сканированием, с последующим объединением
локальных вкладов. Обратите внимание, что для неинвертируемых операций типа
MPI_MAX
, исключающее сканирование может дать результаты, которые не могут
быть получены с помощью исключающего сканирования.
[]
Причиной выбора MPI-1 включающего сканирования является то, что
определение поведения процессов 0
и 1
, как думали, вызовет
слишком много сложностей, особенно для определяемых пользователем
операций.
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |