OpenMPI 0.1.1

- Main Page
- Related Pages
- Modules
- Data Structures
- Files

- File List
- Globals

pml_bfo_comm.h
Go to the documentation of this file.
1 /*
2 * Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
3 * University Research and Technology
4 * Corporation. All rights reserved.
5 * Copyright (c) 2004-2006 The University of Tennessee and The University
6 * of Tennessee Research Foundation. All rights
7 * reserved.
8 * Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
9 * University of Stuttgart. All rights reserved.
10 * Copyright (c) 2004-2005 The Regents of the University of California.
11 * All rights reserved.
12 * Copyright (c) 2010-2012 Oracle and/or its affiliates. All rights reserved.
13 * $COPYRIGHT$
14 *
15 * Additional copyrights may follow
16 *
17 * $HEADER$
18 */
19 /**
20 * @file
21 */
22 #ifndef MCA_PML_BFO_COMM_H
23 #define MCA_PML_BFO_COMM_H
24
25 #include "opal/threads/mutex.h"
26 #include "opal/class/opal_list.h"
27 #include "ompi/proc/proc.h"
28 BEGIN_C_DECLS
29
30
31 struct mca_pml_bfo_comm_proc_t {
32 opal_object_t super;
33 uint16_t expected_sequence; /**< send message sequence number - receiver side */
34 struct ompi_proc_t* ompi_proc;
35 #if OPAL_ENABLE_MULTI_THREADS
36 volatile int32_t send_sequence; /**< send side sequence number */
37 #else
38 int32_t send_sequence; /**< send side sequence number */
39 #endif
40 opal_list_t frags_cant_match; /**< out-of-order fragment queues */
41 opal_list_t specific_receives; /**< queues of unmatched specific receives */
42 opal_list_t unexpected_frags; /**< unexpected fragment queues */
43 };
44 typedef struct mca_pml_bfo_comm_proc_t mca_pml_bfo_comm_proc_t;
45
46
47 /**
48 * Cached on ompi_communicator_t to hold queues/state
49 * used by the PML<->PTL interface for matching logic.
50 */
51 struct mca_pml_comm_t {
52 opal_object_t super;
53 #if OPAL_ENABLE_MULTI_THREADS
54 volatile uint32_t recv_sequence; /**< recv request sequence number - receiver side */
55 #else
56 uint32_t recv_sequence; /**< recv request sequence number - receiver side */
57 #endif
58 opal_mutex_t matching_lock; /**< matching lock */
59 opal_list_t wild_receives; /**< queue of unmatched wild (source process not specified) receives */
60 mca_pml_bfo_comm_proc_t* procs;
61 size_t num_procs;
62 size_t last_probed;
63 };
64 typedef struct mca_pml_comm_t mca_pml_bfo_comm_t;
65
66 OBJ_CLASS_DECLARATION(mca_pml_bfo_comm_t);
67
68
69 /**
70 * Initialize an instance of mca_pml_bfo_comm_t based on the communicator size.
71 *
72 * @param comm Instance of mca_pml_bfo_comm_t
73 * @param size Size of communicator
74 * @return OMPI_SUCCESS or error status on failure.
75 */
76
77 extern int mca_pml_bfo_comm_init_size(mca_pml_bfo_comm_t* comm, size_t size);
78
79 END_C_DECLS
80 #endif
81
mca_pml_bfo_comm_proc_t::specific_receives
opal_list_t specific_receives
queues of unmatched specific receives
Definition: pml_bfo_comm.h:41
mca_pml_comm_t::recv_sequence
uint32_t recv_sequence
recv request sequence number - receiver side
Definition: pml_bfo_comm.h:56
mca_pml_bfo_comm_proc_t::expected_sequence
uint16_t expected_sequence
send message sequence number - receiver side
Definition: pml_bfo_comm.h:33
mca_pml_bfo_comm_init_size
int mca_pml_bfo_comm_init_size(mca_pml_bfo_comm_t *comm, size_t size)
Initialize an instance of mca_pml_bfo_comm_t based on the communicator size.
Definition: pml_bfo_comm.c:84
mca_pml_bfo_comm_proc_t::unexpected_frags
opal_list_t unexpected_frags
unexpected fragment queues
Definition: pml_bfo_comm.h:42
mca_pml_comm_t
Cached on ompi_communicator_t to hold queues/state used by the PML<->PTL interface for matching logic...
Definition: pml_bfo_comm.h:51
opal_mutex_t
Definition: mutex_unix.h:53
mca_pml_bfo_comm_proc_t::send_sequence
int32_t send_sequence
send side sequence number
Definition: pml_bfo_comm.h:38
mca_pml_bfo_comm_proc_t::frags_cant_match
opal_list_t frags_cant_match
out-of-order fragment queues
Definition: pml_bfo_comm.h:40
opal_list.h
The opal_list_t interface is used to provide a generic doubly-linked list container for Open MPI...
proc.h
Process identification structure interface.
ompi_proc_t
Remote Open MPI process structure.
Definition: proc.h:56
mca_pml_comm_t::wild_receives
opal_list_t wild_receives
queue of unmatched wild (source process not specified) receives
Definition: pml_bfo_comm.h:59
opal_object_t
Base object.
Definition: opal_object.h:182
opal_list_t
Definition: opal_list.h:147
mca_pml_bfo_comm_proc_t
Definition: pml_bfo_comm.h:31
mca_pml_comm_t::matching_lock
opal_mutex_t matching_lock
matching lock
Definition: pml_bfo_comm.h:58
mutex.h
Mutual exclusion functions.
OBJ_CLASS_DECLARATION
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236