OpenMPI  0.1.1
btl_vader.h File Reference
#include "ompi_config.h"
#include <stddef.h>
#include <stdlib.h>
#include <string.h>
#include <xpmem.h>
#include "opal/include/opal/align.h"
#include "opal/class/opal_free_list.h"
#include "opal/sys/atomic.h"
#include "ompi/mca/btl/btl.h"
#include "ompi/mca/mpool/mpool.h"
#include "ompi/mca/mpool/base/base.h"
#include "ompi/mca/mpool/sm/mpool_sm.h"
#include "ompi/mca/common/sm/common_sm.h"
#include "ompi/mca/rcache/rcache.h"
#include "ompi/mca/rcache/base/base.h"

Go to the source code of this file.

Data Structures

struct  mca_btl_vader_component_t
 Shared Memory (VADER) BTL module. More...
 
struct  mca_btl_vader_t
 VADER BTL Interface. More...
 

Macros

#define min(a, b)   ((a) < (b) ? (a) : (b))
 
#define VADER_CACHE_LINE_PAD   128
 
#define VADER_MAX_ADDRESS   ((uintptr_t)0x7ffffffff000)
 
#define VIRTUAL2RELATIVE(VADDR)   ((intptr_t)(VADDR) - (intptr_t)mca_btl_vader_component.shm_bases[mca_btl_vader_component.my_smp_rank])
 
#define RELATIVE2VIRTUAL(OFFSET)   ((intptr_t)(OFFSET) + (intptr_t)mca_btl_vader_component.shm_bases[mca_btl_vader_component.my_smp_rank])
 

Typedefs

typedef struct
mca_btl_vader_component_t 
mca_btl_vader_component_t
 
typedef struct mca_btl_vader_t mca_btl_vader_t
 

Functions

static
mca_mpool_base_registration_t
vader_get_registation (int peer_smp_rank, void *rem_ptr, size_t size, int flags)
 
static void vader_return_registration (mca_mpool_base_registration_t *reg, int peer_smp_rank)
 
static void * vader_reg_to_ptr (mca_mpool_base_registration_t *reg, void *rem_ptr)
 
static void vader_memmove (void *dst, void *src, size_t size)
 
int mca_btl_vader_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 a send to the peer. More...
 
int mca_btl_vader_sendi (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 inline send to the peer. More...
 
int mca_btl_vader_put (struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint, struct mca_btl_base_descriptor_t *des)
 Initiate an synchronous put. More...
 
int mca_btl_vader_get (struct mca_btl_base_module_t *btl, struct mca_btl_base_endpoint_t *endpoint, struct mca_btl_base_descriptor_t *des)
 Initiate an synchronous get. More...
 
mca_btl_base_descriptor_tmca_btl_vader_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 segment. More...
 

Variables

int mca_btl_vader_memcpy_limit
 
int mca_btl_vader_log_align
 
int mca_btl_vader_max_inline_send
 
OMPI_MODULE_DECLSPEC
mca_btl_vader_component_t 
mca_btl_vader_component
 
OMPI_MODULE_DECLSPEC
mca_btl_vader_t 
mca_btl_vader
 

Function Documentation

mca_btl_base_descriptor_t* mca_btl_vader_alloc ( struct mca_btl_base_module_t btl,
struct mca_btl_base_endpoint_t endpoint,
uint8_t  order,
size_t  size,
uint32_t  flags 
)
int mca_btl_vader_get ( struct mca_btl_base_module_t btl,
struct mca_btl_base_endpoint_t endpoint,
struct mca_btl_base_descriptor_t des 
)

Initiate an synchronous 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_dst, mca_btl_base_descriptor_t::des_src, mca_btl_base_endpoint_t::peer_smp_rank, mca_btl_base_segment_t::seg_key, and mca_btl_base_segment_t::seg_len.

int mca_btl_vader_put ( struct mca_btl_base_module_t btl,
struct mca_btl_base_endpoint_t endpoint,
struct mca_btl_base_descriptor_t des 
)

Initiate an synchronous 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_flags, mca_btl_base_descriptor_t::des_src, mca_btl_base_endpoint_t::peer_smp_rank, mca_btl_base_segment_t::seg_key, and mca_btl_base_segment_t::seg_len.

int mca_btl_vader_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 
)
int mca_btl_vader_sendi ( 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 inline send to the peer.

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

References mca_btl_vader_component_t::active_sends, mca_btl_vader_component_t::eager_limit, mca_btl_vader_alloc(), opal_list_append, mca_btl_base_endpoint_t::peer_smp_rank, and mca_btl_base_segment_t::seg_addr.