openmpi  3.1.6
About: Open MPI is a high performance Message Passing Interface (MPI) library project combining technologies and resources from several other projects (FT-MPI, LA-MPI, LAM/MPI, and PACX-MPI) in order to build the best MPI library available. 3.x series.
  Fossies Dox: openmpi-3.1.6.tar.bz2  ("unofficial" and yet experimental doxygen-generated source code documentation)  

communicator.h File Reference
Include dependency graph for communicator.h:

Go to the source code of this file.

Data Structures

struct  ompi_communicator_t
 
struct  ompi_predefined_communicator_t
 

Macros

#define OMPI_COMM_INTER   0x00000001
 
#define OMPI_COMM_NAMEISSET   0x00000002
 
#define OMPI_COMM_INTRINSIC   0x00000004
 
#define OMPI_COMM_DYNAMIC   0x00000008
 
#define OMPI_COMM_ISFREED   0x00000010
 
#define OMPI_COMM_INVALID   0x00000020
 
#define OMPI_COMM_CART   0x00000100
 
#define OMPI_COMM_GRAPH   0x00000200
 
#define OMPI_COMM_DIST_GRAPH   0x00000400
 
#define OMPI_COMM_PML_ADDED   0x00001000
 
#define OMPI_COMM_EXTRA_RETAIN   0x00004000
 
#define OMPI_COMM_MAPBY_NODE   0x00008000
 
#define OMPI_COMM_IS_INTER(comm)   ((comm)->c_flags & OMPI_COMM_INTER)
 
#define OMPI_COMM_IS_INTRA(comm)   (!((comm)->c_flags & OMPI_COMM_INTER))
 
#define OMPI_COMM_IS_CART(comm)   ((comm)->c_flags & OMPI_COMM_CART)
 
#define OMPI_COMM_IS_GRAPH(comm)   ((comm)->c_flags & OMPI_COMM_GRAPH)
 
#define OMPI_COMM_IS_DIST_GRAPH(comm)   ((comm)->c_flags & OMPI_COMM_DIST_GRAPH)
 
#define OMPI_COMM_IS_INTRINSIC(comm)   ((comm)->c_flags & OMPI_COMM_INTRINSIC)
 
#define OMPI_COMM_IS_FREED(comm)   ((comm)->c_flags & OMPI_COMM_ISFREED)
 
#define OMPI_COMM_IS_DYNAMIC(comm)   ((comm)->c_flags & OMPI_COMM_DYNAMIC)
 
#define OMPI_COMM_IS_INVALID(comm)   ((comm)->c_flags & OMPI_COMM_INVALID)
 
#define OMPI_COMM_IS_PML_ADDED(comm)   ((comm)->c_flags & OMPI_COMM_PML_ADDED)
 
#define OMPI_COMM_IS_EXTRA_RETAIN(comm)   ((comm)->c_flags & OMPI_COMM_EXTRA_RETAIN)
 
#define OMPI_COMM_IS_TOPO(comm)
 
#define OMPI_COMM_IS_MAPBY_NODE(comm)   ((comm)->c_flags & OMPI_COMM_MAPBY_NODE)
 
#define OMPI_COMM_SET_DYNAMIC(comm)   ((comm)->c_flags |= OMPI_COMM_DYNAMIC)
 
#define OMPI_COMM_SET_INVALID(comm)   ((comm)->c_flags |= OMPI_COMM_INVALID)
 
#define OMPI_COMM_SET_PML_ADDED(comm)   ((comm)->c_flags |= OMPI_COMM_PML_ADDED)
 
#define OMPI_COMM_SET_EXTRA_RETAIN(comm)   ((comm)->c_flags |= OMPI_COMM_EXTRA_RETAIN)
 
#define OMPI_COMM_SET_MAPBY_NODE(comm)   ((comm)->c_flags |= OMPI_COMM_MAPBY_NODE)
 
#define OMPI_COMM_ALLGATHER_TAG   -31078
 
#define OMPI_COMM_BARRIER_TAG   -31079
 
#define OMPI_COMM_ALLREDUCE_TAG   -31080
 
#define OMPI_COMM_ASSERT_NO_ANY_TAG   0x00000001
 
#define OMPI_COMM_ASSERT_NO_ANY_SOURCE   0x00000002
 
#define OMPI_COMM_ASSERT_EXACT_LENGTH   0x00000004
 
#define OMPI_COMM_ASSERT_ALLOW_OVERTAKE   0x00000008
 
#define OMPI_COMM_CHECK_ASSERT(comm, flag)   !!((comm)->c_assertions & flag)
 
#define OMPI_COMM_CHECK_ASSERT_NO_ANY_TAG(comm)   OMPI_COMM_CHECK_ASSERT(comm, OMPI_COMM_ASSERT_NO_ANY_TAG)
 
#define OMPI_COMM_CHECK_ASSERT_NO_ANY_SOURCE(comm)   OMPI_COMM_CHECK_ASSERT(comm, OMPI_COMM_ASSERT_NO_ANY_SOURCE)
 
#define OMPI_COMM_CHECK_ASSERT_EXACT_LENGTH(comm)   OMPI_COMM_CHECK_ASSERT(comm, OMPI_COMM_ASSERT_EXACT_LENGTH)
 
#define OMPI_COMM_CHECK_ASSERT_ALLOW_OVERTAKE(comm)   OMPI_COMM_CHECK_ASSERT(comm, OMPI_COMM_ASSERT_ALLOW_OVERTAKE)
 
#define OMPI_COMM_CID_INTRA   0x00000020
 Modes required for acquiring the new comm-id. More...
 
#define OMPI_COMM_CID_INTER   0x00000040
 
#define OMPI_COMM_CID_INTRA_BRIDGE   0x00000080
 
#define OMPI_COMM_CID_INTRA_PMIX   0x00000100
 
#define OMPI_COMM_CID_GROUP   0x00000200
 
#define OMPI_COMM_BLOCK_WORLD   16
 The block of CIDs allocated for MPI_COMM_WORLD and other communicators. More...
 
#define OMPI_COMM_BLOCK_OTHERS   8
 
#define OMPI_COMM_CID_IS_LOWER(comm1, comm2)   ( ((comm1)->c_contextid < (comm2)->c_contextid)? 1:0)
 
#define PREDEFINED_COMMUNICATOR_PAD   512
 Padded struct to maintain back compatibiltiy. More...
 

Typedefs

typedef struct ompi_communicator_t ompi_communicator_t
 
typedef struct ompi_predefined_communicator_t ompi_predefined_communicator_t
 

Functions

BEGIN_C_DECLS OBJ_CLASS_DECLARATION (ompi_communicator_t)
 
static int ompi_comm_invalid (ompi_communicator_t *comm)
 Is this a valid communicator? This is a complicated question. More...
 
static int ompi_comm_rank (ompi_communicator_t *comm)
 rank w/in the communicator More...
 
static int ompi_comm_size (ompi_communicator_t *comm)
 size of the communicator More...
 
static int ompi_comm_remote_size (ompi_communicator_t *comm)
 size of the remote group for inter-communicators. More...
 
static uint32_t ompi_comm_get_cid (ompi_communicator_t *comm)
 Context ID for the communicator, suitable for passing to ompi_comm_lookup for getting the communicator back. More...
 
static ompi_communicator_tompi_comm_lookup (uint32_t cid)
 
static struct ompi_proc_tompi_comm_peer_lookup (ompi_communicator_t *comm, int peer_id)
 
static bool ompi_comm_peer_invalid (ompi_communicator_t *comm, int peer_id)
 
int ompi_comm_init (void)
 Initialise MPI_COMM_WORLD and MPI_COMM_SELF. More...
 
int ompi_comm_group (ompi_communicator_t *comm, ompi_group_t **group)
 extract the local group from a communicator More...
 
int ompi_comm_create (ompi_communicator_t *comm, ompi_group_t *group, ompi_communicator_t **newcomm)
 create a communicator based on a group More...
 
int ompi_comm_create_group (ompi_communicator_t *comm, ompi_group_t *group, int tag, ompi_communicator_t **newcomm)
 Non-collective create communicator based on a group. More...
 
int ompi_comm_enable (ompi_communicator_t *old_comm, ompi_communicator_t *new_comm, int new_rank, int num_procs, ompi_proc_t **topo_procs)
 Take an almost complete communicator and reserve the CID as well as activate it (initialize the collective and the topologies). More...
 
int ompi_topo_dist_graph_create_adjacent (ompi_communicator_t *old_comm, int indegree, int sources[], int sourceweights[], int outdegree, int destinations[], int destweights[], MPI_Info info, int reorder, MPI_Comm *comm_dist_graph)
 Back end of MPI_DIST_GRAPH_CREATE_ADJACENT. More...
 
int ompi_comm_split (ompi_communicator_t *comm, int color, int key, ompi_communicator_t **newcomm, bool pass_on_topo)
 split a communicator based on color and key. More...
 
int ompi_comm_split_type (ompi_communicator_t *comm, int split_type, int key, struct opal_info_t *info, ompi_communicator_t **newcomm)
 split a communicator based on type and key. More...
 
int ompi_comm_dup (ompi_communicator_t *comm, ompi_communicator_t **newcomm)
 dup a communicator. More...
 
int ompi_comm_idup (ompi_communicator_t *comm, ompi_communicator_t **newcomm, ompi_request_t **request)
 dup a communicator (non-blocking). More...
 
int ompi_comm_dup_with_info (ompi_communicator_t *comm, opal_info_t *info, ompi_communicator_t **newcomm)
 dup a communicator with info. More...
 
int ompi_comm_idup_with_info (ompi_communicator_t *comm, opal_info_t *info, ompi_communicator_t **newcomm, ompi_request_t **req)
 dup a communicator (non-blocking) with info. More...
 
int ompi_comm_compare (ompi_communicator_t *comm1, ompi_communicator_t *comm2, int *result)
 compare two communicators. More...
 
int ompi_comm_free (ompi_communicator_t **comm)
 free a communicator More...
 
