📄 mpid_comm.tex
字号:
\startmanpage\mantitle{MPID{\tt \char`\_}Comm}{tex}{10/7/2002}\manname{MPID{\tt \char`\_}Comm}--- Description of the Communicator data structure \subhead{Synopsis}\startvb\begin{verbatim}typedef struct { int handle; /* value of MPI_Comm for this structure */ volatile int ref_count; int16_t context_id; /* Assigned context id */ int remote_size; /* Value of MPI_Comm_(remote)_size */ int local_size; /* Value of MPI_Comm_size */ int rank; /* Value of MPI_Comm_rank */ MPID_VC *(*virtural connection)[]; /* Virtual connection table */ MPID_Comm_kind_t comm_kind; /* MPID_INTRACOMM or MPID_INTERCOMM */ MPID_List attributes; /* List of attributes */ MPID_Group *local_group, /* Groups in communicator. */ *remote_group; /* The local and remote groups are the same for intra communicators */ char name[MPI_MAX_OBJECT_NAME]; /* Required for MPI-2 */ MPID_Errhandler *errhandler; /* Pointer to the error handler structure */ struct MPID_Collops_struct *coll_fns; /* Pointer to a table of functions implementing the collective routines */ /* other, device-specific information */#ifdef MPID_DEV_COMM_DECL MPID_DEV_COMM_DECL#endif} MPID_Comm;\end{verbatim}\endvb\subhead{Notes}Note that the size and rank duplicate data in the groups thatmake up this communicator. These are used often enough that thisoptimization is valuable.\parThe virtual connection table is an explicit member of this structure.This contains the information used to contact a particular process,indexed by the rank relative to this communicator.\parGroups are allocated lazily. That is, the group pointers may benull, created only when needed by a routine such as {\tt MPI{\tt \char`\_}Comm{\tt \char`\_}group}.The local process ids needed to form the group are available withinthe virtual connection table.For intercommunicators, we may want to always have the groups. If not,we either need the {\tt local{\tt \char`\_}group} or we need a virtual connection tablecorresponding to the {\tt local{\tt \char`\_}group} (we may want this anyway to simplifythe implementation of the intercommunicator collective routines).\parThe pointer to the structure containing pointers to the collectiveroutines allows an implementation to replace each routine on aroutine-by-routine basis. By default, this pointer is null, as are thepointers within the structure. If either pointer is null, the implementationuses the generic provided implementation. This choice, rather thaninitializing the table with pointers to all of the collective routines,is made to reduce the space used in the communicators and to eliminate theneed to include the implementation of all collective routines in all MPIexecutables, even if the routines are not used.\par\par\subhead{Module}Communicator-DS\par\par\subhead{Question}For fault tolerance, do we want to have a standard field for communicatorhealth? For example, ok, failure detected, all (live) members of failedcommunicator have acked.\endmanpage
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -