OpenMPI  0.1.1
btl_tcp.h File Reference
#include "ompi_config.h"
#include "opal/mca/event/event.h"
#include "ompi/class/ompi_free_list.h"
#include "ompi/mca/btl/btl.h"
#include "ompi/mca/btl/base/base.h"
#include "ompi/mca/mpool/mpool.h"
#include "opal/class/opal_hash_table.h"

Go to the source code of this file.

Data Structures

struct  mca_btl_tcp_component_t
 TCP BTL component. More...
 
struct  mca_btl_tcp_module_t
 BTL Module Interface. More...
 

Macros

#define MCA_BTL_TCP_STATISTICS   0
 
#define CLOSE_THE_SOCKET(socket)   close(socket)
 

Typedefs

typedef struct
mca_btl_tcp_component_t 
mca_btl_tcp_component_t
 
typedef struct mca_btl_tcp_module_t mca_btl_tcp_module_t
 

Functions

mca_btl_base_module_t ** mca_btl_tcp_component_init (int *num_btl_modules, bool allow_multi_user_threads, bool have_hidden_threads)
 TCP component initialization. More...
 
int mca_btl_tcp_component_progress (void)
 TCP component progress.
 
int mca_btl_tcp_finalize (struct mca_btl_base_module_t *btl)
 Cleanup any resources held by the BTL. More...
 
int mca_btl_tcp_add_procs (struct mca_btl_base_module_t *btl, size_t nprocs, struct ompi_proc_t **procs, struct mca_btl_base_endpoint_t **peers, opal_bitmap_t *reachable)
 PML->BTL notification of change in the process list. More...
 
int mca_btl_tcp_del_procs (struct mca_btl_base_module_t *btl, size_t nprocs, struct ompi_proc_t **procs, struct mca_btl_base_endpoint_t **peers)
 PML->BTL notification of change in the process list. More...
 
int mca_btl_tcp_send (struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *btl_peer, struct mca_btl_base_descriptor_t *descriptor, mca_btl_base_tag_t tag)
 Initiate an asynchronous send. More...
 
int mca_btl_tcp_put (struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *btl_peer, struct mca_btl_base_descriptor_t *decriptor)
 Initiate an asynchronous put. More...
 
int mca_btl_tcp_get (struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *btl_peer, struct mca_btl_base_descriptor_t *decriptor)
 Initiate an asynchronous get. More...
 