ompi_communicator_tompi_comm_allocate (int local_group_size, int remote_group_size)
 allocate a new communicator structure More...
 
int ompi_comm_nextcid (ompi_communicator_t *newcomm, ompi_communicator_t *comm, ompi_communicator_t *bridgecomm, const void *arg0, const void *arg1, bool send_first, int mode)
 allocate new communicator ID More...
 
int ompi_comm_nextcid_nb (ompi_communicator_t *newcomm, ompi_communicator_t *comm, ompi_communicator_t *bridgecomm, const void *arg0, const void *arg1, bool send_first, int mode, ompi_request_t **req)
 allocate new communicator ID (non-blocking) More...
 
int ompi_comm_finalize (void)
 shut down the communicator infrastructure. More...
 
int ompi_comm_set (ompi_communicator_t **newcomm, ompi_communicator_t *oldcomm, int local_size, int *local_ranks, int remote_size, int *remote_ranks, opal_hash_table_t *attr, ompi_errhandler_t *errh, bool copy_topocomponent, ompi_group_t *local_group, ompi_group_t *remote_group)
 This is THE routine, where all the communicator stuff is really set. More...
 
int ompi_comm_set_nb (ompi_communicator_t **ncomm, ompi_communicator_t *oldcomm, int local_size, int *local_ranks, int remote_size, int *remote_ranks, opal_hash_table_t *attr, ompi_errhandler_t *errh, bool copy_topocomponent, ompi_group_t *local_group, ompi_group_t *remote_group, ompi_request_t **req)
 This is THE routine, where all the communicator stuff is really set. More...
 
struct ompi_proc_t ** ompi_comm_get_rprocs (ompi_communicator_t *local_comm, ompi_communicator_t *bridge_comm, int local_leader, int remote_leader, int tag, int rsize)
 This is a short-hand routine used in intercomm_create. More...
 
int ompi_comm_overlapping_groups (int size, struct ompi_proc_t **lprocs, int rsize, struct ompi_proc_t **rprocs)
 This routine verifies, whether local_group and remote group are overlapping in intercomm_create. More...
 
int ompi_comm_determine_first (ompi_communicator_t *intercomm, int high)
 This is a routine determining whether the local or the remote group will be first in the new intra-comm. More...
 
int ompi_comm_activate (ompi_communicator_t **newcomm, ompi_communicator_t *comm, ompi_communicator_t *bridgecomm, const void *arg0, const void *arg1, bool send_first, int mode)
 
int ompi_comm_activate_nb (ompi_communicator_t **newcomm, ompi_communicator_t *comm, ompi_communicator_t *bridgecomm, const void *arg0, const void *arg1, bool send_first, int mode, ompi_request_t **req)
 Non-blocking variant of comm_activate. More...
 
int ompi_comm_dump (ompi_communicator_t *comm)
 a simple function to dump the structure More...
 
int ompi_comm_set_name (ompi_communicator_t *comm, const char *name)
 
int ompi_comm_cid_init (void)
 
void ompi_comm_assert_subscribe (ompi_communicator_t *comm, int32_t assert_flag)
 

Variables

opal_pointer_array_t ompi_mpi_communicators
 
opal_pointer_array_t ompi_comm_f_to_c_table
 
ompi_communicator_tompi_mpi_comm_parent
 
ompi_predefined_communicator_t ompi_mpi_comm_world
 
ompi_predefined_communicator_t ompi_mpi_comm_self
 
ompi_predefined_communicator_t ompi_mpi_comm_null
 
ompi_predefined_communicator_tompi_mpi_comm_world_addr
 
ompi_predefined_communicator_tompi_mpi_comm_self_addr
 
ompi_predefined_communicator_tompi_mpi_comm_null_addr
 
int ompi_comm_num_dyncomm
 

Macro Definition Documentation

◆ OMPI_COMM_ALLGATHER_TAG

#define OMPI_COMM_ALLGATHER_TAG   -31078

Definition at line 93 of file communicator.h.

◆ OMPI_COMM_ALLREDUCE_TAG

#define OMPI_COMM_ALLREDUCE_TAG   -31080

Definition at line 95 of file communicator.h.

◆ OMPI_COMM_ASSERT_ALLOW_OVERTAKE

#define OMPI_COMM_ASSERT_ALLOW_OVERTAKE   0x00000008

Definition at line 100 of file communicator.h.

◆ OMPI_COMM_ASSERT_EXACT_LENGTH

#define OMPI_COMM_ASSERT_EXACT_LENGTH   0x00000004

Definition at line 99 of file communicator.h.

◆ OMPI_COMM_ASSERT_NO_ANY_SOURCE

#define OMPI_COMM_ASSERT_NO_ANY_SOURCE   0x00000002

Definition at line 98 of file communicator.h.

◆ OMPI_COMM_ASSERT_NO_ANY_TAG

#define OMPI_COMM_ASSERT_NO_ANY_TAG   0x00000001

Definition at line 97 of file communicator.h.

◆ OMPI_COMM_BARRIER_TAG

#define OMPI_COMM_BARRIER_TAG   -31079

Definition at line 94 of file communicator.h.

◆ OMPI_COMM_BLOCK_OTHERS

#define OMPI_COMM_BLOCK_OTHERS   8

Definition at line 126 of file communicator.h.

◆ OMPI_COMM_BLOCK_WORLD

#define OMPI_COMM_BLOCK_WORLD   16

The block of CIDs allocated for MPI_COMM_WORLD and other communicators.

Definition at line 125 of file communicator.h.

◆ OMPI_COMM_CART

#define OMPI_COMM_CART   0x00000100

Definition at line 59 of file communicator.h.

◆ OMPI_COMM_CHECK_ASSERT

#define OMPI_COMM_CHECK_ASSERT (   comm,
  flag 
)    !!((comm)->c_assertions & flag)

Definition at line 102 of file communicator.h.

◆ OMPI_COMM_CHECK_ASSERT_ALLOW_OVERTAKE

#define OMPI_COMM_CHECK_ASSERT_ALLOW_OVERTAKE (   comm)    OMPI_COMM_CHECK_ASSERT(comm, OMPI_COMM_ASSERT_ALLOW_OVERTAKE)

Definition at line 106 of file communicator.h.

◆ OMPI_COMM_CHECK_ASSERT_EXACT_LENGTH

#define OMPI_COMM_CHECK_ASSERT_EXACT_LENGTH (   comm)    OMPI_COMM_CHECK_ASSERT(comm, OMPI_COMM_ASSERT_EXACT_LENGTH)

Definition at line 105 of file communicator.h.

◆ OMPI_COMM_CHECK_ASSERT_NO_ANY_SOURCE

#define OMPI_COMM_CHECK_ASSERT_NO_ANY_SOURCE (   comm)    OMPI_COMM_CHECK_ASSERT(comm, OMPI_COMM_ASSERT_NO_ANY_SOURCE)

Definition at line 104 of file communicator.h.

◆ OMPI_COMM_CHECK_ASSERT_NO_ANY_TAG

#define OMPI_COMM_CHECK_ASSERT_NO_ANY_TAG (   comm)    OMPI_COMM_CHECK_ASSERT(comm, OMPI_COMM_ASSERT_NO_ANY_TAG)

Definition at line 103 of file communicator.h.

◆ OMPI_COMM_CID_GROUP

#define OMPI_COMM_CID_GROUP   0x00000200

Definition at line 119 of file communicator.h.

◆ OMPI_COMM_CID_INTER

#define OMPI_COMM_CID_INTER   0x00000040

Definition at line 116 of file communicator.h.

◆ OMPI_COMM_CID_INTRA

#define OMPI_COMM_CID_INTRA   0x00000020

Modes required for acquiring the new comm-id.

The first (INTER/INTRA) indicates whether the input comm was an inter/intra-comm, the second whether the new communicator will be an inter/intra comm

Definition at line 115 of file communicator.h.

◆ OMPI_COMM_CID_INTRA_BRIDGE

#define OMPI_COMM_CID_INTRA_BRIDGE   0x00000080

Definition at line 117 of file communicator.h.

◆ OMPI_COMM_CID_INTRA_PMIX

#define OMPI_COMM_CID_INTRA_PMIX   0x00000100

Definition at line 118 of file communicator.h.

◆ OMPI_COMM_CID_IS_LOWER

#define OMPI_COMM_CID_IS_LOWER (   comm1,
  comm2 
)    ( ((comm1)->c_contextid < (comm2)->c_contextid)? 1:0)

Definition at line 129 of file communicator.h.

◆ OMPI_COMM_DIST_GRAPH

#define OMPI_COMM_DIST_GRAPH   0x00000400

Definition at line 61 of file communicator.h.

◆ OMPI_COMM_DYNAMIC

#define OMPI_COMM_DYNAMIC   0x00000008

Definition at line 56 of file communicator.h.

◆ OMPI_COMM_EXTRA_RETAIN

#define OMPI_COMM_EXTRA_RETAIN   0x00004000

Definition at line 63 of file communicator.h.

◆ OMPI_COMM_GRAPH

#define OMPI_COMM_GRAPH   0x00000200

Definition at line 60 of file communicator.h.

◆ OMPI_COMM_INTER

#define OMPI_COMM_INTER   0x00000001

Definition at line 53 of file communicator.h.

◆ OMPI_COMM_INTRINSIC

#define OMPI_COMM_INTRINSIC   0x00000004

Definition at line 55 of file communicator.h.

◆ OMPI_COMM_INVALID

#define OMPI_COMM_INVALID   0x00000020

Definition at line 58 of file communicator.h.

◆ OMPI_COMM_IS_CART

#define OMPI_COMM_IS_CART (   comm)    ((comm)->c_flags & OMPI_COMM_CART)

Definition at line 69 of file communicator.h.

◆ OMPI_COMM_IS_DIST_GRAPH

#define OMPI_COMM_IS_DIST_GRAPH (   comm)    ((comm)->c_flags & OMPI_COMM_DIST_GRAPH)

Definition at line 71 of file communicator.h.

◆ OMPI_COMM_IS_DYNAMIC

