OpenMPI  0.1.1
pml_cm.h
1 /*
2  * Copyright (c) 2004-2006 The Regents of the University of California.
3  * All rights reserved.
4  * Copyright (c) 2004-2007 The University of Tennessee and The University
5  * of Tennessee Research Foundation. All rights
6  * reserved.
7  * $COPYRIGHT$
8  *
9  * Additional copyrights may follow
10  *
11  * $HEADER$
12  */
13 
14 #ifndef PML_CM_H
15 #define PML_CM_H
16 
17 #include "ompi_config.h"
18 #include "ompi/request/request.h"
19 #include "ompi/mca/pml/pml.h"
20 #include "ompi/mca/pml/base/base.h"
21 #include "ompi/datatype/ompi_datatype.h"
22 #include "ompi/communicator/communicator.h"
23 #include "ompi/request/request.h"
24 #include "ompi/mca/mtl/mtl.h"
25 
26 BEGIN_C_DECLS
27 
28 struct mca_mtl_request_t;
29 
30 /* Array of send completion callback - one per send type
31  * These are called internally by the library when the send
32  * is completed from its perspective.
33  */
34 extern void (*send_completion_callbacks[])
35  (struct mca_mtl_request_t *mtl_request);
36 
37 struct ompi_pml_cm_t {
39  int free_list_num;
40  int free_list_max;
41  int free_list_inc;
42  int default_priority;
43 };
44 typedef struct ompi_pml_cm_t ompi_pml_cm_t;
45 extern ompi_pml_cm_t ompi_pml_cm;
46 
47 /* PML interface functions */
48 OMPI_DECLSPEC extern int mca_pml_cm_add_procs(struct ompi_proc_t **procs, size_t nprocs);
49 OMPI_DECLSPEC extern int mca_pml_cm_del_procs(struct ompi_proc_t **procs, size_t nprocs);
50 
51 OMPI_DECLSPEC extern int mca_pml_cm_enable(bool enable);
52 OMPI_DECLSPEC extern int mca_pml_cm_progress(void);
53 
54 OMPI_DECLSPEC extern int mca_pml_cm_add_comm(struct ompi_communicator_t* comm);
55 OMPI_DECLSPEC extern int mca_pml_cm_del_comm(struct ompi_communicator_t* comm);
56 
57 OMPI_DECLSPEC extern int mca_pml_cm_irecv_init(void *buf,
58  size_t count,
59  ompi_datatype_t *datatype,
60  int src,
61  int tag,
62  struct ompi_communicator_t* comm,
63  struct ompi_request_t **request);
64 
65 OMPI_DECLSPEC extern int mca_pml_cm_irecv(void *buf,
66  size_t count,
67  ompi_datatype_t *datatype,
68  int src,
69  int tag,
70  struct ompi_communicator_t* comm,
71  struct ompi_request_t **request);
72 
73 OMPI_DECLSPEC extern int mca_pml_cm_recv(void *buf,
74  size_t count,
75  ompi_datatype_t *datatype,
76  int src,
77  int tag,
78  struct ompi_communicator_t* comm,
79  ompi_status_public_t* status );
80 
81 OMPI_DECLSPEC extern int mca_pml_cm_isend_init(void *buf,
82  size_t count,
83  ompi_datatype_t *datatype,
84  int dst,
85  int tag,
86  mca_pml_base_send_mode_t mode,
87  struct ompi_communicator_t* comm,
88  struct ompi_request_t **request);
89 
90 OMPI_DECLSPEC extern int mca_pml_cm_isend(void *buf,
91  size_t count,
92  ompi_datatype_t *datatype,
93  int dst,
94  int tag,
95  mca_pml_base_send_mode_t mode,
96  struct ompi_communicator_t* comm,
97  struct ompi_request_t **request);
98 
99 OMPI_DECLSPEC extern int mca_pml_cm_send(void *buf,
100  size_t count,
101  ompi_datatype_t *datatype,
102  int dst,
103  int tag,
104  mca_pml_base_send_mode_t mode,
105  struct ompi_communicator_t* comm);
106 
107 OMPI_DECLSPEC extern int mca_pml_cm_iprobe(int dst,
108  int tag,
109  struct ompi_communicator_t* comm,
110  int *matched,
111  ompi_status_public_t* status);
112 
113 OMPI_DECLSPEC extern int mca_pml_cm_probe(int dst,
114  int tag,
115  struct ompi_communicator_t* comm,
116  ompi_status_public_t* status);
117 
118 OMPI_DECLSPEC extern int mca_pml_cm_improbe(int dst,
119  int tag,
120  struct ompi_communicator_t* comm,
121  int *matched,
122  struct ompi_message_t **message,
123  ompi_status_public_t* status);
124 
125 OMPI_DECLSPEC extern int mca_pml_cm_mprobe(int dst,
126  int tag,
127  struct ompi_communicator_t* comm,
128  struct ompi_message_t **message,
129  ompi_status_public_t* status);
130 
131 OMPI_DECLSPEC extern int mca_pml_cm_imrecv(void *buf,
132  size_t count,
133  ompi_datatype_t *datatype,
134  struct ompi_message_t **message,
135  struct ompi_request_t **request);
136 
137 OMPI_DECLSPEC extern int mca_pml_cm_mrecv(void *buf,
138  size_t count,
139  ompi_datatype_t *datatype,
140  struct ompi_message_t **message,
141  ompi_status_public_t* status);
142 
143 OMPI_DECLSPEC extern int mca_pml_cm_start(size_t count, ompi_request_t** requests);
144 
145 
146 OMPI_DECLSPEC extern int mca_pml_cm_dump(struct ompi_communicator_t* comm,
147  int verbose);
148 
149 OMPI_DECLSPEC extern int mca_pml_cm_cancel(struct ompi_request_t *request, int flag);
150 
151 END_C_DECLS
152 
153 #endif /* PML_CM_H_HAS_BEEN_INCLUDED */
P2P Management Layer (PML)
Definition: ompi_datatype.h:68
Definition: mtl.h:51
Remote Open MPI process structure.
Definition: proc.h:56
Top-level description of requests.
PML instance.
Definition: pml.h:512
Matching Transport Layer.
Definition: mpi.h:337
Definition: evdns.c:158
Definition: pml_cm.h:37
Definition: communicator.h:118
Main top-level request struct definition.
Definition: request.h:100
Definition: message.h:22