Freigeben über


MPI_Dist_graph_create_adjacent-Funktion

Gibt ein Handle an einen neuen Communicator zurück, an den die Topologieinformationen des verteilten Graphs angefügt sind.

Syntax

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
);

Parameter

  • comm_old [in]
    Das Handle des Communicators ohne die Topologieinformationen (Handle).

  • indegree
    Größe der Quellen - und Quellgewichtsarrays (nicht negative ganze Zahl).

  • Quellen[]
    Rangfolgen von Prozessen, für die der aufrufende Prozess das Ziel ist (Array von nicht negativen ganzen Zahlen).

  • sourceweights[]
    Gewichtung der entsprechenden Kanten in den aufrufenden Prozess (Array von nicht negativen ganzen Zahlen).

  • outdegree
    Größe der Ziel- und Destgewichtungsarrays (nicht negative ganze Zahl).

  • Destinationen[]
    Rangfolgen von Prozessen, für die der aufrufende Prozess die Quelle ist (Array von nicht negativen ganzen Zahlen).

  • destweights[]
    Gewichtung der entsprechenden Kanten aus dem aufrufenden Prozess (Array von nicht negativen ganzen Zahlen).

  • Info [in]
    Hinweise zur Optimierung oder Interpretation von Gewichtungen (Handle). Verwenden Sie derzeit MPI_INFO_NULL , da diese Variable nicht intern verwendet wird.

  • Neu anordnen
    Ränge können neu angeordnet werden (true) oder nicht (falsch) (logisch). Derzeit wird dies intern nicht verwendet.

  • comm_dist_graph [out]
    Handle an den Communicator mit angefügten Informationen zur verteilten Graphtopologie (Handle).

Rückgabewert

Gibt MPI_SUCCESS nach Erfolg zurück. Andernfalls ist der Rückgabewert ein Fehlercode.

In Fortran wird der Rückgabewert im IERROR-Parameter gespeichert.

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

Hinweise

Jeder Prozess im comm_old Communicator übergibt alle Informationen zu seinen ein- und ausgehenden Kanten in der Topologie des virtuellen verteilten Graphs. Die aufrufenden Prozesse müssen sicherstellen, dass jeder Rand des Graphen in der Quelle und im Zielprozess mit der gleichen Gewichtung beschrieben wird, wenn das Diagramm gewichtet ist. Wenn für ein bestimmtes Quell-Ziel-Paar mehrere Kanten vorhanden sind, spielt die Reihenfolge der Gewichtungen dieser Kanten keine Rolle.

Die vollständige Kommunikationstopologie ist die Kombination aller Kanten, die im Quellenarray aller Prozesse in comm_old angezeigt werden, die mit der Kombination aller Kanten im Zielarray identisch sein muss. Quell- und Zielränge müssen Prozessrangfolgen von comm_old sein. Dies ermöglicht eine vollständig verteilte Spezifikation des Kommunikationsgraphen. Isolierte Prozesse, d. h. Prozesse, die keine ein- oder ausgehenden Kanten in der verteilten Topologie aufweisen und daher undegree oder outdegree oder beides als Null aufweisen, sind zulässig.

Die Anzahl der Prozesse im neu erstellten Kommunikator comm_dist_graph ist identisch mit der Anzahl der Prozesse in comm_old. Der Aufruf dieser Funktion ist kollektiv.

Gewichtungen werden als nicht negative ganze Zahlen mithilfe der Sourceweights - und Destweights-Arrays angegeben, wenn das Diagramm ein gewichtetes Diagramm ist. Eine Anwendung muss MPI_UNWEIGHTED sowohl für die Sourceweights - als auch für die Destweights-Arrays angeben, um anzugeben, dass alle Kanten die gleiche (effektiv keine) Gewichtung aufweisen. Es ist falsch, für einige, aber nicht für alle Prozesse der comm_old MPI_UNWEIGHTED zu liefern. Das Verhalten in einem solchen Fall ist nicht garantiert. Wenn das Diagramm gewichtet ist, aber indegree oder outdegree für einen Prozess null ist, kann MPI_WEIGHTS_EMPTY oder beliebige Arrays von diesem Prozess an Quellgewichte oder Destgewichte übergeben werden.

Anforderungen

Produkt

Microsoft MPI v6

Header

Mpi.h; Mpif.h

Bibliothek

Msmpi.lib

DLL

Msmpi.dll

Weitere Informationen

MPI-Prozesstopologiefunktionen

MPI_Dist_graph_create

MPI_Dist_graph_neighbors_count

MPI_Dist_graph_neighbors