#define OMPI_COMM_IS_DYNAMIC (   comm)    ((comm)->c_flags & OMPI_COMM_DYNAMIC)

Definition at line 74 of file communicator.h.

◆ OMPI_COMM_IS_EXTRA_RETAIN

#define OMPI_COMM_IS_EXTRA_RETAIN (   comm)    ((comm)->c_flags & OMPI_COMM_EXTRA_RETAIN)

Definition at line 77 of file communicator.h.

◆ OMPI_COMM_IS_FREED

#define OMPI_COMM_IS_FREED (   comm)    ((comm)->c_flags & OMPI_COMM_ISFREED)

Definition at line 73 of file communicator.h.

◆ OMPI_COMM_IS_GRAPH

#define OMPI_COMM_IS_GRAPH (   comm)    ((comm)->c_flags & OMPI_COMM_GRAPH)

Definition at line 70 of file communicator.h.

◆ OMPI_COMM_IS_INTER

#define OMPI_COMM_IS_INTER (   comm)    ((comm)->c_flags & OMPI_COMM_INTER)

Definition at line 67 of file communicator.h.

◆ OMPI_COMM_IS_INTRA

#define OMPI_COMM_IS_INTRA (   comm)    (!((comm)->c_flags & OMPI_COMM_INTER))

Definition at line 68 of file communicator.h.

◆ OMPI_COMM_IS_INTRINSIC

#define OMPI_COMM_IS_INTRINSIC (   comm)    ((comm)->c_flags & OMPI_COMM_INTRINSIC)

Definition at line 72 of file communicator.h.

◆ OMPI_COMM_IS_INVALID

#define OMPI_COMM_IS_INVALID (   comm)    ((comm)->c_flags & OMPI_COMM_INVALID)

Definition at line 75 of file communicator.h.

◆ OMPI_COMM_IS_MAPBY_NODE

#define OMPI_COMM_IS_MAPBY_NODE (   comm)    ((comm)->c_flags & OMPI_COMM_MAPBY_NODE)

Definition at line 81 of file communicator.h.

◆ OMPI_COMM_IS_PML_ADDED

#define OMPI_COMM_IS_PML_ADDED (   comm)    ((comm)->c_flags & OMPI_COMM_PML_ADDED)

Definition at line 76 of file communicator.h.

◆ OMPI_COMM_IS_TOPO

#define OMPI_COMM_IS_TOPO (   comm)
Value:
(OMPI_COMM_IS_CART((comm)) || \
OMPI_COMM_IS_GRAPH((comm)) || \
OMPI_COMM_IS_DIST_GRAPH((comm)))

Definition at line 78 of file communicator.h.

◆ OMPI_COMM_ISFREED

#define OMPI_COMM_ISFREED   0x00000010

Definition at line 57 of file communicator.h.

◆ OMPI_COMM_MAPBY_NODE

#define OMPI_COMM_MAPBY_NODE   0x00008000

Definition at line 64 of file communicator.h.

◆ OMPI_COMM_NAMEISSET

#define OMPI_COMM_NAMEISSET   0x00000002

Definition at line 54 of file communicator.h.

◆ OMPI_COMM_PML_ADDED

#define OMPI_COMM_PML_ADDED   0x00001000

Definition at line 62 of file communicator.h.

◆ OMPI_COMM_SET_DYNAMIC

#define OMPI_COMM_SET_DYNAMIC (   comm)    ((comm)->c_flags |= OMPI_COMM_DYNAMIC)

Definition at line 83 of file communicator.h.

◆ OMPI_COMM_SET_EXTRA_RETAIN

#define OMPI_COMM_SET_EXTRA_RETAIN (   comm)    ((comm)->c_flags |= OMPI_COMM_EXTRA_RETAIN)

Definition at line 87 of file communicator.h.

◆ OMPI_COMM_SET_INVALID

#define OMPI_COMM_SET_INVALID (   comm)    ((comm)->c_flags |= OMPI_COMM_INVALID)

Definition at line 84 of file communicator.h.

◆ OMPI_COMM_SET_MAPBY_NODE

#define OMPI_COMM_SET_MAPBY_NODE (   comm)    ((comm)->c_flags |= OMPI_COMM_MAPBY_NODE)

Definition at line 88 of file communicator.h.

◆ OMPI_COMM_SET_PML_ADDED

#define OMPI_COMM_SET_PML_ADDED (   comm)    ((comm)->c_flags |= OMPI_COMM_PML_ADDED)

Definition at line 86 of file communicator.h.

◆ PREDEFINED_COMMUNICATOR_PAD

#define PREDEFINED_COMMUNICATOR_PAD   512

Padded struct to maintain back compatibiltiy.

The following ompi_predefined_xxx_t structure is used to maintain backwards binary compatibility for MPI applications compiled against one version of OMPI library but dynamically linked at runtime with another. The issue is between versions the actual structure may change in size (even between debug and optimized compilation – the structure contents change, and therefore the overall size changes).

This is problematic with predefined handles because the storage of the structure ends up being located to an application's BSS. This causes problems because if one version has the predefined as size X and then the application is dynamically linked with a version that has a size of Y (where X != Y) then the application will unintentionally overrun the memory initially allocated for the structure.

The solution we are using below creates a parent structure (ompi_predefined_xxx_t) that contains the base structure (ompi_xxx_t) followed by a character padding that is the size of the total size we choose to preallocate for the structure minus the amount used by the base structure. In this way, we've normalized the size of each predefined handle across multiple versions and configurations of Open MPI (e.g., MPI_COMM_WORLD will refer to a back-end struct that is X bytes long, even if we change the back-end ompi_communicator_t between version A.B and version C.D in Open MPI). When we come close to filling up the the padding we can add a pointer at the back end of the base structure to point to an extension of the type. Or we can just increase the padding and break backwards binary compatibility.

The above method was decided after several failed attempts described below.

  • Original implementation - suffered that the base structure seemed to always change in size between Open MPI versions and/or configurations (e.g., optimized vs. debugging build).
  • Convert all predefined handles to run-time-assigned pointers (i.e., global variables) - This worked except in cases where an MPI application wanted to assign the predefined handle value to a global variable – we could not guarantee to have the global variable filled until MPI_INIT was called (recall that MPI predefined handles must be assignable before MPI_INIT; e.g., "MPI_Comm foo = MPI_COMM_WORLD").
  • union of struct and padding - Similar to current implementation except using a union for the parent. This worked except in cases where the compilers did not support C99 union static initalizers. It would have been a pain to convert a bunch of the code to use non-static initializers (e.g., MPI datatypes).

Definition at line 286 of file communicator.h.

Typedef Documentation

◆ ompi_communicator_t

Definition at line 132 of file communicator.h.

◆ ompi_predefined_communicator_t

Function Documentation

◆ OBJ_CLASS_DECLARATION()

BEGIN_C_DECLS OBJ_CLASS_DECLARATION ( ompi_communicator_t  )

◆ ompi_comm_activate()

◆ ompi_comm_activate_nb()

int ompi_comm_activate_nb ( ompi_communicator_t **  newcomm,
ompi_communicator_t comm,
ompi_communicator_t bridgecomm,
const void *  arg0,
const void *  arg1,
bool  send_first,
int  mode,
ompi_request_t **  req 
)

Non-blocking variant of comm_activate.

Parameters
[in,out]newcommNew communicator
[in]commParent communicator
[in]bridgecommBridge communicator (used for PMIX and bridge modes)
[in]arg0Mode argument 0
[in]arg1Mode argument 1
[in]send_firstSend first from this process (PMIX mode only)
[in]modeCollective mode
[out]reqNew request object to track this operation

Definition at line 480 of file comm_cid.c.

References ompi_comm_cid_context_t::allreduce_fn, mca_comm_cid_context_alloc(), MCA_PML_CALL, mode, ompi_comm_cid_context_t::newcommp, NULL, OBJ_RELEASE, ompi_comm_cid_context_t::ok, ompi_comm_activate_nb_complete(), ompi_comm_request_get(), ompi_comm_request_return(), ompi_comm_request_schedule_append(), ompi_comm_request_start(), OMPI_COMM_SET_PML_ADDED, OMPI_ERR_OUT_OF_RESOURCE, OMPI_SUCCESS, and ompi_comm_cid_context_t::super.

Referenced by ompi_comm_activate(), and ompi_comm_idup_with_info_activate().

◆ ompi_comm_allocate()

ompi_communicator_t* ompi_comm_allocate ( int  local_group_size,
int  remote_group_size 
)

allocate a new communicator structure

Parameters
local_group_size
remote_group_sizeThis routine allocates the structure, the according local and remote groups, the proc-arrays in the local and remote group. It furthermore sets the fortran index correctly, and sets all other elements to zero.

Definition at line 239 of file comm_init.c.

References ompi_communicator_t::c_cube_dim, ompi_communicator_t::c_flags, ompi_communicator_t::c_local_group, ompi_communicator_t::c_remote_group, NULL, OBJ_NEW, OBJ_RETAIN, OMPI_COMM_INTER, ompi_group_allocate(), opal_cube_dim(), remote_size(), opal_infosubscriber_t::s_info, and ompi_communicator_t::super.

Referenced by mca_topo_base_cart_create(), and mca_topo_base_graph_create().

◆ ompi_comm_assert_subscribe()

◆ ompi_comm_cid_init()

int ompi_comm_cid_init ( void  )

Definition at line 160 of file comm_cid.c.

References OMPI_SUCCESS.

Referenced by ompi_mpi_init().

◆ ompi_comm_compare()

int ompi_comm_compare ( ompi_communicator_t comm1,
ompi_communicator_t comm2,
int *  result 
)

compare two communicators.

Parameters
comm1,comm2input communicators

Definition at line 1230 of file comm.c.

References ompi_communicator_t::c_contextid, ompi_communicator_t::c_local_group, ompi_communicator_t::c_remote_group, ompi_comm_remote_size(), ompi_comm_size(), ompi_group_compare(), and OMPI_SUCCESS.

Referenced by __create_fca_comm(), and MPI_Comm_compare().

◆ ompi_comm_create()

