OpenMPI  0.1.1
vprotocol.h
1 /*
2  * Copyright (c) 2004-2007 The Trustees of the University of Tennessee.
3  * All rights reserved.
4  * Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
5  * $COPYRIGHT$
6  *
7  * Additional copyrights may follow
8  *
9  * $HEADER$
10  */
11 
12 #ifndef __INCLUDE_VPROTOCOL_H_
13 #define __INCLUDE_VPROTOCOL_H_
14 
15 #include "ompi_config.h"
16 #include "opal/mca/mca.h"
17 #include "ompi/mca/pml/pml.h"
18 #include "ompi/request/request.h"
19 
20 BEGIN_C_DECLS
21 
22 /* PML_V->PROTOCOL Called by MCA_PML_V framework to initialize the component.
23  *
24  * @param priority (OUT) Relative priority or ranking used by MCA to
25  * select a component.
26  *
27  * @param enable_progress_threads (IN) Whether this component is
28  * allowed to run a hidden/progress thread or not.
29  *
30  * @param enable_mpi_threads (IN) Whether support for multiple MPI
31  * threads is enabled or not (i.e., MPI_THREAD_MULTIPLE), which
32  * indicates whether multiple threads may invoke this component
33  * simultaneously or not.
34  */
35 typedef struct mca_vprotocol_base_module_2_0_0_t *
36  (*mca_vprotocol_base_component_init_fn_t)(int *priority,
37  bool enable_progress_threads,
38  bool enable_mpi_threads);
39 
40 /* Release any resource allocated in init
41  */
42 typedef int (*mca_vprotocol_base_component_finalize_fn_t)(void);
43 
44 
45 /* The MCA type for class instance
46  */
48  mca_base_component_t pmlm_version;
49  mca_base_component_data_t pmlm_data;
50  mca_vprotocol_base_component_init_fn_t pmlm_init;
51  mca_vprotocol_base_component_finalize_fn_t pmlm_finalize;
54 
55 /* The base module of the component
56  */
58 {
59  /* PML module stuff */
76  /* Request wait/test stuff */
85 
86  /* Custom requests classes to add extra data at end of pml requests */
87  opal_class_t * req_recv_class;
88  opal_class_t * req_send_class;
91 
92 END_C_DECLS
93 
94 /* silently include the pml_v.h as every file including vprotocol.h will also
95  * need it
96  */
97 #include "ompi/mca/pml/v/pml_v.h"
98 #include "ompi/mca/vprotocol/base/base.h"
99 
100 #endif /* __INCLUDE_VPROTOCOL_H_ */
int(* mca_pml_base_module_add_procs_fn_t)(struct ompi_proc_t **procs, size_t nprocs)
MCA management functions.
Definition: pml.h:157
int(* ompi_request_wait_fn_t)(ompi_request_t **req_ptr, ompi_status_public_t *status)
Wait (blocking-mode) for one requests to complete.
Definition: request.h:256
int(* ompi_request_test_any_fn_t)(size_t count, ompi_request_t **requests, int *index, int *completed, ompi_status_public_t *status)
Non-blocking test for request completion.
Definition: request.h:206
Common type for all MCA components.
Definition: mca.h:250
P2P Management Layer (PML)
int(* mca_pml_base_module_irecv_init_fn_t)(void *buf, size_t count, struct ompi_datatype_t *datatype, int src, int tag, struct ompi_communicator_t *comm, struct ompi_request_t **request)
Initialize a persistent receive request.
Definition: pml.h:234
int(* mca_pml_base_module_del_procs_fn_t)(struct ompi_proc_t **procs, size_t nprocs)
Downcall from MPI/RTE layer when processes are terminated.
Definition: pml.h:171
Definition: vprotocol.h:47
int(* ompi_request_test_some_fn_t)(size_t count, ompi_request_t **requests, int *outcount, int *indices, ompi_status_public_t *statuses)
Non-blocking test for some of N requests to complete.
Definition: request.h:240
int(* mca_pml_base_module_irecv_fn_t)(void *buf, size_t count, struct ompi_datatype_t *datatype, int src, int tag, struct ompi_communicator_t *comm, struct ompi_request_t **request)
Post a receive request.
Definition: pml.h:256
int(* mca_pml_base_module_isend_fn_t)(void *buf, size_t count, struct ompi_datatype_t *datatype, int dst, int tag, mca_pml_base_send_mode_t mode, struct ompi_communicator_t *comm, struct ompi_request_t **request)
Post a send request.
Definition: pml.h:340
int(* mca_pml_base_module_add_comm_fn_t)(struct ompi_communicator_t *comm)
MPI Interface Functions.
Definition: pml.h:208
int(* ompi_request_wait_all_fn_t)(size_t count, ompi_request_t **requests, ompi_status_public_t *statuses)
Wait (blocking-mode) for all of N requests to complete.
Definition: request.h:287
int(* mca_pml_base_module_progress_fn_t)(void)
For non-threaded case, provides MCA the opportunity to progress outstanding requests on all btls...
Definition: pml.h:192
int(* mca_pml_base_module_send_fn_t)(void *buf, size_t count, struct ompi_datatype_t *datatype, int dst, int tag, mca_pml_base_send_mode_t mode, struct ompi_communicator_t *comm)
Post a send request and wait for completion.
Definition: pml.h:364
int(* mca_pml_base_module_iprobe_fn_t)(int src, int tag, struct ompi_communicator_t *comm, int *matched, ompi_status_public_t *status)
Probe to poll for pending recv.
Definition: pml.h:397
int(* mca_pml_base_module_start_fn_t)(size_t count, struct ompi_request_t **requests)
Initiate one or more persistent requests.
Definition: pml.h:381
Top-level interface for all MCA components.
Class descriptor.
Definition: opal_object.h:152
Definition: vprotocol.h:57
int(* mca_pml_base_module_del_comm_fn_t)(struct ompi_communicator_t *comm)
Downcall from MPI layer when a communicator is destroyed.
Definition: pml.h:220
Top-level description of requests.
int(* mca_pml_base_module_isend_init_fn_t)(void *buf, size_t count, struct ompi_datatype_t *datatype, int dst, int tag, mca_pml_base_send_mode_t mode, struct ompi_communicator_t *comm, struct ompi_request_t **request)
Initialize a persistent send request.
Definition: pml.h:315
Meta data for MCA v2.0.0 components.
Definition: mca.h:309
int(* mca_pml_base_module_enable_fn_t)(bool enable)
Downcall from MCA layer to enable the PML/BTLs.
Definition: pml.h:179
int(* ompi_request_test_all_fn_t)(size_t count, ompi_request_t **requests, int *completed, ompi_status_public_t *statuses)
Non-blocking test for request completion.
Definition: request.h:225
int(* mca_pml_base_module_dump_fn_t)(struct ompi_communicator_t *comm, int verbose)
Diagnostics function.
Definition: pml.h:494
int(* ompi_request_wait_any_fn_t)(size_t count, ompi_request_t **requests, int *index, ompi_status_public_t *status)
Wait (blocking-mode) for one of N requests to complete.
Definition: request.h:271
int(* mca_pml_base_module_probe_fn_t)(int src, int tag, struct ompi_communicator_t *comm, ompi_status_public_t *status)
Blocking probe to wait for pending recv.
Definition: pml.h:424
int(* mca_pml_base_module_recv_fn_t)(void *buf, size_t count, struct ompi_datatype_t *datatype, int src, int tag, struct ompi_communicator_t *comm, ompi_status_public_t *status)
Post a receive and wait for completion.
Definition: pml.h:285
int(* ompi_request_test_fn_t)(ompi_request_t **rptr, int *completed, ompi_status_public_t *status)
Non-blocking test for request completion.
Definition: request.h:190
int(* ompi_request_wait_some_fn_t)(size_t count, ompi_request_t **requests, int *outcount, int *indices, ompi_status_public_t *statuses)
Wait (blocking-mode) for some of N requests to complete.
Definition: request.h:304