MPI_Dist_graph_create 函数

返回分布式图形拓扑信息所附加到的新通信器的句柄。

语法

int WINAPI MPI_Dist_graph_create(
  _In_  MPI_Comm                comm_old,
        _In_range_(>=,0)  int   n,
        _In_reads_opt const int sources[],
        _In_reads_opt const int degrees[],
        _In_opt const int       destinations[],
        _In_opt const int       weights[],
  _In_  MPI_Info                info,
        _In_range_(0,1) int     reorder,
  _Out_ MPI_Comm                *comm_dist_graph
);

参数

  • comm_old [in]
    没有拓扑信息的通信器的句柄 (处理) 。

  • n
    此过程指定传出边缘 (非负整数) 的源的数目。

  • sources[]
    包含 n 个源的数组,此源指定) 非负整数数组 (传出边缘。

  • degrees[]
    指定源节点数组中每个源节点的目标数的数组, () 非负整数数组。

  • destinations[]
    源数组中源节点的目标节点 (非负整数数组) 。

  • weights[]
    目标数组中相应边缘的权重 (非负整数数组) 。

  • info [in]
    有关优化或解释权重的提示, (处理) 。 当前使用 MPI_INFO_NULL ,因为此变量未在内部使用。

  • 排序
    (true) 或不 (false) (逻辑) ,可能会对排名重新排序。 目前,这不会在内部使用。

  • comm_dist_graph [out]
    通信器的句柄,其中附加了分布式图形拓扑信息, (处理) 。

返回值

返回成功 时MPI_SUCCESS 。 否则,返回值为错误代码。

在 Fortran 中,返回值存储在 IERROR 参数中。

Fortran

    MPI_DIST_GRAPH_CREATE (COMM_OLD, N, SOURCES, DEGREES, DESTINATIONS, WEIGHTS,
    INFO, REORDER, COMM_DIST_GRAPH, IERROR)
        INTEGER COMM_OLD, N, SOURCES (*), DEGREES (*), DESTINATIONS (*),
    WEIGHTS (*), INFO, COMM_DIST_GRAPH, IERROR
        LOGICAL REORDER

注解

数组和目标数组可能多次包含同一个节点,并且节点作为目标或源列出的顺序并不重要。 同样,不同的进程可以指定具有相同源节点和目标节点的边缘。 源节点和目标节点必须是 comm_old的进程级别。 不同的进程可以指定不同数量的源节点和目标节点,以及不同的源到目标边缘。 这允许通信图的完全分布式规范。 独立进程 (没有传出边缘或传入边缘的进程,也就是说,允许在图形规范) 中不作为源节点或目标节点发生的进程。

comm_dist_graph中的进程数与 comm_old 中的进程数相同。 对此函数的调用是集体的。

在 C 或 FORTRAN 中,应用程序可以为权重数组提供MPI_UNWEIGHTED,以指示所有边缘具有相同 (实际上没有) 权重。 为 某些但 不是所有comm_old过程提供 MPI_UNWEIGHTED是错误的。 在这种情况下,无法保证其行为。 如果图形是加权的,但 n = 0,则 MPI_WEIGHTS_EMPTY 或任何任意数组都可以传递给 权重

要求

产品

Microsoft MPI v6

标头

Mpi.h;Mpif.h

Msmpi.lib

DLL

Msmpi.dll

另请参阅

MPI 进程拓扑函数

MPI_Dist_graph_create_adjacent

MPI_Dist_graph_neighbors_count

MPI_Dist_graph_neighbors