◆ ompi_comm_create_group()

◆ ompi_comm_determine_first()

◆ ompi_comm_dump()

◆ ompi_comm_dup()

int ompi_comm_dup ( ompi_communicator_t comm,
ompi_communicator_t **  newcomm 
)

dup a communicator.

Parameter are identical to the MPI-counterpart of the function. It has been extracted, since we need to be able to dup a communicator internally as well.

Parameters
comminput communicator
newcommthe new communicator or MPI_COMM_NULL if any error is detected.

Definition at line 969 of file comm.c.

References NULL, and ompi_comm_dup_with_info().

Referenced by component_select(), mca_common_ompio_file_open(), MPI_Comm_dup(), ompi_osc_rdma_component_select(), and vprotocol_pessimist_sender_based_alloc().

◆ ompi_comm_dup_with_info()

int ompi_comm_dup_with_info ( ompi_communicator_t comm,
opal_info_t info,
ompi_communicator_t **  newcomm 
)

dup a communicator with info.

Parameter are identical to the MPI-counterpart of the function. It has been extracted, since we need to be able to dup a communicator internally as well.

Parameters
comminput communicator
newcommthe new communicator or MPI_COMM_NULL if any error is detected.

Definition at line 977 of file comm.c.

Referenced by mca_topo_base_dist_graph_create(), mca_topo_base_dist_graph_create_adjacent(), MPI_Comm_dup_with_info(), and ompi_comm_dup().

◆ ompi_comm_enable()

int ompi_comm_enable ( ompi_communicator_t old_comm,
ompi_communicator_t new_comm,
int  new_rank,
int  num_procs,
ompi_proc_t **  topo_procs 
)

Take an almost complete communicator and reserve the CID as well as activate it (initialize the collective and the topologies).

Take an almost complete communicator and reserve the CID as well as activate it (initialize the collective and the topologies).

This will be called from the top level MPI. The condition for INTER communicator is already checked by the time this has been invoked. This function should do somewhat the same things which ompi_comm_create does. It will however select a component for topology and then call the cart_create on that component so that it can re-arrange the proc structure as required (if the reorder flag is true). It will then use this proc structure to create the communicator using ompi_comm_set. Take an almost complete communicator and reserve the CID as well as activate it (initialize the collective and the topologies).

Definition at line 1882 of file comm.c.

References ompi_communicator_t::c_local_group, ompi_communicator_t::c_my_rank, ompi_communicator_t::error_handler, ompi_group_t::grp_my_rank, NULL, num_procs, ompi_comm_activate(), OMPI_COMM_CID_INTRA, ompi_comm_fill_rest(), ompi_comm_nextcid(), and OMPI_SUCCESS.

Referenced by mca_topo_base_cart_create(), and mca_topo_base_graph_create().

◆ ompi_comm_finalize()

◆ ompi_comm_free()

◆ ompi_comm_get_cid()

◆ ompi_comm_get_rprocs()

◆ ompi_comm_group()

int ompi_comm_group ( ompi_communicator_t comm,
ompi_group_t **  group 
)

extract the local group from a communicator

Definition at line 258 of file comm.c.

References ompi_communicator_t::c_local_group, group(), OBJ_RETAIN, and OMPI_SUCCESS.

Referenced by mca_scoll_mpi_comm_query(), MPI_Comm_group(), MPI_File_get_group(), ompi_osc_ucx_post(), and ompi_osc_ucx_start().

◆ ompi_comm_idup()

int ompi_comm_idup ( ompi_communicator_t comm,
ompi_communicator_t **  newcomm,
ompi_request_t **  request 
)

dup a communicator (non-blocking).

Parameter are identical to the MPI-counterpart of the function. It has been extracted, since we need to be able to dup a communicator internally as well.

Parameters
comminput communicator
newcommthe new communicator or MPI_COMM_NULL if any error is detected.

Definition at line 1044 of file comm.c.

References ompi_comm_idup_with_info_context_t::comm, NULL, and ompi_comm_idup_with_info().

Referenced by MPI_Comm_idup().

◆ ompi_comm_idup_with_info()

int ompi_comm_idup_with_info ( ompi_communicator_t comm,
opal_info_t info,
ompi_communicator_t **  newcomm,
ompi_request_t **  req 
)

dup a communicator (non-blocking) with info.

of the function. It has been extracted, since we need to be able to dup a communicator internally as well.

Parameters
comminput communicator
newcommthe new communicator or MPI_COMM_NULL if any error is detected.

Definition at line 1049 of file comm.c.

References ompi_communicator_t::c_local_group, ompi_communicator_t::c_remote_group, ompi_comm_idup_with_info_context_t::comm, info, and ompi_comm_idup_internal().

Referenced by ompi_comm_idup().

◆ ompi_comm_init()

◆ ompi_comm_invalid()

static int ompi_comm_invalid ( ompi_communicator_t comm)
inlinestatic

Is this a valid communicator? This is a complicated question.

:-)

According to MPI-1:5.2.4 (p137):

"The predefined constant MPI_COMM_NULL is the value used for invalid communicator handles."

Hence, MPI_COMM_NULL is not valid. However, MPI-2:4.12.4 (p50) clearly states that the MPI_*_C2F and MPI_*_F2C functions should treat MPI_COMM_NULL as a valid communicator – it distinctly differentiates between "invalid" handles and "MPI_*_NULL" handles. Some feel that the MPI-1 definition still holds for all other MPI functions; others feel that the MPi-2 definitions trump the MPI-1 definition. Regardless of who is right, there is ambiguity here. So we have left ompi_comm_invalid() as originally coded – per the MPI-1 definition, where MPI_COMM_NULL is an invalid communicator. The MPI_Comm_c2f() function, therefore, calls ompi_comm_invalid() but also explictily checks to see if the handle is MPI_COMM_NULL.

Definition at line 331 of file communicator.h.

References ompi_predefined_communicator_t::comm, NULL, OMPI_COMM_IS_FREED, and OMPI_COMM_IS_INVALID.

Referenced by MPI_Allgather(), MPI_Allgatherv(), MPI_Allreduce(), MPI_Alltoall(), MPI_Alltoallv(), MPI_Alltoallw(), MPI_Attr_delete(), MPI_Attr_put(), MPI_Barrier(), MPI_Bcast(), MPI_Bsend(), MPI_Bsend_init(), MPI_Cart_coords(), MPI_Cart_create(), MPI_Cart_get(), MPI_Cart_map(), MPI_Cart_rank(), MPI_Cart_shift(), MPI_Cart_sub(), MPI_Cartdim_get(), MPI_Comm_accept(), MPI_Comm_c2f(), MPI_Comm_call_errhandler(), MPI_Comm_compare(), MPI_Comm_connect(), MPI_Comm_create(), MPI_Comm_create_group(), MPI_Comm_delete_attr(), MPI_Comm_disconnect(), MPI_Comm_dup(), MPI_Comm_dup_with_info(), MPI_Comm_free(), MPI_Comm_get_attr(), MPI_Comm_get_errhandler(), MPI_Comm_get_info(), MPI_Comm_get_name(), MPI_Comm_group(), MPI_Comm_idup(), MPI_Comm_rank(), MPI_Comm_remote_group(), MPI_Comm_remote_size(), MPI_Comm_set_attr(), MPI_Comm_set_errhandler(), MPI_Comm_set_info(), MPI_Comm_set_name(), MPI_Comm_size(), MPI_Comm_spawn(), MPI_Comm_spawn_multiple(), MPI_Comm_split(), MPI_Comm_split_type(), MPI_Comm_test_inter(), MPI_Dist_graph_create(), MPI_Dist_graph_create_adjacent(), MPI_Dist_graph_neighbors(), MPI_Dist_graph_neighbors_count(), MPI_Exscan(), MPI_File_open(), MPI_Gather(), MPI_Gatherv(), MPI_Graph_create(), MPI_Graph_get(), MPI_Graph_map(), MPI_Graph_neighbors(), MPI_Graph_neighbors_count(), MPI_Graphdims_get(), MPI_Iallgather(), MPI_Iallgatherv(), MPI_Iallreduce(), MPI_Ialltoall(), MPI_Ialltoallv(), MPI_Ialltoallw(), MPI_Ibarrier(), MPI_Ibcast(), MPI_Ibsend(), MPI_Iexscan(), MPI_Igather(), MPI_Igatherv(), MPI_Improbe(), MPI_Ineighbor_allgather(), MPI_Ineighbor_allgatherv(), MPI_Ineighbor_alltoall(), MPI_Ineighbor_alltoallv(), MPI_Ineighbor_alltoallw(), MPI_Intercomm_create(), MPI_Intercomm_merge(), MPI_Iprobe(), MPI_Irecv(), MPI_Ireduce(), MPI_Ireduce_scatter(), MPI_Ireduce_scatter_block(), MPI_Irsend(), MPI_Iscan(), MPI_Iscatter(), MPI_Iscatterv(), MPI_Isend(), MPI_Issend(), MPI_Mprobe(), MPI_Neighbor_allgather(), MPI_Neighbor_allgatherv(), MPI_Neighbor_alltoall(), MPI_Neighbor_alltoallv(), MPI_Neighbor_alltoallw(), MPI_Pack(), MPI_Pack_size(), MPI_Probe(), MPI_Recv(), MPI_Recv_init(), MPI_Reduce(), MPI_Reduce_scatter(), MPI_Reduce_scatter_block(), MPI_Rsend(), MPI_Rsend_init(), MPI_Scan(), MPI_Scatter(), MPI_Scatterv(), MPI_Send(), MPI_Send_init(), MPI_Sendrecv(), MPI_Sendrecv_replace(), MPI_Ssend(), MPI_Ssend_init(), MPI_Topo_test(), MPI_Unpack(), MPI_Win_allocate(), MPI_Win_allocate_shared(), MPI_Win_create(), MPI_Win_create_dynamic(), and PERUSE_Event_comm_register().

◆ ompi_comm_lookup()

◆ ompi_comm_nextcid()

int ompi_comm_nextcid ( ompi_communicator_t newcomm,
ompi_communicator_t comm,
ompi_communicator_t bridgecomm,
const void *  arg0,
const void *  arg1,
bool  send_first,
int  mode 
)

allocate new communicator ID

Parameters
newcommpointer to the new communicator
oldcommoriginal comm
bridgecommbridge comm for intercomm_create
modecombination of input OMPI_COMM_CID_INTRA: intra-comm OMPI_COMM_CID_INTER: inter-comm OMPI_COMM_CID_GROUP: only decide CID within the ompi_group_t associated with the communicator. arg0 must point to an int which will be used as the pml tag for communication. OMPI_COMM_CID_INTRA_BRIDGE: 2 intracomms connected by a bridge comm. arg0 and arg1 must point to integers representing the local and remote leader ranks. the remote leader rank is a rank in the bridgecomm. OMPI_COMM_CID_INTRA_PMIX: 2 intracomms, leaders talk through PMIx. arg0 must point to an integer representing the local leader rank. arg1 must point to a string representing the port of the remote leader.
send_firstto avoid a potential deadlock for the OOB version. This routine has to be thread safe in the final version.

Definition at line 281 of file comm_cid.c.

References mode, ompi_comm_nextcid_nb(), ompi_comm_request_return(), ompi_request_wait_completion(), OMPI_SUCCESS, and ompi_request_t::req_status.

Referenced by MPI_Intercomm_create(), MPI_Intercomm_merge(), ompi_comm_create(), ompi_comm_create_group(), ompi_comm_enable(), ompi_comm_split(), ompi_comm_split_type(), and ompi_dpm_connect_accept().

◆ ompi_comm_nextcid_nb()

int ompi_comm_nextcid_nb ( ompi_communicator_t newcomm,
ompi_communicator_t comm,
ompi_communicator_t bridgecomm,
const void *  arg0,
const void *  arg1,
bool  send_first,
int  mode,
ompi_request_t **  req 
)

allocate new communicator ID (non-blocking)

Parameters
newcommpointer to the new communicator
oldcommoriginal comm
bridgecommbridge comm for intercomm_create
modecombination of input OMPI_COMM_CID_INTRA: intra-comm OMPI_COMM_CID_INTER: inter-comm This routine has to be thread safe in the final version.

Definition at line 249 of file comm_cid.c.

References opal_pointer_array_t::lowest_free, mca_comm_cid_context_alloc(), mode, NULL, OBJ_RELEASE, ompi_comm_allreduce_getnextcid(), ompi_comm_request_get(), ompi_comm_request_schedule_append(), ompi_comm_request_start(), OMPI_ERR_OUT_OF_RESOURCE, ompi_mpi_communicators, OMPI_SUCCESS, ompi_comm_cid_context_t::start, and ompi_comm_cid_context_t::super.

Referenced by ompi_comm_idup_getcid(), and ompi_comm_nextcid().

◆ ompi_comm_overlapping_groups()

int ompi_comm_overlapping_groups ( int  size,
struct ompi_proc_t **  lprocs,
int  rsize,
struct ompi_proc_t **  rprocs 
)

This routine verifies, whether local_group and remote group are overlapping in intercomm_create.

Definition at line 1701 of file comm.c.

References OMPI_SUCCESS.

Referenced by MPI_Intercomm_create().

◆ ompi_comm_peer_invalid()

◆ ompi_comm_peer_lookup()

static struct ompi_proc_t* ompi_comm_peer_lookup ( ompi_communicator_t comm,
int  peer_id 
)
inlinestatic

◆ ompi_comm_rank()

static int ompi_comm_rank ( ompi_communicator_t comm)
inlinestatic

rank w/in the communicator

Definition at line 343 of file communicator.h.

References ompi_communicator_t::c_my_rank, and ompi_predefined_communicator_t::comm.

