115 #include "ompi_config.h"
118 #include "opal/datatype/opal_convertor.h"
121 #include "ompi/types.h"
122 #include "opal/types.h"
125 #include "opal/mca/crs/base/base.h"
141 typedef uint8_t mca_btl_base_tag_t;
143 #define MCA_BTL_NO_ORDER 255
159 #define MCA_BTL_AM_FRAMEWORK_MASK 0xD0
160 #define MCA_BTL_TAG_BTL 0x20
161 #define MCA_BTL_TAG_FT 0x30
162 #define MCA_BTL_TAG_PML 0x40
163 #define MCA_BTL_TAG_OSC_RDMA 0x60
164 #define MCA_BTL_TAG_USR 0x80
165 #define MCA_BTL_TAG_MAX 255
171 #define MCA_BTL_TAG_IB (MCA_BTL_TAG_BTL + 0)
172 #define MCA_BTL_TAG_UDAPL (MCA_BTL_TAG_BTL + 1)
175 #define MCA_BTL_FLAGS_SEND 0x0001
176 #define MCA_BTL_FLAGS_PUT 0x0002
177 #define MCA_BTL_FLAGS_GET 0x0004
178 #define MCA_BTL_FLAGS_RDMA (MCA_BTL_FLAGS_GET|MCA_BTL_FLAGS_PUT)
181 #define MCA_BTL_FLAGS_SEND_INPLACE 0x0008
184 #define MCA_BTL_FLAGS_NEED_ACK 0x0010
185 #define MCA_BTL_FLAGS_NEED_CSUM 0x0020
189 #define MCA_BTL_FLAGS_RDMA_MATCHED 0x0040
192 #define MCA_BTL_FLAGS_RDMA_COMPLETION 0x0080
195 #define MCA_BTL_FLAGS_HETEROGENEOUS_RDMA 0x0100
198 #define MCA_BTL_FLAGS_FAILOVER_SUPPORT 0x0200
200 #define MCA_BTL_FLAGS_CUDA_PUT 0x0400
201 #define MCA_BTL_FLAGS_CUDA_GET 0x0800
202 #define MCA_BTL_FLAGS_CUDA_RDMA (MCA_BTL_FLAGS_CUDA_GET|MCA_BTL_FLAGS_CUDA_PUT)
205 #define MCA_BTL_EXCLUSIVITY_HIGH (64*1024)
206 #define MCA_BTL_EXCLUSIVITY_DEFAULT 1024
207 #define MCA_BTL_EXCLUSIVITY_LOW 0
210 #define MCA_BTL_ERROR_FLAGS_FATAL 0x1
211 #define MCA_BTL_ERROR_FLAGS_NONFATAL 0x2
241 #if OPAL_ENABLE_HETEROGENEOUS_SUPPORT
243 uint8_t seg_padding[4];
250 #if OMPI_CUDA_SUPPORT
251 uint8_t cudakey[128];
254 #if OMPI_CUDA_SUPPORT
258 uint32_t memh_seg_len;
298 #define MCA_BTL_DES_FLAGS_PRIORITY 0x0001
302 #define MCA_BTL_DES_FLAGS_BTL_OWNERSHIP 0x0002
306 #define MCA_BTL_DES_SEND_ALWAYS_CALLBACK 0x0004
310 #define MCA_BTL_DES_FLAGS_PUT 0x0010
311 #define MCA_BTL_DES_FLAGS_GET 0x0020
316 #define MCA_BTL_DES_MAX_SEGMENTS 16
322 mca_btl_base_tag_t tag;
326 #define MCA_BTL_BASE_HEADER_HTON(hdr)
327 #define MCA_BTL_BASE_HEADER_NTOH(hdr)
361 bool enable_progress_threads,
362 bool enable_mpi_threads
393 mca_btl_base_tag_t tag,
522 mca_btl_base_tag_t tag,
663 mca_btl_base_tag_t tag
703 mca_btl_base_tag_t tag,
829 #define MCA_BTL_BASE_VERSION_2_0_0 \
830 MCA_BASE_VERSION_2_0_0, \
size_t btl_rdma_pipeline_send_length
amount of bytes that should be send by pipeline protocol
Definition: btl.h:793
uint32_t btl_latency
relative ranking of latency used to prioritize btls
Definition: btl.h:797
int(* mca_btl_base_module_free_fn_t)(struct mca_btl_base_module_t *btl, mca_btl_base_descriptor_t *descriptor)
Return a descriptor allocated from this BTL via alloc/prepare.
Definition: btl.h:595
uint32_t btl_exclusivity
indicates this BTL should be used exclusively
Definition: btl.h:796
size_t des_dst_cnt
number of destination segments
Definition: btl.h:280
Common type for all MCA components.
Definition: mca.h:250
void(* mca_btl_base_completion_fn_t)(struct mca_btl_base_module_t *module, struct mca_btl_base_endpoint_t *endpoint, struct mca_btl_base_descriptor_t *descriptor, int status)
Asynchronous callback function on completion of an operation.
Definition: btl.h:225
mca_btl_base_descriptor_t *(* mca_btl_base_module_alloc_fn_t)(struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint, uint8_t order, size_t size, uint32_t flags)
Allocate a descriptor with a segment of the requested size.
Definition: btl.h:579
A descriptor that holds the parameters to a send/put/get operation along w/ a callback routine that i...
Definition: btl.h:275
uint32_t btl_flags
flags (put/get...)
Definition: btl.h:799
uint32_t des_flags
hints to BTL
Definition: btl.h:284
void * des_cbdata
opaque callback data
Definition: btl.h:282
void(* mca_btl_base_module_recv_cb_fn_t)(struct mca_btl_base_module_t *btl, mca_btl_base_tag_t tag, mca_btl_base_descriptor_t *descriptor, void *cbdata)
Callback function that is called asynchronously on receipt of data by the transport layer...
Definition: btl.h:391
Definition: opal_bitmap.h:53
void(* mca_btl_base_module_dump_fn_t)(struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint, int verbose)
Diagnostic dump of btl state.
Definition: btl.h:770
struct mca_btl_base_module_t **(* mca_btl_base_component_init_fn_t)(int *num_btls, bool enable_progress_threads, bool enable_mpi_threads)
MCA->BTL Initializes the BTL component and creates specific BTL module(s).
Definition: btl.h:359
ompi_ptr_t seg_addr
Address of the memory.
Definition: btl.h:238
int(* mca_btl_base_module_put_fn_t)(struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint, struct mca_btl_base_descriptor_t *descriptor)
Initiate an asynchronous put.
Definition: btl.h:727
union mca_btl_base_segment_t::@93 seg_key
Memory segment key required by some RDMA networks.
mca_btl_base_segment_t * des_src
source segments
Definition: btl.h:277
int(* mca_btl_base_module_register_fn_t)(struct mca_btl_base_module_t *btl, mca_btl_base_tag_t tag, mca_btl_base_module_recv_cb_fn_t cbfunc, void *cbdata)
Register a callback function that is called on receipt of a fragment.
Definition: btl.h:520
void(* mca_btl_base_module_error_cb_fn_t)(struct mca_btl_base_module_t *btl, int32_t flags, struct ompi_proc_t *errproc, char *btlinfo)
Callback function that is called asynchronously on receipt of an error from the transport layer...
Definition: btl.h:538
int(* mca_btl_base_module_finalize_fn_t)(struct mca_btl_base_module_t *btl)
MCA->BTL Clean up any resources held by BTL module before the module is unloaded. ...
Definition: btl.h:450
int(* mca_btl_base_component_progress_fn_t)(void)
MCA->BTL Called to progress outstanding requests for non-threaded polling environments.
Definition: btl.h:374
int(* mca_btl_base_module_register_error_fn_t)(struct mca_btl_base_module_t *btl, mca_btl_base_module_error_cb_fn_t cbfunc)
Register a callback function that is called on receipt of an error.
Definition: btl.h:557
size_t btl_rndv_eager_limit
the size of a data sent in a first fragment of rendezvous protocol
Definition: btl.h:791
struct mca_btl_base_descriptor_t *(* mca_btl_base_module_prepare_fn_t)(struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint, mca_mpool_base_registration_t *registration, struct opal_convertor_t *convertor, uint8_t order, size_t reserve, size_t *size, uint32_t flags)
Prepare a descriptor for send/put/get using the supplied convertor.
Definition: btl.h:631
Remote Open MPI process structure.
Definition: proc.h:56
int(* mca_btl_base_module_send_fn_t)(struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint, struct mca_btl_base_descriptor_t *descriptor, mca_btl_base_tag_t tag)
Initiate an asynchronous send.
Definition: btl.h:659
Top-level interface for all MCA components.
uint32_t btl_bandwidth
bandwidth (Mbytes/sec) supported by each endpoint
Definition: btl.h:798
int(* mca_btl_base_module_add_procs_fn_t)(struct mca_btl_base_module_t *btl, size_t nprocs, struct ompi_proc_t **procs, struct mca_btl_base_endpoint_t **endpoints, struct opal_bitmap_t *reachable)
BML->BTL notification of change in the process list.
Definition: btl.h:478
void * des_context
more opaque callback data
Definition: btl.h:283
mca_btl_base_component_t * btl_component
pointer back to the BTL component structure
Definition: btl.h:789
int(* mca_btl_base_module_ft_event_fn_t)(int state)
Fault Tolerance Event Notification Function.
Definition: btl.h:781
mca_btl_base_module_register_error_fn_t btl_register_error
register a default error handler
Definition: btl.h:820
int(* mca_btl_base_module_del_procs_fn_t)(struct mca_btl_base_module_t *btl, size_t nprocs, struct ompi_proc_t **procs, struct mca_btl_base_endpoint_t **peer)
Notification of change to the process list.
Definition: btl.h:499
uint32_t seg_len
Length in bytes.
Definition: btl.h:240
int(* mca_btl_base_module_get_fn_t)(struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint, struct mca_btl_base_descriptor_t *descriptor)
Initiate an asynchronous get.
Definition: btl.h:755
size_t des_src_cnt
number of source segments
Definition: btl.h:278
State of ELAN endpoint connection.
Definition: btl_elan_endpoint.h:33
Definition: ompi_free_list.h:62
BTL component descriptor.
Definition: btl.h:411
Copyright (c) 2004-2007 The Trustees of Indiana University and Indiana University Research and Techno...
Definition: opal_convertor.h:90
size_t btl_min_rdma_pipeline_size
minimum packet size for pipeline protocol
Definition: btl.h:795
Meta data for MCA v2.0.0 components.
Definition: mca.h:309
int(* mca_btl_base_module_sendi_fn_t)(struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint, struct opal_convertor_t *convertor, void *header, size_t header_size, size_t payload_size, uint8_t order, uint32_t flags, mca_btl_base_tag_t tag, mca_btl_base_descriptor_t **descriptor)
Initiate an immediate blocking send.
Definition: btl.h:694
uint8_t order
order value, this is only valid in the local completion callback and may be used in subsequent calls ...
Definition: btl.h:292
size_t btl_rdma_pipeline_frag_size
maximum rdma fragment size supported by the BTL
Definition: btl.h:794
mca_btl_base_segment_t * des_dst
destination segments
Definition: btl.h:279
size_t btl_max_send_size
maximum send fragment size supported by the BTL
Definition: btl.h:792
Compiler-specific prefetch functions.
mca_btl_base_completion_fn_t des_cbfunc
local callback function
Definition: btl.h:281
mca_mpool_base_module_t * btl_mpool
the mpool associated with this btl (optional)
Definition: btl.h:818
Checkpoint and Restart Service (CRS) Interface.
BTL module interface functions and attributes.
Definition: btl.h:786
uint32_t flags
the properties of this convertor
Definition: opal_convertor.h:93
mca_btl_base_module_ft_event_fn_t btl_ft_event
fault tolerant even notification
Definition: btl.h:822
size_t btl_eager_limit
maximum size of first fragment – eager send
Definition: btl.h:790
Describes a region/segment of memory that is addressable by an BTL.
Definition: btl.h:236
#define OBJ_CLASS_DECLARATION(NAME)
Declaration for class descriptor.
Definition: opal_object.h:236
Definition: mpool_fake.h:38
mpool module descriptor.
Definition: mpool.h:174