Поделиться через


функция MPI_Dist_graph_create_adjacent

Возвращает дескриптор для нового коммуникатора, к которому присоединены сведения о топологии распределенного графа.

Синтаксис

int WINAPI MPI_Dist_graph_create_adjacent(
  _In_  MPI_Comm                comm_old,
        _In_range_(>=,0)  int   indegree,
        _In_reads_opt const int sources[],
        _In_reads_opt const int sourceweights[],
        _In_range_(>=,0)  int   outdegree,
        _In_reads_opt const int destinations[],
        _In_reads_opt const int destweights[],
  _In_  MPI_Info                info,
        _In_range_(0,1) int     reorder,
  _Out_ MPI_Comm                *comm_dist_graph
);

Параметры

  • comm_old [in]
    Дескриптор коммуникатора без сведений о топологии (дескриптор).

  • неразрешимый
    Размер массивов источников и исходных весов (неотрицательное целое число).

  • sources[]
    Ранжирует процессы, для которых вызывающий процесс является назначением (массив неотрицательных целых чисел).

  • sourceweights[]
    Вес соответствующих ребер в вызывающем процессе (массив неотрицательных целых чисел).

  • outdegree
    Размер массивов назначений и destweights (неотрицательное целое число).

  • destinations[]
    Ранги процессов, для которых вызывающий процесс является источником (массив неотрицательных целых чисел).

  • destweights[]
    Вес соответствующих ребер из вызывающего процесса (массив неотрицательных целых чисел).

  • info [in]
    Указания по оптимизации или интерпретации весов (дескриптора). В настоящее время используется MPI_INFO_NULL , так как эта переменная не используется внутри.

  • Переупорядочить
    Ранги могут быть переупорядочены (true) или не (false) (логически). В настоящее время это не используется для внутренних целей.

  • comm_dist_graph [out]
    Дескриптор к коммуникатору с присоединенной информацией о топологии распределенного графа (дескриптор).

Возвращаемое значение

Возвращает MPI_SUCCESS при успешном выполнении. В противном случае возвращаемое значение представляет собой код ошибки.

В Fortran возвращаемое значение хранится в параметре IERROR .

Fortran

    MPI_DIST_GRAPH_CREATE_ADJACENT (COMM_OLD, INDEGREE, SOURCES, SOURCEWEIGHTS,
    OUTDEGREE, DESTINATIONS, DESTWEIGHTS, INFO, REORDER,
    COMM_DIST_GRAPH, IERROR)
        INTEGER COMM_OLD, INDEGREE, SOURCES (*), SOURCEWEIGHTS (*), OUTDEGREE,
    DESTINATIONS (*), DESTWEIGHTS (*), INFO, COMM_DIST_GRAPH, IERROR
        LOGICAL REORDER

Комментарии

Каждый процесс в comm_old коммуникатор передает всю информацию о входящих и исходящих ребрах в топологии виртуального распределенного графа. Вызывающие процессы должны гарантировать, что каждый край графа описан в исходном и целевом процессах с одинаковым весом, если граф взвешен. Если для данной пары "источник- назначение" имеется несколько ребер, то последовательность весов этих ребер не имеет значения.

Полная топология связи — это сочетание всех ребер, отображаемых в массиве источников всех процессов в comm_old, которое должно быть идентично сочетанию всех ребер, показанных в массиве назначений . Исходные и целевые ранги должны быть рангами процесса comm_old. Это позволяет полностью распределить спецификацию графа связи. Изолированные процессы, т. е. процессы без входящих или исходящих ребер в распределенной топологии и, следовательно, имеют неразрешимый или outdegree или и то, и другое, как ноль, допускаются.

Количество процессов в созданном коммуникаторе, comm_dist_graph, идентично количеству процессов в comm_old. Вызов этой функции является коллективным.

Весовые коэффициенты указываются как неотрицательных целых чисел с помощью массивов sourceweights и destweights , если граф является взвешанным графом. Приложению потребуется указать MPI_UNWEIGHTED для массивов sourceweights и destweights , чтобы указать, что все ребра имеют одинаковый (фактически нет) вес. Ошибочно предоставлять MPI_UNWEIGHTED для некоторых, но не всех процессов comm_old. Поведение в таком случае не гарантируется. Если граф взвешен, но для процесса несогласованный или outdegree равен нулю , этот процесс может передать MPI_WEIGHTS_EMPTY или любой произвольный массив в исходные весы или destweights .

Требования

Продукт

Microsoft MPI версии 6

Заголовок

Mpi.h; Mpif.h

Библиотека

Msmpi.lib

DLL

Msmpi.dll

См. также раздел

Функции топологии процесса MPI

MPI_Dist_graph_create

MPI_Dist_graph_neighbors_count

MPI_Dist_graph_neighbors