Referenced by activate_lock(), allocate_state_shared(), allocate_state_single(), allreduce_kary_tree_top(), barrier_hypercube_top(), bcast_kary_tree_top(), bcast_pipeline_top(), bootstrap_comm(), component_select(), datatype_create(), do_send_msg_detail(), file_query(), mca_coll_base_alltoall_intra_basic_inplace(), mca_coll_base_alltoallv_intra_basic_inplace(), mca_coll_basic_allgather_inter(), mca_coll_basic_allreduce_inter(), mca_coll_basic_allreduce_intra(), mca_coll_basic_alltoallw_intra(), mca_coll_basic_alltoallw_intra_inplace(), mca_coll_basic_barrier_inter_lin(), mca_coll_basic_barrier_intra_log(), mca_coll_basic_bcast_log_intra(), mca_coll_basic_exscan_intra(), mca_coll_basic_gatherv_intra(), mca_coll_basic_neighbor_allgather_cart(), mca_coll_basic_neighbor_allgather_graph(), mca_coll_basic_neighbor_allgatherv_cart(), mca_coll_basic_neighbor_allgatherv_graph(), mca_coll_basic_neighbor_alltoall_cart(), mca_coll_basic_neighbor_alltoall_graph(), mca_coll_basic_neighbor_alltoallv_cart(), mca_coll_basic_neighbor_alltoallv_graph(), mca_coll_basic_neighbor_alltoallw_cart(), mca_coll_basic_neighbor_alltoallw_graph(), mca_coll_basic_reduce_log_intra(), mca_coll_basic_reduce_scatter_block_inter(), mca_coll_basic_reduce_scatter_block_intra(), mca_coll_basic_reduce_scatter_inter(), mca_coll_basic_reduce_scatter_intra(), mca_coll_basic_scan_intra(), mca_coll_basic_scatterv_intra(), mca_coll_fca_bcast(), mca_coll_fca_comm_query(), mca_coll_fca_get_fca_lib(), mca_coll_fca_module_enable(), mca_coll_inter_allgather_inter(), mca_coll_inter_allgatherv_inter(), mca_coll_inter_allreduce_inter(), mca_coll_inter_bcast_inter(), mca_coll_inter_gather_inter(), mca_coll_inter_gatherv_inter(), mca_coll_inter_reduce_inter(), mca_coll_inter_scatter_inter(), mca_coll_inter_scatterv_inter(), mca_coll_monitoring_allgather(), mca_coll_monitoring_allgatherv(), mca_coll_monitoring_allreduce(), mca_coll_monitoring_alltoall(), mca_coll_monitoring_alltoallv(), mca_coll_monitoring_alltoallw(), mca_coll_monitoring_barrier(), mca_coll_monitoring_bcast(), mca_coll_monitoring_exscan(), mca_coll_monitoring_gather(), mca_coll_monitoring_gatherv(), mca_coll_monitoring_iallgather(), mca_coll_monitoring_iallgatherv(), mca_coll_monitoring_iallreduce(), mca_coll_monitoring_ialltoall(), mca_coll_monitoring_ialltoallv(), mca_coll_monitoring_ialltoallw(), mca_coll_monitoring_ibarrier(), mca_coll_monitoring_ibcast(), mca_coll_monitoring_iexscan(), mca_coll_monitoring_igather(), mca_coll_monitoring_igatherv(), mca_coll_monitoring_ireduce(), mca_coll_monitoring_ireduce_scatter(), mca_coll_monitoring_ireduce_scatter_block(), mca_coll_monitoring_iscan(), mca_coll_monitoring_iscatter(), mca_coll_monitoring_iscatterv(), mca_coll_monitoring_reduce(), mca_coll_monitoring_reduce_scatter(), mca_coll_monitoring_reduce_scatter_block(), mca_coll_monitoring_scan(), mca_coll_monitoring_scatter(), mca_coll_monitoring_scatterv(), mca_coll_sm_allreduce_intra(), mca_coll_sm_barrier_intra(), mca_coll_sm_bcast_intra(), mca_coll_spacc_allreduce_intra_redscat_allgather(), mca_coll_spacc_reduce_intra_redscat_gather(), mca_common_monitoring_add_procs(), mca_common_monitoring_coll_cache(), mca_common_ompio_file_open(), mca_fs_plfs_file_open(), mca_fs_ufs_file_open(), mca_sharedfp_individual_collaborate_data(), mca_sharedfp_individual_file_open(), mca_sharedfp_individual_write_ordered(), mca_sharedfp_individual_write_ordered_begin(), mca_sharedfp_lockedfile_component_file_query(), mca_sharedfp_lockedfile_file_close(), mca_sharedfp_lockedfile_file_open(), mca_sharedfp_lockedfile_read_ordered(), mca_sharedfp_lockedfile_read_ordered_begin(), mca_sharedfp_lockedfile_seek(), mca_sharedfp_lockedfile_write_ordered(), mca_sharedfp_lockedfile_write_ordered_begin(), mca_sharedfp_sm_file_open(), mca_sharedfp_sm_read_ordered(), mca_sharedfp_sm_read_ordered_begin(), mca_sharedfp_sm_request_position(), mca_sharedfp_sm_seek(), mca_sharedfp_sm_write_ordered(), mca_sharedfp_sm_write_ordered_begin(), mca_topo_base_cart_map(), mca_topo_base_cart_shift(), mca_topo_base_cart_sub(), mca_topo_base_graph_map(), mca_topo_base_neighbor_count(), mca_topo_treematch_dist_graph_create(), MPI_Abort(), MPI_Allgather(), MPI_Allgatherv(), MPI_Alltoallv(), MPI_Alltoallw(), MPI_Bcast(), MPI_Cart_map(), MPI_Comm_accept(), MPI_Comm_connect(), MPI_Comm_rank(), MPI_Comm_spawn(), MPI_Comm_spawn_multiple(), MPI_Gather(), MPI_Gatherv(), MPI_Graph_map(), MPI_Iallgather(), MPI_Iallgatherv(), MPI_Ialltoallv(), MPI_Ialltoallw(), MPI_Igather(), MPI_Igatherv(), MPI_Ineighbor_allgather(), MPI_Ineighbor_allgatherv(), MPI_Ineighbor_alltoall(), MPI_Ineighbor_alltoallv(), MPI_Ineighbor_alltoallw(), MPI_Intercomm_create(), MPI_Ireduce(), MPI_Ireduce_scatter(), MPI_Iscatter(), MPI_Iscatterv(), MPI_Neighbor_allgather(), MPI_Neighbor_allgatherv(), MPI_Neighbor_alltoall(), MPI_Neighbor_alltoallv(), MPI_Neighbor_alltoallw(), MPI_Reduce(), MPI_Reduce_scatter(), MPI_Scatter(), MPI_Scatterv(), my_rank(), NBC_Comm_neighbors(), NBC_Comm_neighbors_count(), ompi_coll_base_allgather_intra_basic_linear(), ompi_coll_base_allgather_intra_bruck(), ompi_coll_base_allgather_intra_neighborexchange(), ompi_coll_base_allgather_intra_recursivedoubling(), ompi_coll_base_allgather_intra_ring(), ompi_coll_base_allgather_intra_two_procs(), ompi_coll_base_allgatherv_intra_basic_default(), ompi_coll_base_allgatherv_intra_bruck(), ompi_coll_base_allgatherv_intra_neighborexchange(), ompi_coll_base_allgatherv_intra_ring(), ompi_coll_base_allgatherv_intra_two_procs(), ompi_coll_base_allreduce_intra_basic_linear(), ompi_coll_base_allreduce_intra_nonoverlapping(), ompi_coll_base_allreduce_intra_recursivedoubling(), ompi_coll_base_allreduce_intra_ring(), ompi_coll_base_allreduce_intra_ring_segmented(), ompi_coll_base_alltoall_intra_basic_linear(), ompi_coll_base_alltoall_intra_bruck(), ompi_coll_base_alltoall_intra_linear_sync(), ompi_coll_base_alltoall_intra_pairwise(), ompi_coll_base_alltoall_intra_two_procs(), ompi_coll_base_alltoallv_intra_basic_linear(), ompi_coll_base_alltoallv_intra_pairwise(), ompi_coll_base_barrier_intra_basic_linear(), ompi_coll_base_barrier_intra_bruck(), ompi_coll_base_barrier_intra_doublering(), ompi_coll_base_barrier_intra_recursivedoubling(), ompi_coll_base_barrier_intra_tree(), ompi_coll_base_barrier_intra_two_procs(), ompi_coll_base_bcast_intra_basic_linear(), ompi_coll_base_bcast_intra_binomial(), ompi_coll_base_bcast_intra_bintree(), ompi_coll_base_bcast_intra_chain(), ompi_coll_base_bcast_intra_generic(), ompi_coll_base_bcast_intra_pipeline(), ompi_coll_base_bcast_intra_split_bintree(), ompi_coll_base_gather_intra_basic_linear(), ompi_coll_base_gather_intra_binomial(), ompi_coll_base_gather_intra_linear_sync(), ompi_coll_base_reduce_generic(), ompi_coll_base_reduce_intra_basic_linear(), ompi_coll_base_reduce_intra_binary(), ompi_coll_base_reduce_intra_binomial(), ompi_coll_base_reduce_intra_chain(), ompi_coll_base_reduce_intra_in_order_binary(), ompi_coll_base_reduce_intra_pipeline(), ompi_coll_base_reduce_scatter_intra_basic_recursivehalving(), ompi_coll_base_reduce_scatter_intra_nonoverlapping(), ompi_coll_base_reduce_scatter_intra_ring(), ompi_coll_base_scatter_intra_basic_linear(), ompi_coll_base_scatter_intra_binomial(), ompi_coll_base_topo_build_bmtree(), ompi_coll_base_topo_build_chain(), ompi_coll_base_topo_build_in_order_bintree(), ompi_coll_base_topo_build_in_order_bmtree(), ompi_coll_base_topo_build_tree(), ompi_coll_libnbc_iallgather(), ompi_coll_libnbc_iallgatherv(), ompi_coll_libnbc_iallreduce(), ompi_coll_libnbc_iallreduce_inter(), ompi_coll_libnbc_ialltoall(), ompi_coll_libnbc_ialltoallv(), ompi_coll_libnbc_ialltoallw(), ompi_coll_libnbc_ibarrier(), ompi_coll_libnbc_ibarrier_inter(), ompi_coll_libnbc_ibcast(), ompi_coll_libnbc_iexscan(), ompi_coll_libnbc_igather(), ompi_coll_libnbc_igatherv(), ompi_coll_libnbc_ireduce(), ompi_coll_libnbc_ireduce_inter(), ompi_coll_libnbc_ireduce_scatter(), ompi_coll_libnbc_ireduce_scatter_block(), ompi_coll_libnbc_ireduce_scatter_block_inter(), ompi_coll_libnbc_ireduce_scatter_inter(), ompi_coll_libnbc_iscan(), ompi_coll_libnbc_iscatter(), ompi_coll_libnbc_iscatterv(), ompi_coll_portals4_build_in_order_bmtree(), ompi_coll_portals4_gather_intra(), ompi_coll_portals4_gather_intra_binomial_top(), ompi_coll_portals4_gather_intra_linear_top(), ompi_coll_portals4_igather_intra(), ompi_coll_portals4_iscatter_intra(), ompi_coll_portals4_scatter_intra(), ompi_coll_portals4_scatter_intra_linear_top(), ompi_coll_sm_lazy_enable(), ompi_coll_tuned_allgather_intra_dec_fixed(), ompi_coll_tuned_allgatherv_intra_dec_fixed(), ompi_coll_tuned_alltoall_intra_check_forced_init(), ompi_coll_tuned_alltoall_intra_dec_fixed(), ompi_coll_tuned_bcast_intra_dec_fixed(), ompi_coll_tuned_gather_intra_dec_fixed(), ompi_coll_tuned_reduce_intra_check_forced_init(), ompi_coll_tuned_reduce_intra_dec_fixed(), ompi_coll_tuned_scatter_intra_dec_fixed(), ompi_comm_allgather_emulate_intra(), ompi_comm_allreduce_inter_nb(), ompi_comm_allreduce_intra_bridge_nb(), ompi_comm_allreduce_intra_pmix_nb(), ompi_comm_determine_first(), ompi_comm_get_rprocs(), ompi_comm_split_verify(), ompi_dpm_connect_accept(), ompi_fcoll_base_coll_allgather_array(), ompi_fcoll_base_coll_allgatherv_array(), ompi_fcoll_base_coll_bcast_array(), ompi_fcoll_base_coll_gather_array(), ompi_fcoll_base_coll_gatherv_array(), ompi_fcoll_base_coll_scatterv_array(), ompi_init_preconnect_mpi(), ompi_mtl_mxm_isend(), ompi_mtl_mxm_send(), ompi_mtl_portals4_component_init(), ompi_osc_pt2pt_accumulate_w_req(), ompi_osc_pt2pt_compare_and_swap(), ompi_osc_pt2pt_complete(), ompi_osc_pt2pt_flush(), ompi_osc_pt2pt_flush_lock(), ompi_osc_pt2pt_frag_alloc_non_buffered(), ompi_osc_pt2pt_lock_internal_execute(), ompi_osc_pt2pt_lock_self(), ompi_osc_pt2pt_post(), ompi_osc_pt2pt_put_w_req(), ompi_osc_pt2pt_rget_accumulate_internal(), ompi_osc_pt2pt_rget_internal(), ompi_osc_pt2pt_unlock_internal(), ompi_osc_pt2pt_unlock_self(), ompi_osc_rdma_attach(), ompi_osc_rdma_create_groups(), ompi_osc_rdma_detach(), ompi_osc_rdma_free(), ompi_osc_rdma_new_peer(), ompi_osc_rdma_post_peer(), ompi_osc_rdma_share_data(), ompi_osc_sm_post(), ompi_osc_sm_start(), ompi_osc_ucx_post(), prepare_bcast_data(), process_acc(), process_acc_long(), process_cswap(), process_flush(), process_get(), process_get_acc(), process_get_acc_long(), process_put(), process_put_long(), reduce_inorder(), reduce_kary_tree_top(), try_kill_peers(), and vprotocol_pessimist_event_logger_connect().

◆ ompi_comm_remote_size()

static int ompi_comm_remote_size ( ompi_communicator_t comm)
inlinestatic

size of the remote group for inter-communicators.

returns zero for an intra-communicator

Definition at line 360 of file communicator.h.

References ompi_communicator_t::c_flags, ompi_communicator_t::c_remote_group, ompi_predefined_communicator_t::comm, ompi_group_t::grp_proc_count, and OMPI_COMM_INTER.

Referenced by disconnect_init(), mca_coll_basic_allgather_inter(), mca_coll_basic_allgatherv_inter(), mca_coll_basic_allreduce_inter(), mca_coll_basic_alltoall_inter(), mca_coll_basic_alltoallv_inter(), mca_coll_basic_alltoallw_inter(), mca_coll_basic_bcast_lin_inter(), mca_coll_basic_gather_inter(), mca_coll_basic_gatherv_inter(), mca_coll_basic_reduce_lin_inter(), mca_coll_basic_reduce_scatter_block_inter(), mca_coll_basic_reduce_scatter_inter(), mca_coll_basic_scatter_inter(), mca_coll_basic_scatterv_inter(), mca_coll_inter_allgather_inter(), mca_coll_inter_allgatherv_inter(), mca_coll_inter_comm_query(), mca_coll_inter_gather_inter(), mca_coll_inter_gatherv_inter(), mca_coll_inter_scatter_inter(), mca_coll_inter_scatterv_inter(), MPI_Allgatherv(), MPI_Alltoallv(), MPI_Alltoallw(), MPI_Bcast(), MPI_Comm_remote_size(), MPI_Gather(), MPI_Gatherv(), MPI_Iallgatherv(), MPI_Ialltoallv(), MPI_Ialltoallw(), MPI_Ibcast(), MPI_Igather(), MPI_Igatherv(), MPI_Ineighbor_allgatherv(), MPI_Intercomm_merge(), MPI_Ireduce(), MPI_Iscatter(), MPI_Iscatterv(), MPI_Reduce(), MPI_Scatter(), MPI_Scatterv(), ompi_coll_libnbc_iallgather_inter(), ompi_coll_libnbc_iallgatherv_inter(), ompi_coll_libnbc_iallreduce_inter(), ompi_coll_libnbc_ialltoall_inter(), ompi_coll_libnbc_ialltoallv_inter(), ompi_coll_libnbc_ialltoallw_inter(), ompi_coll_libnbc_ibarrier_inter(), ompi_coll_libnbc_ibcast_inter(), ompi_coll_libnbc_igather_inter(), ompi_coll_libnbc_igatherv_inter(), ompi_coll_libnbc_ireduce_inter(), ompi_coll_libnbc_ireduce_scatter_block_inter(), ompi_coll_libnbc_ireduce_scatter_inter(), ompi_coll_libnbc_iscatter_inter(), ompi_coll_libnbc_iscatterv_inter(), ompi_comm_allgather_emulate_intra(), ompi_comm_compare(), ompi_comm_create(), ompi_comm_determine_first(), try_kill_peers(), and tuned_module_enable().

