| |
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-2025 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |