OpenMPI  0.1.1
mtl_mxm.h
1 /*
2  * Copyright (C) Mellanox Technologies Ltd. 2001-2011. ALL RIGHTS RESERVED.
3  * $COPYRIGHT$
4  *
5  * Additional copyrights may follow
6  *
7  * $HEADER$
8  */
9 
10 #ifndef MTL_MXM_H_HAS_BEEN_INCLUDED
11 #define MTL_MXM_H_HAS_BEEN_INCLUDED
12 
13 #include <stdint.h>
14 #include <sys/types.h>
15 #include <unistd.h>
16 
17 #include <mxm/api/mxm_api.h>
18 #include <mxm/api/mxm_addr.h>
19 
20 #include "ompi/mca/pml/pml.h"
21 #include "ompi/mca/mtl/mtl.h"
22 #include "ompi/mca/mtl/base/base.h"
23 #include "opal/datatype/opal_convertor.h"
24 
25 #include "mtl_mxm_debug.h"
26 
27 BEGIN_C_DECLS
28 
29 /* MTL interface functions */
30 extern int ompi_mtl_mxm_add_procs(struct mca_mtl_base_module_t* mtl,
31  size_t nprocs, struct ompi_proc_t** procs,
32  struct mca_mtl_base_endpoint_t **mtl_peer_data);
33 
34 extern int ompi_mtl_mxm_del_procs(struct mca_mtl_base_module_t* mtl,
35  size_t nprocs, struct ompi_proc_t** procs,
36  struct mca_mtl_base_endpoint_t **mtl_peer_data);
37 
38 extern int ompi_mtl_mxm_send(struct mca_mtl_base_module_t* mtl,
39  struct ompi_communicator_t* comm, int dest, int tag,
40  struct opal_convertor_t *convertor,
41  mca_pml_base_send_mode_t mode);
42 
43 extern int ompi_mtl_mxm_isend(struct mca_mtl_base_module_t* mtl,
44  struct ompi_communicator_t* comm, int dest,
45  int tag, struct opal_convertor_t *convertor,
46  mca_pml_base_send_mode_t mode, bool blocking,
47  mca_mtl_request_t * mtl_request);
48 
49 extern int ompi_mtl_mxm_irecv(struct mca_mtl_base_module_t* mtl,
50  struct ompi_communicator_t *comm, int src,
51  int tag, struct opal_convertor_t *convertor,
52  struct mca_mtl_request_t *mtl_request);
53 
54 extern int ompi_mtl_mxm_iprobe(struct mca_mtl_base_module_t* mtl,
55  struct ompi_communicator_t *comm, int src,
56  int tag, int *flag,
57  struct ompi_status_public_t *status);
58 
59 extern int ompi_mtl_mxm_cancel(struct mca_mtl_base_module_t* mtl,
60  struct mca_mtl_request_t *mtl_request, int flag);
61 
62 extern int ompi_mtl_mxm_imrecv(struct mca_mtl_base_module_t* mtl,
63  struct opal_convertor_t *convertor,
64  struct ompi_message_t **message,
65  struct mca_mtl_request_t *mtl_request);
66 
67 extern int ompi_mtl_mxm_improbe(struct mca_mtl_base_module_t *mtl,
68  struct ompi_communicator_t *comm,
69  int src,
70  int tag,
71  int *matched,
72  struct ompi_message_t **message,
73  struct ompi_status_public_t *status);
74 
75 extern int ompi_mtl_mxm_add_comm(struct mca_mtl_base_module_t *mtl,
76  struct ompi_communicator_t *comm);
77 
78 extern int ompi_mtl_mxm_del_comm(struct mca_mtl_base_module_t *mtl,
79  struct ompi_communicator_t *comm);
80 
81 extern int ompi_mtl_mxm_finalize(struct mca_mtl_base_module_t* mtl);
82 
83 int ompi_mtl_mxm_module_init(void);
84 
85 END_C_DECLS
86 
87 #endif
88 
P2P Management Layer (PML)
Definition: mtl.h:51
Remote Open MPI process structure.
Definition: proc.h:56
An abstraction that represents a connection to a endpoint process.
Definition: mtl_mx_endpoint.h:50
Definition: opal_convertor.h:90
Matching Transport Layer.
Definition: mpi.h:337
MTL module interface functions and attributes.
Definition: mtl.h:399
Definition: communicator.h:118
Definition: message.h:22