mca_btl_base_descriptor_tmca_btl_tcp_alloc (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. More...
 
int mca_btl_tcp_free (struct mca_btl_base_module_t *btl, mca_btl_base_descriptor_t *des)
 Return a segment allocated by this BTL. More...
 
mca_btl_base_descriptor_tmca_btl_tcp_prepare_src (struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *peer, struct mca_mpool_base_registration_t *, struct opal_convertor_t *convertor, uint8_t order, size_t reserve, size_t *size, uint32_t flags)
 Prepare a descriptor for send/rdma using the supplied convertor. More...
 
mca_btl_base_descriptor_tmca_btl_tcp_prepare_dst (struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *peer, struct mca_mpool_base_registration_t *, struct opal_convertor_t *convertor, uint8_t order, size_t reserve, size_t *size, uint32_t flags)
 Prepare a descriptor for send/rdma using the supplied convertor. More...
 
int mca_btl_tcp_ft_event (int state)
 Fault Tolerance Event Notification Function. More...
 

Variables

OMPI_MODULE_DECLSPEC
mca_btl_tcp_component_t 
mca_btl_tcp_component
 
mca_btl_tcp_module_t mca_btl_tcp_module
 

Function Documentation

int mca_btl_tcp_add_procs ( struct mca_btl_base_module_t btl,
size_t  nprocs,
struct ompi_proc_t **  procs,
struct mca_btl_base_endpoint_t **  peers,
opal_bitmap_t reachable 
)

PML->BTL notification of change in the process list.

Parameters
btl(IN)
nprocs(IN) Number of processes
procs(IN) Set of processes
peers(OUT) Set of (optional) peer addressing info.
peers(IN/OUT) Set of processes that are reachable via this BTL.
Returns
OMPI_SUCCESS or error status on failure.

References mca_btl_base_endpoint_t::endpoint_btl, OBJ_RELEASE, ompi_proc_local(), opal_bitmap_set_bit(), opal_list_append, opal_progress_event_users_increment(), OPAL_THREAD_LOCK, OPAL_THREAD_UNLOCK, and mca_btl_tcp_proc_t::proc_lock.

mca_btl_base_descriptor_t* mca_btl_tcp_alloc ( 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.

Note that the BTL layer may choose to return a smaller size if it cannot support the request.

Parameters
btl(IN) BTL module
size(IN) Request segment size.

Allocate a descriptor with a segment of the requested size.

Parameters
btl(IN) BTL module
size(IN) Request segment size.

References mca_btl_base_descriptor_t::des_dst, mca_btl_base_descriptor_t::des_dst_cnt, mca_btl_base_descriptor_t::des_flags, mca_btl_base_descriptor_t::des_src, mca_btl_base_descriptor_t::des_src_cnt, mca_btl_base_descriptor_t::order, mca_btl_base_segment_t::seg_addr, and mca_btl_base_segment_t::seg_len.

mca_btl_base_module_t** mca_btl_tcp_component_init ( int *  num_btl_modules,
bool  allow_multi_user_threads,
bool  have_hidden_threads 
)

TCP component initialization.

Parameters
num_btl_modules(OUT) Number of BTLs returned in BTL array.
allow_multi_user_threads(OUT) Flag indicating wether BTL supports user threads (TRUE)
have_hidden_threads(OUT) Flag indicating wether BTL uses threads (TRUE)

References mca_btl_base_module_t::btl_eager_limit, mca_btl_base_module_t::btl_max_send_size, OBJ_CLASS, opal_output(), mca_btl_tcp_module_t::super, mca_btl_tcp_component_t::tcp_btls, mca_btl_tcp_component_t::tcp_free_list_inc, mca_btl_tcp_component_t::tcp_free_list_max, mca_btl_tcp_component_t::tcp_free_list_num, and mca_btl_tcp_component_t::tcp_num_btls.

int mca_btl_tcp_del_procs ( struct mca_btl_base_module_t btl,
size_t  nprocs,
struct ompi_proc_t **  procs,
struct mca_btl_base_endpoint_t **  peers 
)

PML->BTL notification of change in the process list.

Parameters
btl(IN) BTL instance
nproc(IN) Number of processes.
procs(IN) Set of processes.
peers(IN) Set of peer data structures.
Returns
Status indicating if cleanup was successful

References mca_btl_base_endpoint_t::endpoint_proc, OBJ_RELEASE, opal_list_remove_item(), and opal_progress_event_users_decrement().

int mca_btl_tcp_finalize ( struct mca_btl_base_module_t btl)

Cleanup any resources held by the BTL.

Parameters
btlBTL instance.
Returns
OMPI_SUCCESS or error status on failure.

References OBJ_RELEASE, opal_list_remove_first(), and opal_progress_event_users_decrement().

int mca_btl_tcp_free ( struct mca_btl_base_module_t btl,
mca_btl_base_descriptor_t des 
)

Return a segment allocated by this BTL.

Parameters
btl(IN) BTL module
descriptor(IN) Allocated descriptor.

Return a segment allocated by this BTL.

Referenced by mca_btl_tcp_prepare_src().

int mca_btl_tcp_ft_event ( int  state)

Fault Tolerance Event Notification Function.

Parameters
stateCheckpoint Stae
Returns
OMPI_SUCCESS or failure status
int mca_btl_tcp_get ( mca_btl_base_module_t btl,
mca_btl_base_endpoint_t endpoint,
mca_btl_base_descriptor_t descriptor 
)

Initiate an asynchronous get.

Parameters
btl(IN) BTL module
endpoint(IN) BTL addressing information
descriptor(IN) Description of the data to be transferred

References mca_btl_base_descriptor_t::des_src, mca_btl_base_descriptor_t::des_src_cnt, and mca_btl_base_endpoint_t::endpoint_nbo.

mca_btl_base_descriptor_t* mca_btl_tcp_prepare_dst ( struct mca_btl_base_module_t btl,
struct mca_btl_base_endpoint_t endpoint,
struct 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/rdma using the supplied convertor.

If the convertor references data that is contigous, the descriptor may simply point to the user buffer. Otherwise, this routine is responsible for allocating buffer space and packing if required.

Parameters
btl(IN) BTL module
endpoint(IN) BTL peer addressing
convertor(IN) Data type convertor
reserve(IN) Additional bytes requested by upper layer to precede user data
size(IN/OUT) Number of bytes to prepare (IN), number of bytes actually prepared (OUT)

References mca_btl_base_descriptor_t::des_dst, mca_btl_base_descriptor_t::des_dst_cnt, mca_btl_base_descriptor_t::des_flags, mca_btl_base_descriptor_t::des_src, mca_btl_base_descriptor_t::des_src_cnt, mca_btl_base_descriptor_t::order, mca_btl_base_segment_t::seg_addr, and mca_btl_base_segment_t::seg_len.

mca_btl_base_descriptor_t* mca_btl_tcp_prepare_src ( struct mca_btl_base_module_t btl,
struct mca_btl_base_endpoint_t endpoint,
struct 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/rdma using the supplied convertor.

If the convertor references data that is contigous, the descriptor may simply point to the user buffer. Otherwise, this routine is responsible for allocating buffer space and packing if required.

Parameters
btl(IN) BTL module
endpoint(IN) BTL peer addressing
convertor(IN) Data type convertor
reserve(IN) Additional bytes requested by upper layer to precede user data
size(IN/OUT) Number of bytes to prepare (IN), number of bytes actually prepared (OUT)

Prepare a descriptor for send/rdma using the supplied convertor.

Parameters
btl(IN) BTL module
peer(IN) BTL peer addressing

References mca_btl_base_descriptor_t::des_dst, mca_btl_base_descriptor_t::des_dst_cnt, mca_btl_base_descriptor_t::des_flags, mca_btl_base_descriptor_t::des_src, mca_btl_base_descriptor_t::des_src_cnt, mca_btl_tcp_free(), mca_btl_base_descriptor_t::order, mca_btl_base_segment_t::seg_addr, and mca_btl_base_segment_t::seg_len.

int mca_btl_tcp_put ( mca_btl_base_module_t btl,
mca_btl_base_endpoint_t endpoint,
mca_btl_base_descriptor_t descriptor 
)

Initiate an asynchronous put.

Parameters
btl(IN) BTL module
endpoint(IN) BTL addressing information
descriptor(IN) Description of the data to be transferred

References mca_btl_base_descriptor_t::des_dst, mca_btl_base_descriptor_t::des_dst_cnt, mca_btl_base_descriptor_t::des_src_cnt, mca_btl_base_endpoint_t::endpoint_nbo, mca_btl_base_segment_t::seg_addr, and mca_btl_base_segment_t::seg_len.

int mca_btl_tcp_send ( 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.

Parameters
btl(IN) BTL module
endpoint(IN) BTL addressing information
descriptor(IN) Description of the data to be transfered
tag(IN) The tag value used to notify the peer.

References mca_btl_base_descriptor_t::des_src_cnt, mca_btl_base_endpoint_t::endpoint_nbo, mca_btl_base_segment_t::seg_addr, and mca_btl_base_segment_t::seg_len.