◆ ompi_comm_set()

int ompi_comm_set ( ompi_communicator_t **  newcomm,
ompi_communicator_t oldcomm,
int  local_size,
int *  local_ranks,
int  remote_size,
int *  remote_ranks,
opal_hash_table_t attr,
ompi_errhandler_t errh,
bool  copy_topocomponent,
ompi_group_t local_group,
ompi_group_t remote_group 
)

This is THE routine, where all the communicator stuff is really set.

Parameters
[out]newcommnew ompi communicator object
[in]oldcommold communicator
[in]local_sizesize of local_ranks array
[in]local_rankslocal ranks (not used if local_group != NULL)
[in]remote_sizesize of remote_ranks array
[in]remote_ranksremote ranks (intercomm) (not used if remote_group != NULL)
[in]attrattributes (can be NULL)
[in]errherror handler
[in]copy_topocomponentwhether to copy the topology
[in]local_grouplocal process group (may be NULL if local_ranks array supplied)
[in]remote_groupremote process group (may be NULL)

Definition at line 101 of file comm.c.

References NULL, ompi_comm_set_nb(), ompi_request_wait, OMPI_SUCCESS, and remote_size().

Referenced by MPI_Intercomm_create(), MPI_Intercomm_merge(), ompi_comm_create(), ompi_comm_create_group(), ompi_comm_split(), ompi_comm_split_type(), and ompi_dpm_connect_accept().

◆ ompi_comm_set_name()

◆ ompi_comm_set_nb()

int ompi_comm_set_nb ( ompi_communicator_t **  ncomm,
ompi_communicator_t oldcomm,
int  local_size,
int *  local_ranks,
int  remote_size,
int *  remote_ranks,
opal_hash_table_t attr,
ompi_errhandler_t errh,
bool  copy_topocomponent,
ompi_group_t local_group,
ompi_group_t remote_group,
ompi_request_t **  req 
)

This is THE routine, where all the communicator stuff is really set.

Non-blocking version.

Parameters
[out]newcommnew ompi communicator object
[in]oldcommold communicator
[in]local_sizesize of local_ranks array
[in]local_rankslocal ranks (not used if local_group != NULL)
[in]remote_sizesize of remote_ranks array
[in]remote_ranksremote ranks (intercomm) (not used if remote_group != NULL)
[in]attrattributes (can be NULL)
[in]errherror handler
[in]copy_topocomponentwhether to copy the topology
[in]local_grouplocal process group (may be NULL if local_ranks array supplied)
[in]remote_groupremote process group (may be NULL)
[out]reqompi_request_t object for tracking completion

The MPI standard is pretty clear on this, the topology information behave as info keys, and is copied only on MPI_Comm_dup.

Definition at line 133 of file comm.c.

References ompi_communicator_t::c_cube_dim, ompi_communicator_t::c_flags, ompi_communicator_t::c_id_available, ompi_communicator_t::c_id_start_index, ompi_communicator_t::c_keyhash, ompi_communicator_t::c_local_comm, ompi_communicator_t::c_local_group, ompi_communicator_t::c_my_rank, ompi_communicator_t::c_remote_group, ompi_communicator_t::c_topo, COMM_ATTR, ompi_communicator_t::error_handler, ompi_predefined_group_t::group, ompi_group_t::grp_my_rank, NULL, OBJ_NEW, OBJ_RETAIN, ompi_attr_copy_all(), ompi_attr_hash_init(), ompi_comm_copy_topo(), ompi_comm_free(), ompi_comm_idup_internal(), OMPI_COMM_INTER, OMPI_COMM_IS_INTRA, ompi_dpm_mark_dyncomm(), OMPI_ERR_OUT_OF_RESOURCE, ompi_group_incl(), ompi_group_size(), ompi_mpi_group_null, OMPI_SUCCESS, opal_cube_dim(), OPAL_UNLIKELY, remote_size(), opal_infosubscriber_t::s_info, and ompi_communicator_t::super.

Referenced by ompi_comm_idup_internal(), and ompi_comm_set().

◆ ompi_comm_size()

static int ompi_comm_size ( ompi_communicator_t comm)
inlinestatic

size of the communicator

Definition at line 351 of file communicator.h.

References ompi_communicator_t::c_local_group, ompi_predefined_communicator_t::comm, and ompi_group_t::grp_proc_count.

