1
1
openmpi/ompi/mca/btl/vader/btl_vader_endpoint.h
Nathan Hjelm 0849d61e38 btl/vader: improve performance under heavy load and eliminate a racy
feature

This commit should fix a hang seen when running some of the one-sided
tests. The downside of this fix is it reduces the maximum size of the
messages that use the fast boxes. I will fix this in a later commit.

To improve performance under a heavy load I introduced sequencing to
ensure messages are given to the pml in order. I have seen little-no
impact on the message rate or latency with this change and there is a
clear improvement to the heavy message rate case.

Lets let this sit in the trunk for a couple of days to ensure that
everything is working correctly.

cmr=v1.8.2:reviewer=jsquyres

This commit was SVN r31522.
2014-04-24 17:36:03 +00:00

77 строки
2.2 KiB
C

/* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil -*- */
/*
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
* University Research and Technology
* Corporation. All rights reserved.
* Copyright (c) 2004-2005 The University of Tennessee and The University
* of Tennessee Research Foundation. All rights
* reserved.
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
* University of Stuttgart. All rights reserved.
* Copyright (c) 2004-2005 The Regents of the University of California.
* All rights reserved.
* Copyright (c) 2006-2007 Voltaire. All rights reserved.
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
* reserved.
* $COPYRIGHT$
*
* Additional copyrights may follow
*
* $HEADER$
*/
/**
* @file
*/
#ifndef MCA_BTL_VADER_ENDPOINT_H
#define MCA_BTL_VADER_ENDPOINT_H
#if OMPI_BTL_VADER_HAVE_XPMEM
#if defined(HAVE_XPMEM_H)
#include <xpmem.h>
#elif defined(HAVE_SN_XPMEM_H)
#include <sn/xpmem.h>
typedef int64_t xpmem_apid_t;
#endif
#else
#include "opal/mca/shmem/base/base.h"
#endif
struct vader_fifo_t;
/**
* An abstraction that represents a connection to a endpoint process.
* An instance of mca_ptl_base_endpoint_t is associated w/ each process
* and BTL pair at startup.
*/
struct mca_btl_vader_fbox_t;
struct mca_btl_base_endpoint_t {
int peer_smp_rank; /**< My peer's SMP process rank. Used for accessing
* SMP specfic data structures. */
char *segment_base;
struct vader_fifo_t *fifo;
#if OMPI_BTL_VADER_HAVE_XPMEM
xpmem_apid_t apid;
#else
pid_t pid;
opal_shmem_ds_t seg_ds;
#endif
struct mca_btl_vader_fbox_t * restrict fbox_out;
struct mca_btl_vader_fbox_t * restrict fbox_in;
int next_fbox_out;
int next_fbox_in;
#if OMPI_BTL_VADER_HAVE_XPMEM
struct mca_rcache_base_module_t *rcache;
#endif
/* enforce ordering */
uint16_t next_sequence;
uint16_t expected_sequence;
};
#endif /* MCA_BTL_VADER_ENDPOINT_H */