<scan>— это коллективный алгоритм, который объединяет значения, сохраненные каждым процессом, со значениями всех процессов с меньшим рангом. Значения могут быть произвольно объединены, указаны через объект функции<op>. Тип<T>значений может быть любым типом, который является сериализуемым или имеет связанный тип данных MPI. Можно рассматривать эту операцию как процесс<gather>, за которым следует<std::prefix_sum()>над собранными значениями с помощью операции<op>. Процесс ith возвращает значение ith, испускаемое<std::prefix_sum()>.
Когда тип<T>имеет связанный тип данных MPI, эта процедура вызывает<MPI_Scan>для выполнения сокращения. По возможности будут использоваться встроенные операции MPI; в противном случае<scan()>создаст пользовательский<MPI_Op>для вызова MPI_Scan.
Параметры:
<comm>
Коммуникатор, над которым произойдет сокращение префикса.
<in_value>
Локальное значение должно сочетаться с локальными значениями других процессов. Для варианта массива<in_values>параметр указывает на<n>локальные значения, которые будут объединены.
<op>
Бинарная операция, которая объединяет два значения типа<T>в третье значение типа<T>. Для типов<T>, связанных с типами данных MPI,<op>будет либо переведено в<MPI_Op>(через<MPI_Op_create>), либо, по возможности, отображено непосредственно на встроенную операцию MPI.<is_mpi_op>в заголовке<operations.hpp>для более подробной информации об этом отображении. Для любой невстроенной операции коммутативность будет определяться чертой<is_commmutative>(также в<operations.hpp>).
<out_value>
Если это предусмотрено, то процесс ith получит значение<op>(in_value<scan>, op(in_value<op>, op(..., in_value[i)) )). Для варианта массива<out_values>содержит указатель на хранилище для<n>выходных значений. Сокращение префикса происходит независимо для каждого из<n>значений, на которые ссылается<in_values>, например, вызов сканирования на массив<n>значений подобен вызову<scan><n>отдельных раз, по одному для каждого местоположения в<in_values>и<out_values>.
Возвращение:
Если параметр<out_value>не предусмотрен, возвращает результат сокращения префикса.
Статья Function scan раздела The Boost C++ Libraries BoostBook Documentation Subset Reference может быть полезна для разработчиков на c++ и boost.
Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.