Referenced by __create_fca_comm(), __fca_comm_new(), __get_local_ranks(), allgather_len_and_info(), allocate_state_shared(), allreduce_kary_tree_top(), barrier_hypercube_top(), bcast_kary_tree_top(), bcast_pipeline_top(), bootstrap_comm(), component_select(), disconnect_init(), get_tree_numdescendants_of(), group_size(), mca_coll_base_alltoall_intra_basic_inplace(), mca_coll_base_alltoallv_intra_basic_inplace(), mca_coll_basic_allgather_inter(), mca_coll_basic_alltoallw_intra(), mca_coll_basic_alltoallw_intra_inplace(), mca_coll_basic_barrier_intra_log(), mca_coll_basic_bcast_log_intra(), mca_coll_basic_comm_query(), mca_coll_basic_exscan_intra(), mca_coll_basic_gatherv_intra(), mca_coll_basic_reduce_log_intra(), mca_coll_basic_reduce_scatter_block_inter(), mca_coll_basic_reduce_scatter_block_intra(), mca_coll_basic_reduce_scatter_inter(), mca_coll_basic_reduce_scatter_intra(), mca_coll_basic_scan_intra(), mca_coll_basic_scatterv_intra(), mca_coll_cuda_reduce_scatter_block(), mca_coll_fca_allgather(), mca_coll_fca_allgatherv(), mca_coll_fca_comm_query(), mca_coll_hcoll_comm_query(), mca_coll_inter_allgather_inter(), mca_coll_inter_allgatherv_inter(), mca_coll_inter_comm_query(), mca_coll_inter_gather_inter(), mca_coll_inter_gatherv_inter(), mca_coll_inter_scatter_inter(), mca_coll_inter_scatterv_inter(), mca_coll_monitoring_allgather(), mca_coll_monitoring_allgatherv(), mca_coll_monitoring_allreduce(), mca_coll_monitoring_alltoall(), mca_coll_monitoring_alltoallv(), mca_coll_monitoring_alltoallw(), mca_coll_monitoring_barrier(), mca_coll_monitoring_bcast(), mca_coll_monitoring_exscan(), mca_coll_monitoring_gather(), mca_coll_monitoring_gatherv(), mca_coll_monitoring_iallgather(), mca_coll_monitoring_iallgatherv(), mca_coll_monitoring_iallreduce(), mca_coll_monitoring_ialltoall(), mca_coll_monitoring_ialltoallv(), mca_coll_monitoring_ialltoallw(), mca_coll_monitoring_ibarrier(), mca_coll_monitoring_ibcast(), mca_coll_monitoring_iexscan(), mca_coll_monitoring_igather(), mca_coll_monitoring_igatherv(), mca_coll_monitoring_ireduce(), mca_coll_monitoring_ireduce_scatter(), mca_coll_monitoring_ireduce_scatter_block(), mca_coll_monitoring_iscan(), mca_coll_monitoring_iscatter(), mca_coll_monitoring_iscatterv(), mca_coll_monitoring_reduce(), mca_coll_monitoring_reduce_scatter(), mca_coll_monitoring_reduce_scatter_block(), mca_coll_monitoring_scan(), mca_coll_monitoring_scatter(), mca_coll_monitoring_scatterv(), mca_coll_self_comm_query(), mca_coll_sm_bcast_intra(), mca_coll_sm_comm_query(), mca_coll_spacc_allreduce_intra_redscat_allgather(), mca_coll_spacc_reduce_intra_redscat_gather(), mca_common_monitoring_add_procs(), mca_common_monitoring_coll_cache(), mca_common_monitoring_comm_size_notify(), mca_common_monitoring_get_coll_count(), mca_common_monitoring_get_coll_size(), mca_common_monitoring_get_osc_recv_count(), mca_common_monitoring_get_osc_recv_size(), mca_common_monitoring_get_osc_sent_count(), mca_common_monitoring_get_osc_sent_size(), mca_common_monitoring_get_pml_count(), mca_common_monitoring_get_pml_size(), mca_common_ompio_file_open(), mca_pml_ob1_comm_size_notify(), mca_pml_ob1_get_posted_recvq_size(), mca_pml_ob1_get_unex_msgq_size(), mca_pml_ucx_get_ep(), mca_sharedfp_individual_collaborate_data(), mca_sharedfp_individual_write_ordered(), mca_sharedfp_individual_write_ordered_begin(), mca_sharedfp_lockedfile_read_ordered(), mca_sharedfp_lockedfile_read_ordered_begin(), mca_sharedfp_lockedfile_write_ordered(), mca_sharedfp_lockedfile_write_ordered_begin(), mca_sharedfp_sm_component_file_query(), mca_sharedfp_sm_read_ordered(), mca_sharedfp_sm_read_ordered_begin(), mca_sharedfp_sm_write_ordered(), mca_sharedfp_sm_write_ordered_begin(), mca_topo_base_cart_coords(), mca_topo_base_cart_map(), mca_topo_base_cart_shift(), mca_topo_base_dist_graph_distribute(), mca_topo_base_graph_get(), mca_topo_base_graphdims_get(), mca_topo_treematch_dist_graph_create(), MPI_Allgatherv(), MPI_Alltoallv(), MPI_Alltoallw(), MPI_Barrier(), MPI_Bcast(), MPI_Cart_create(), MPI_Comm_accept(), MPI_Comm_connect(), MPI_Comm_size(), MPI_Comm_spawn(), MPI_Comm_spawn_multiple(), MPI_Dist_graph_create(), MPI_Dist_graph_create_adjacent(), MPI_Gather(), MPI_Gatherv(), MPI_Graph_create(), MPI_Iallgatherv(), MPI_Ialltoallv(), MPI_Ialltoallw(), MPI_Ibcast(), MPI_Igather(), MPI_Igatherv(), MPI_Ineighbor_allgatherv(), MPI_Intercomm_create(), MPI_Intercomm_merge(), MPI_Ireduce(), MPI_Ireduce_scatter(), MPI_Iscatter(), MPI_Iscatterv(), MPI_Reduce(), MPI_Reduce_scatter(), MPI_Scatter(), MPI_Scatterv(), ompi_attr_create_predefined(), ompi_coll_base_allgather_intra_basic_linear(), ompi_coll_base_allgather_intra_bruck(), ompi_coll_base_allgather_intra_neighborexchange(), ompi_coll_base_allgather_intra_recursivedoubling(), ompi_coll_base_allgather_intra_ring(), ompi_coll_base_allgather_intra_two_procs(), ompi_coll_base_allgatherv_intra_basic_default(), ompi_coll_base_allgatherv_intra_bruck(), ompi_coll_base_allgatherv_intra_neighborexchange(), ompi_coll_base_allgatherv_intra_ring(), ompi_coll_base_allgatherv_intra_two_procs(), ompi_coll_base_allreduce_intra_recursivedoubling(), ompi_coll_base_allreduce_intra_ring(), ompi_coll_base_allreduce_intra_ring_segmented(), ompi_coll_base_alltoall_intra_basic_linear(), ompi_coll_base_alltoall_intra_bruck(), ompi_coll_base_alltoall_intra_linear_sync(), ompi_coll_base_alltoall_intra_pairwise(), ompi_coll_base_alltoall_intra_two_procs(), ompi_coll_base_alltoallv_intra_basic_linear(), ompi_coll_base_alltoallv_intra_pairwise(), ompi_coll_base_barrier_intra_basic_linear(), ompi_coll_base_barrier_intra_bruck(), ompi_coll_base_barrier_intra_doublering(), ompi_coll_base_barrier_intra_recursivedoubling(), ompi_coll_base_barrier_intra_tree(), ompi_coll_base_barrier_intra_two_procs(), ompi_coll_base_bcast_intra_basic_linear(), ompi_coll_base_bcast_intra_generic(), ompi_coll_base_bcast_intra_split_bintree(), ompi_coll_base_gather_intra_basic_linear(), ompi_coll_base_gather_intra_binomial(), ompi_coll_base_gather_intra_linear_sync(), ompi_coll_base_reduce_intra_basic_linear(), ompi_coll_base_reduce_intra_in_order_binary(), ompi_coll_base_reduce_scatter_intra_basic_recursivehalving(), ompi_coll_base_reduce_scatter_intra_nonoverlapping(), ompi_coll_base_reduce_scatter_intra_ring(), ompi_coll_base_scatter_intra_basic_linear(), ompi_coll_base_scatter_intra_binomial(), ompi_coll_base_topo_build_bmtree(), ompi_coll_base_topo_build_chain(), ompi_coll_base_topo_build_in_order_bintree(), ompi_coll_base_topo_build_in_order_bmtree(), ompi_coll_base_topo_build_tree(), ompi_coll_libnbc_iallgather(), ompi_coll_libnbc_iallgatherv(), ompi_coll_libnbc_iallreduce(), ompi_coll_libnbc_ialltoall(), ompi_coll_libnbc_ialltoallv(), ompi_coll_libnbc_ialltoallw(), ompi_coll_libnbc_ibarrier(), ompi_coll_libnbc_ibcast(), ompi_coll_libnbc_iexscan(), ompi_coll_libnbc_igather(), ompi_coll_libnbc_igatherv(), ompi_coll_libnbc_ireduce(), ompi_coll_libnbc_ireduce_scatter(), ompi_coll_libnbc_ireduce_scatter_block(), ompi_coll_libnbc_ireduce_scatter_block_inter(), ompi_coll_libnbc_ireduce_scatter_inter(), ompi_coll_libnbc_iscan(), ompi_coll_libnbc_iscatter(), ompi_coll_libnbc_iscatterv(), ompi_coll_portals4_build_in_order_bmtree(), ompi_coll_portals4_gather_intra_binomial_top(), ompi_coll_portals4_gather_intra_linear_top(), ompi_coll_portals4_scatter_intra_linear_top(), ompi_coll_sm_lazy_enable(), ompi_coll_spacc_comm_query(), ompi_coll_tuned_allgather_intra_dec_dynamic(), ompi_coll_tuned_allgather_intra_dec_fixed(), ompi_coll_tuned_allgatherv_intra_dec_dynamic(), ompi_coll_tuned_allgatherv_intra_dec_fixed(), ompi_coll_tuned_allreduce_intra_dec_fixed(), ompi_coll_tuned_alltoall_intra_dec_dynamic(), ompi_coll_tuned_alltoall_intra_dec_fixed(), ompi_coll_tuned_barrier_intra_dec_fixed(), ompi_coll_tuned_bcast_intra_dec_fixed(), ompi_coll_tuned_comm_query(), ompi_coll_tuned_gather_intra_dec_dynamic(), ompi_coll_tuned_gather_intra_dec_fixed(), ompi_coll_tuned_reduce_intra_dec_fixed(), ompi_coll_tuned_reduce_scatter_intra_dec_dynamic(), ompi_coll_tuned_reduce_scatter_intra_dec_fixed(), ompi_coll_tuned_scatter_intra_dec_dynamic(), ompi_coll_tuned_scatter_intra_dec_fixed(), ompi_comm_allgather_emulate_intra(), ompi_comm_compare(), ompi_comm_get_rprocs(), ompi_comm_split(), ompi_comm_split_verify(), ompi_dpm_connect_accept(), ompi_init_preconnect_mpi(), ompi_osc_portals4_lock_all(), ompi_osc_portals4_unlock_all(), ompi_osc_pt2pt_acc_op_queue(), ompi_osc_pt2pt_fence(), ompi_osc_pt2pt_flush_lock(), ompi_osc_pt2pt_frag_flush_all(), ompi_osc_pt2pt_frag_flush_pending_all(), ompi_osc_pt2pt_lock_internal(), ompi_osc_pt2pt_unlock_internal(), ompi_osc_rdma_component_select(), ompi_osc_rdma_create_groups(), ompi_osc_rdma_fence_atomic(), ompi_osc_rdma_lock_all_atomic(), ompi_osc_rdma_peer_setup(), ompi_osc_rdma_query_btls(), ompi_osc_rdma_set_no_lock_info(), ompi_osc_rdma_share_data(), ompi_osc_sm_fence(), ompi_osc_sm_lock_all(), ompi_osc_sm_shared_query(), ompi_osc_sm_unlock_all(), ompi_osc_ucx_complete(), ompi_osc_ucx_fence(), ompi_osc_ucx_flush_all(), ompi_osc_ucx_free(), ompi_osc_ucx_lock(), ompi_osc_ucx_lock_all(), ompi_osc_ucx_post(), ompi_osc_ucx_start(), ompi_osc_ucx_unlock_all(), oshmem_proc_group_create(), oshmem_proc_group_init(), portals4_comm_query(), reduce_inorder(), reduce_kary_tree_top(), try_kill_peers(), and tuned_module_enable().

◆ ompi_comm_split()

◆ ompi_comm_split_type()

◆ ompi_topo_dist_graph_create_adjacent()

int ompi_topo_dist_graph_create_adjacent ( ompi_communicator_t old_comm,
int  indegree,
int  sources[],
int  sourceweights[],
int  outdegree,
int  destinations[],
int  destweights[],
MPI_Info  info,
int  reorder,
MPI_Comm *  comm_dist_graph 
)

Back end of MPI_DIST_GRAPH_CREATE_ADJACENT.

Variable Documentation

◆ ompi_comm_f_to_c_table

opal_pointer_array_t ompi_comm_f_to_c_table
extern

◆ ompi_comm_num_dyncomm

int ompi_comm_num_dyncomm
extern

Definition at line 80 of file comm_init.c.

Referenced by ompi_comm_free(), ompi_dpm_dyn_finalize(), and ompi_dpm_mark_dyncomm().

◆ ompi_mpi_comm_null

ompi_predefined_communicator_t ompi_mpi_comm_null
extern

Definition at line 60 of file comm_init.c.

Referenced by ompi_comm_finalize(), ompi_comm_free(), ompi_comm_init(), and ompi_file_init().

◆ ompi_mpi_comm_null_addr

ompi_predefined_communicator_t* ompi_mpi_comm_null_addr
extern

Definition at line 67 of file comm_init.c.

◆ ompi_mpi_comm_parent

ompi_communicator_t* ompi_mpi_comm_parent
extern

◆ ompi_mpi_comm_self

◆ ompi_mpi_comm_self_addr

ompi_predefined_communicator_t* ompi_mpi_comm_self_addr
extern

Definition at line 65 of file comm_init.c.

◆ ompi_mpi_comm_world

◆ ompi_mpi_comm_world_addr

ompi_predefined_communicator_t* ompi_mpi_comm_world_addr
extern

Definition at line 63 of file comm_init.c.

◆ ompi_mpi_communicators

OMPI_COMM_IS_CART
#define OMPI_COMM_IS_CART(comm)
Definition: communicator.h:68