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]
没有拓扑信息的通信器的句柄 (处理) 。indegree
源和 sourceweights 数组的大小 (非负整数) 。sources[]
调用进程为目标的进程排名 (非负整数数组) 。sourceweights[]
调用进程中相应边缘的权重 () 非负整数数组。outdegree
目标数组和减量数组的大小 (非负整数) 。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的进程排名。 这允许通信图的完全分布式规范。 隔离进程,即分布式拓扑中没有传入或传出边缘的进程,因此允许使用 非独立 或 外向 或两者(如零)。
新创建的通信器中的进程数 (comm_dist_graph)与 comm_old中的进程数相同。 对此函数的调用是集体的。
如果关系图是加权图,则使用 sourceweights 和 destweights 数组将权重指定为非负整数。 应用程序需要为 sourceweights 和 destweights 数组指定MPI_UNWEIGHTED,以指示所有边缘具有相同 (实际上没有) 权重。 为 某些但 不是所有comm_old过程提供 MPI_UNWEIGHTED是错误的。 在这种情况下,无法保证其行为。 如果图形是加权的,但对于某个进程, 不规则 或 出量 为零,则 MPI_WEIGHTS_EMPTY 或任何任意数组都可以通过该进程传递给 源权重 或 减量 。
要求
产品 |
Microsoft MPI v6 |
标头 |
Mpi.h;Mpif.h |
库 |
Msmpi.lib |
DLL |
Msmpi.dll |