cleanup dead code caused by the removal of the --with-threads configure option
Этот коммит содержится в:
родитель
7a55d49ca7
Коммит
661c35ca67
@ -81,21 +81,6 @@ AC_DEFUN([OPAL_CHECK_OPENFABRICS],[
|
|||||||
ompi_check_openib_$1_save_LDFLAGS="$LDFLAGS"
|
ompi_check_openib_$1_save_LDFLAGS="$LDFLAGS"
|
||||||
ompi_check_openib_$1_save_LIBS="$LIBS"
|
ompi_check_openib_$1_save_LIBS="$LIBS"
|
||||||
|
|
||||||
AS_IF([test "$ompi_check_openib_happy" = "yes"],
|
|
||||||
[AS_IF([test "$THREAD_TYPE" != "posix" -a "$memory_ptmalloc2_happy" = "yes"],
|
|
||||||
[AS_IF([test "$enable_ptmalloc2_internal" = "yes"],
|
|
||||||
[AC_MSG_WARN([POSIX threads are disabled, but])
|
|
||||||
AC_MSG_WARN([--enable-ptmalloc2-internal was specified. This will])
|
|
||||||
AC_MSG_WARN([cause memory corruption with OpenFabrics.])
|
|
||||||
AC_MSG_WARN([Not building component.])
|
|
||||||
ompi_check_openib_happy="no"],
|
|
||||||
[AC_MSG_WARN([POSIX threads are disabled, but the ptmalloc2 memory])
|
|
||||||
AC_MSG_WARN([manager is being built. Compiling MPI applications with])
|
|
||||||
AC_MSG_WARN([-lopenmpi-malloc will result in memory corruption; Open])
|
|
||||||
AC_MSG_WARN([MPI will disable the openib BTL at run-time if such a])
|
|
||||||
AC_MSG_WARN([combination is detected.])
|
|
||||||
AC_MSG_WARN([You have been warned.])])])])
|
|
||||||
|
|
||||||
AS_IF([test "$ompi_check_openib_happy" = "yes"],
|
AS_IF([test "$ompi_check_openib_happy" = "yes"],
|
||||||
[AC_CHECK_HEADERS(
|
[AC_CHECK_HEADERS(
|
||||||
fcntl.h sys/poll.h,
|
fcntl.h sys/poll.h,
|
||||||
|
@ -33,12 +33,8 @@ AC_DEFUN([OPAL_CONFIG_THREADS],[
|
|||||||
# configure threads
|
# configure threads
|
||||||
#
|
#
|
||||||
|
|
||||||
# create templates
|
|
||||||
AH_TEMPLATE([OPAL_HAVE_POSIX_THREADS],
|
|
||||||
[Do we have POSIX threads])
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check for thread types - add your type here...
|
# Check we have POSIX threads
|
||||||
#
|
#
|
||||||
OPAL_CONFIG_POSIX_THREADS(HAVE_POSIX_THREADS=1, HAVE_POSIX_THREADS=0)
|
OPAL_CONFIG_POSIX_THREADS(HAVE_POSIX_THREADS=1, HAVE_POSIX_THREADS=0)
|
||||||
AC_MSG_CHECKING([for working POSIX threads package])
|
AC_MSG_CHECKING([for working POSIX threads package])
|
||||||
@ -59,8 +55,6 @@ if test "$HAVE_POSIX_THREADS" = "0"; then
|
|||||||
AC_MSG_ERROR(["*** Can not continue"])
|
AC_MSG_ERROR(["*** Can not continue"])
|
||||||
fi
|
fi
|
||||||
|
|
||||||
AC_DEFINE(OPAL_HAVE_POSIX_THREADS, 1)
|
|
||||||
|
|
||||||
THREAD_CFLAGS="$PTHREAD_CFLAGS"
|
THREAD_CFLAGS="$PTHREAD_CFLAGS"
|
||||||
THREAD_FCFLAGS="$PTHREAD_FCFLAGS"
|
THREAD_FCFLAGS="$PTHREAD_FCFLAGS"
|
||||||
THREAD_CXXFLAGS="$PTHREAD_CXXFLAGS"
|
THREAD_CXXFLAGS="$PTHREAD_CXXFLAGS"
|
||||||
@ -71,9 +65,6 @@ THREAD_LIBS="$PTHREAD_LIBS"
|
|||||||
|
|
||||||
OPAL_CHECK_PTHREAD_PIDS
|
OPAL_CHECK_PTHREAD_PIDS
|
||||||
|
|
||||||
THREAD_TYPE = "posix"
|
|
||||||
AM_CONDITIONAL(OPAL_HAVE_POSIX_THREADS, 1)
|
|
||||||
|
|
||||||
AC_DEFINE_UNQUOTED([OPAL_ENABLE_MULTI_THREADS], [1],
|
AC_DEFINE_UNQUOTED([OPAL_ENABLE_MULTI_THREADS], [1],
|
||||||
[Whether we should enable thread support within the OPAL code base])
|
[Whether we should enable thread support within the OPAL code base])
|
||||||
|
|
||||||
|
@ -6,6 +6,8 @@
|
|||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||||
* Copyright (c) 2012-2013 Inria. All rights reserved.
|
* Copyright (c) 2012-2013 Inria. All rights reserved.
|
||||||
|
* Copyright (c) 2014-2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* Copyright (c) 2014 Intel, Inc. All rights reserved.
|
* Copyright (c) 2014 Intel, Inc. All rights reserved.
|
||||||
*
|
*
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
@ -185,7 +187,6 @@ static inline int memchecker_comm(MPI_Comm comm)
|
|||||||
opal_memchecker_base_isdefined (&comm->c_lock.super.cls_init_file_name, sizeof(const char *));
|
opal_memchecker_base_isdefined (&comm->c_lock.super.cls_init_file_name, sizeof(const char *));
|
||||||
opal_memchecker_base_isdefined (&comm->c_lock.super.cls_init_lineno, sizeof(int));
|
opal_memchecker_base_isdefined (&comm->c_lock.super.cls_init_lineno, sizeof(int));
|
||||||
#endif
|
#endif
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
/*
|
/*
|
||||||
opal_memchecker_base_isdefined (&comm->c_lock.m_lock_pthread.__m_reserved, sizeof(int));
|
opal_memchecker_base_isdefined (&comm->c_lock.m_lock_pthread.__m_reserved, sizeof(int));
|
||||||
opal_memchecker_base_isdefined (&comm->c_lock.m_lock_pthread.__m_count, sizeof(int));
|
opal_memchecker_base_isdefined (&comm->c_lock.m_lock_pthread.__m_count, sizeof(int));
|
||||||
@ -194,7 +195,6 @@ static inline int memchecker_comm(MPI_Comm comm)
|
|||||||
opal_memchecker_base_isdefined (&comm->c_lock.m_lock_pthread.__m_lock.__status, sizeof(long int));
|
opal_memchecker_base_isdefined (&comm->c_lock.m_lock_pthread.__m_lock.__status, sizeof(long int));
|
||||||
opal_memchecker_base_isdefined (&comm->c_lock.m_lock_pthread.__m_lock.__spinlock, sizeof(int));
|
opal_memchecker_base_isdefined (&comm->c_lock.m_lock_pthread.__m_lock.__spinlock, sizeof(int));
|
||||||
*/
|
*/
|
||||||
#endif
|
|
||||||
/*
|
/*
|
||||||
* The storage of a union has the size of the initialized member.
|
* The storage of a union has the size of the initialized member.
|
||||||
* Here we check the whole union.
|
* Here we check the whole union.
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
* Copyright (c) 2012 Sandia National Laboratories. All rights reserved.
|
* Copyright (c) 2012 Sandia National Laboratories. All rights reserved.
|
||||||
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2014 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -20,13 +22,11 @@
|
|||||||
struct ompi_osc_sm_global_state_t {
|
struct ompi_osc_sm_global_state_t {
|
||||||
int use_barrier_for_fence;
|
int use_barrier_for_fence;
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
pthread_mutex_t mtx;
|
pthread_mutex_t mtx;
|
||||||
pthread_cond_t cond;
|
pthread_cond_t cond;
|
||||||
|
|
||||||
int sense;
|
int sense;
|
||||||
int32_t count;
|
int32_t count;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
typedef struct ompi_osc_sm_global_state_t ompi_osc_sm_global_state_t;
|
typedef struct ompi_osc_sm_global_state_t ompi_osc_sm_global_state_t;
|
||||||
|
|
||||||
@ -74,9 +74,7 @@ struct ompi_osc_sm_module_t {
|
|||||||
ompi_group_t *start_group;
|
ompi_group_t *start_group;
|
||||||
ompi_group_t *post_group;
|
ompi_group_t *post_group;
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
int my_sense;
|
int my_sense;
|
||||||
#endif
|
|
||||||
|
|
||||||
enum ompi_osc_sm_locktype_t *outstanding_locks;
|
enum ompi_osc_sm_locktype_t *outstanding_locks;
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2007-2014 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2007-2014 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||||
* Copyright (c) 2014 Research Organization for Information Science
|
* Copyright (c) 2014-2015 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -288,23 +288,19 @@ void ompi_info_do_config(bool want_all)
|
|||||||
fortran_have_ignore_tkr = strdup("no");
|
fortran_have_ignore_tkr = strdup("no");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OPAL_HAVE_POSIX_THREADS) { /* should just test OPAL_HAVE_THREADS */
|
|
||||||
#if OMPI_RTE_ORTE
|
#if OMPI_RTE_ORTE
|
||||||
(void)asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: %s, OPAL support: %s, OMPI progress: %s, ORTE progress: yes, Event lib: yes)",
|
(void)asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: %s, OPAL support: %s, OMPI progress: %s, ORTE progress: yes, Event lib: yes)",
|
||||||
(OPAL_HAVE_POSIX_THREADS ? "posix" : "type unknown"), /* "type unknown" can presumably never happen */
|
"posix",
|
||||||
OMPI_ENABLE_THREAD_MULTIPLE ? "yes" : "no",
|
OMPI_ENABLE_THREAD_MULTIPLE ? "yes" : "no",
|
||||||
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no",
|
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no",
|
||||||
OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
|
OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
|
||||||
#else
|
#else
|
||||||
(void)asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: %s, OPAL support: %s, OMPI progress: %s, Event lib: yes)",
|
(void)asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: %s, OPAL support: %s, OMPI progress: %s, Event lib: yes)",
|
||||||
(OPAL_HAVE_POSIX_THREADS ? "posix" : "type unknown"), /* "type unknown" can presumably never happen */
|
"posix",
|
||||||
OMPI_ENABLE_THREAD_MULTIPLE ? "yes" : "no",
|
OMPI_ENABLE_THREAD_MULTIPLE ? "yes" : "no",
|
||||||
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no",
|
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no",
|
||||||
OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
|
OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
|
||||||
#endif
|
#endif
|
||||||
} else {
|
|
||||||
threads = strdup("no");
|
|
||||||
}
|
|
||||||
|
|
||||||
(void)asprintf(&ft_support, "%s (checkpoint thread: %s)",
|
(void)asprintf(&ft_support, "%s (checkpoint thread: %s)",
|
||||||
OPAL_ENABLE_FT ? "yes" : "no", OPAL_ENABLE_FT_THREAD ? "yes" : "no");
|
OPAL_ENABLE_FT ? "yes" : "no", OPAL_ENABLE_FT_THREAD ? "yes" : "no");
|
||||||
|
@ -13,6 +13,8 @@
|
|||||||
* Copyright (c) 2009-2013 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2009-2013 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2013 Mellanox Technologies, Inc.
|
* Copyright (c) 2013 Mellanox Technologies, Inc.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -68,9 +70,6 @@
|
|||||||
*
|
*
|
||||||
**********************************************************************/
|
**********************************************************************/
|
||||||
|
|
||||||
/* Do we have posix or solaris thread lib */
|
|
||||||
#define OPAL_HAVE_THREADS (OPAL_HAVE_POSIX_THREADS)
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BEGIN_C_DECLS should be used at the beginning of your declarations,
|
* BEGIN_C_DECLS should be used at the beginning of your declarations,
|
||||||
* so that C++ compilers don't mangle their names. Use END_C_DECLS at
|
* so that C++ compilers don't mangle their names. Use END_C_DECLS at
|
||||||
|
@ -358,7 +358,6 @@ static int create_srq(mca_btl_openib_module_t *openib_btl)
|
|||||||
return OPAL_ERROR;
|
return OPAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
{
|
{
|
||||||
opal_mutex_t *lock = &mca_btl_openib_component.srq_manager.lock;
|
opal_mutex_t *lock = &mca_btl_openib_component.srq_manager.lock;
|
||||||
opal_hash_table_t *srq_addr_table = &mca_btl_openib_component.srq_manager.srq_addr_table;
|
opal_hash_table_t *srq_addr_table = &mca_btl_openib_component.srq_manager.srq_addr_table;
|
||||||
@ -375,7 +374,6 @@ static int create_srq(mca_btl_openib_module_t *openib_btl)
|
|||||||
}
|
}
|
||||||
opal_mutex_unlock(lock);
|
opal_mutex_unlock(lock);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
rd_num = mca_btl_openib_component.qp_infos[qp].rd_num;
|
rd_num = mca_btl_openib_component.qp_infos[qp].rd_num;
|
||||||
rd_curr_num = openib_btl->qps[qp].u.srq_qp.rd_curr_num = mca_btl_openib_component.qp_infos[qp].u.srq_qp.rd_init;
|
rd_curr_num = openib_btl->qps[qp].u.srq_qp.rd_curr_num = mca_btl_openib_component.qp_infos[qp].u.srq_qp.rd_init;
|
||||||
|
|
||||||
@ -632,7 +630,6 @@ static int prepare_device_for_use (mca_btl_openib_device_t *device)
|
|||||||
OBJ_CONSTRUCT(&device->qps[qp_index].recv_free, ompi_free_list_t);
|
OBJ_CONSTRUCT(&device->qps[qp_index].recv_free, ompi_free_list_t);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
if(mca_btl_openib_component.use_async_event_thread) {
|
if(mca_btl_openib_component.use_async_event_thread) {
|
||||||
mca_btl_openib_async_cmd_t async_command;
|
mca_btl_openib_async_cmd_t async_command;
|
||||||
|
|
||||||
@ -662,7 +659,6 @@ static int prepare_device_for_use (mca_btl_openib_device_t *device)
|
|||||||
device->thread.t_arg = device;
|
device->thread.t_arg = device;
|
||||||
device->progress = false;
|
device->progress = false;
|
||||||
#endif
|
#endif
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_XRC
|
#if HAVE_XRC
|
||||||
/* if user configured to run with XRC qp and the device doesn't
|
/* if user configured to run with XRC qp and the device doesn't
|
||||||
@ -1617,7 +1613,6 @@ static int mca_btl_openib_finalize_resources(struct mca_btl_base_module_t* btl)
|
|||||||
MCA_BTL_OPENIB_CLEAN_PENDING_FRAGS(
|
MCA_BTL_OPENIB_CLEAN_PENDING_FRAGS(
|
||||||
&openib_btl->qps[qp].u.srq_qp.pending_frags[1]);
|
&openib_btl->qps[qp].u.srq_qp.pending_frags[1]);
|
||||||
if (NULL != openib_btl->qps[qp].u.srq_qp.srq) {
|
if (NULL != openib_btl->qps[qp].u.srq_qp.srq) {
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
opal_mutex_t *lock =
|
opal_mutex_t *lock =
|
||||||
&mca_btl_openib_component.srq_manager.lock;
|
&mca_btl_openib_component.srq_manager.lock;
|
||||||
|
|
||||||
@ -1633,7 +1628,6 @@ static int mca_btl_openib_finalize_resources(struct mca_btl_base_module_t* btl)
|
|||||||
rc = OPAL_ERROR;
|
rc = OPAL_ERROR;
|
||||||
}
|
}
|
||||||
opal_mutex_unlock(lock);
|
opal_mutex_unlock(lock);
|
||||||
#endif
|
|
||||||
if (0 != ibv_destroy_srq(openib_btl->qps[qp].u.srq_qp.srq)) {
|
if (0 != ibv_destroy_srq(openib_btl->qps[qp].u.srq_qp.srq)) {
|
||||||
BTL_VERBOSE(("Failed to close SRQ %d", qp));
|
BTL_VERBOSE(("Failed to close SRQ %d", qp));
|
||||||
rc = OPAL_ERROR;
|
rc = OPAL_ERROR;
|
||||||
|
@ -138,7 +138,6 @@ typedef enum {
|
|||||||
BTL_OPENIB_DT_ALL
|
BTL_OPENIB_DT_ALL
|
||||||
} btl_openib_device_type_t;
|
} btl_openib_device_type_t;
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
/* The structer for manage all BTL SRQs */
|
/* The structer for manage all BTL SRQs */
|
||||||
typedef struct mca_btl_openib_srq_manager_t {
|
typedef struct mca_btl_openib_srq_manager_t {
|
||||||
opal_mutex_t lock;
|
opal_mutex_t lock;
|
||||||
@ -147,7 +146,6 @@ typedef struct mca_btl_openib_srq_manager_t {
|
|||||||
pointers that associated with these SRQs */
|
pointers that associated with these SRQs */
|
||||||
opal_hash_table_t srq_addr_table;
|
opal_hash_table_t srq_addr_table;
|
||||||
} mca_btl_openib_srq_manager_t;
|
} mca_btl_openib_srq_manager_t;
|
||||||
#endif
|
|
||||||
|
|
||||||
struct mca_btl_openib_component_t {
|
struct mca_btl_openib_component_t {
|
||||||
mca_btl_base_component_2_0_0_t super; /**< base BTL component */
|
mca_btl_base_component_2_0_0_t super; /**< base BTL component */
|
||||||
@ -228,7 +226,6 @@ struct mca_btl_openib_component_t {
|
|||||||
int apm_lmc;
|
int apm_lmc;
|
||||||
int apm_ports;
|
int apm_ports;
|
||||||
unsigned int buffer_alignment; /**< Preferred communication buffer alignment in Bytes (must be power of two) */
|
unsigned int buffer_alignment; /**< Preferred communication buffer alignment in Bytes (must be power of two) */
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
int32_t error_counter; /**< Counts number on error events that we got on all devices */
|
int32_t error_counter; /**< Counts number on error events that we got on all devices */
|
||||||
int async_pipe[2]; /**< Pipe for comunication with async event thread */
|
int async_pipe[2]; /**< Pipe for comunication with async event thread */
|
||||||
int async_comp_pipe[2]; /**< Pipe for async thread comunication with main thread */
|
int async_comp_pipe[2]; /**< Pipe for async thread comunication with main thread */
|
||||||
@ -237,7 +234,6 @@ struct mca_btl_openib_component_t {
|
|||||||
mca_btl_openib_srq_manager_t srq_manager; /**< Hash table for all BTL SRQs */
|
mca_btl_openib_srq_manager_t srq_manager; /**< Hash table for all BTL SRQs */
|
||||||
#if BTL_OPENIB_FAILOVER_ENABLED
|
#if BTL_OPENIB_FAILOVER_ENABLED
|
||||||
bool port_error_failover; /**< Report port errors to speed up failover */
|
bool port_error_failover; /**< Report port errors to speed up failover */
|
||||||
#endif
|
|
||||||
#endif
|
#endif
|
||||||
/* declare as an int instead of btl_openib_device_type_t since there is no
|
/* declare as an int instead of btl_openib_device_type_t since there is no
|
||||||
guarantee about the size of an enum. this value will be registered as an
|
guarantee about the size of an enum. this value will be registered as an
|
||||||
@ -393,10 +389,8 @@ typedef struct mca_btl_openib_device_t {
|
|||||||
uint16_t hp_cq_polls;
|
uint16_t hp_cq_polls;
|
||||||
uint16_t eager_rdma_polls;
|
uint16_t eager_rdma_polls;
|
||||||
bool pollme;
|
bool pollme;
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
volatile bool got_fatal_event;
|
volatile bool got_fatal_event;
|
||||||
volatile bool got_port_event;
|
volatile bool got_port_event;
|
||||||
#endif
|
|
||||||
#if HAVE_XRC
|
#if HAVE_XRC
|
||||||
#if OPAL_HAVE_CONNECTX_XRC_DOMAINS
|
#if OPAL_HAVE_CONNECTX_XRC_DOMAINS
|
||||||
struct ibv_xrcd *xrcd;
|
struct ibv_xrcd *xrcd;
|
||||||
|
@ -20,7 +20,6 @@
|
|||||||
|
|
||||||
#include "opal_config.h"
|
#include "opal_config.h"
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
#include <infiniband/verbs.h>
|
#include <infiniband/verbs.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include <sys/poll.h>
|
#include <sys/poll.h>
|
||||||
@ -720,5 +719,3 @@ int start_async_event_thread(void)
|
|||||||
|
|
||||||
return OPAL_SUCCESS;
|
return OPAL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -101,9 +101,7 @@
|
|||||||
#if BTL_OPENIB_FAILOVER_ENABLED
|
#if BTL_OPENIB_FAILOVER_ENABLED
|
||||||
#include "btl_openib_failover.h"
|
#include "btl_openib_failover.h"
|
||||||
#endif
|
#endif
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
#include "btl_openib_async.h"
|
#include "btl_openib_async.h"
|
||||||
#endif
|
|
||||||
#include "connect/base.h"
|
#include "connect/base.h"
|
||||||
#include "btl_openib_ip.h"
|
#include "btl_openib_ip.h"
|
||||||
|
|
||||||
@ -206,14 +204,12 @@ static int btl_openib_component_register(void)
|
|||||||
*/
|
*/
|
||||||
static int btl_openib_component_open(void)
|
static int btl_openib_component_open(void)
|
||||||
{
|
{
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
opal_mutex_t *lock = &mca_btl_openib_component.srq_manager.lock;
|
opal_mutex_t *lock = &mca_btl_openib_component.srq_manager.lock;
|
||||||
opal_hash_table_t *srq_addr_table = &mca_btl_openib_component.srq_manager.srq_addr_table;
|
opal_hash_table_t *srq_addr_table = &mca_btl_openib_component.srq_manager.srq_addr_table;
|
||||||
|
|
||||||
/* Construct hash table that stores pointers to SRQs */
|
/* Construct hash table that stores pointers to SRQs */
|
||||||
OBJ_CONSTRUCT(lock, opal_mutex_t);
|
OBJ_CONSTRUCT(lock, opal_mutex_t);
|
||||||
OBJ_CONSTRUCT(srq_addr_table, opal_hash_table_t);
|
OBJ_CONSTRUCT(srq_addr_table, opal_hash_table_t);
|
||||||
#endif
|
|
||||||
|
|
||||||
/* initialize state */
|
/* initialize state */
|
||||||
mca_btl_openib_component.ib_num_btls = 0;
|
mca_btl_openib_component.ib_num_btls = 0;
|
||||||
@ -241,7 +237,6 @@ static int btl_openib_component_close(void)
|
|||||||
{
|
{
|
||||||
int rc = OPAL_SUCCESS;
|
int rc = OPAL_SUCCESS;
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
/* Tell the async thread to shutdown */
|
/* Tell the async thread to shutdown */
|
||||||
if (mca_btl_openib_component.use_async_event_thread &&
|
if (mca_btl_openib_component.use_async_event_thread &&
|
||||||
0 != mca_btl_openib_component.async_thread) {
|
0 != mca_btl_openib_component.async_thread) {
|
||||||
@ -265,7 +260,6 @@ static int btl_openib_component_close(void)
|
|||||||
|
|
||||||
OBJ_DESTRUCT(&mca_btl_openib_component.srq_manager.lock);
|
OBJ_DESTRUCT(&mca_btl_openib_component.srq_manager.lock);
|
||||||
OBJ_DESTRUCT(&mca_btl_openib_component.srq_manager.srq_addr_table);
|
OBJ_DESTRUCT(&mca_btl_openib_component.srq_manager.srq_addr_table);
|
||||||
#endif
|
|
||||||
|
|
||||||
opal_btl_openib_connect_base_finalize();
|
opal_btl_openib_connect_base_finalize();
|
||||||
opal_btl_openib_fd_finalize();
|
opal_btl_openib_fd_finalize();
|
||||||
@ -748,7 +742,6 @@ static int init_one_port(opal_list_t *btl_list, mca_btl_openib_device_t *device,
|
|||||||
lmc = mca_btl_openib_component.max_lmc;
|
lmc = mca_btl_openib_component.max_lmc;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
/* APM support -- only meaningful if async event support is
|
/* APM support -- only meaningful if async event support is
|
||||||
enabled. If async events are not enabled, then there's nothing
|
enabled. If async events are not enabled, then there's nothing
|
||||||
to listen for the APM event to load the new path, so it's not
|
to listen for the APM event to load the new path, so it's not
|
||||||
@ -771,7 +764,6 @@ static int init_one_port(opal_list_t *btl_list, mca_btl_openib_device_t *device,
|
|||||||
opal_show_help("help-mpi-btl-openib.txt", "apm without lmc",true);
|
opal_show_help("help-mpi-btl-openib.txt", "apm without lmc",true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
for(lid = ib_port_attr->lid;
|
for(lid = ib_port_attr->lid;
|
||||||
lid < ib_port_attr->lid + lmc; lid += lmc_step){
|
lid < ib_port_attr->lid + lmc; lid += lmc_step){
|
||||||
@ -892,12 +884,10 @@ static void device_construct(mca_btl_openib_device_t *device)
|
|||||||
device->xrc_fd = -1;
|
device->xrc_fd = -1;
|
||||||
#endif
|
#endif
|
||||||
device->qps = NULL;
|
device->qps = NULL;
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
mca_btl_openib_component.async_pipe[0] =
|
mca_btl_openib_component.async_pipe[0] =
|
||||||
mca_btl_openib_component.async_pipe[1] = -1;
|
mca_btl_openib_component.async_pipe[1] = -1;
|
||||||
mca_btl_openib_component.async_comp_pipe[0] =
|
mca_btl_openib_component.async_comp_pipe[0] =
|
||||||
mca_btl_openib_component.async_comp_pipe[1] = -1;
|
mca_btl_openib_component.async_comp_pipe[1] = -1;
|
||||||
#endif
|
|
||||||
OBJ_CONSTRUCT(&device->device_lock, opal_mutex_t);
|
OBJ_CONSTRUCT(&device->device_lock, opal_mutex_t);
|
||||||
OBJ_CONSTRUCT(&device->send_free_control, ompi_free_list_t);
|
OBJ_CONSTRUCT(&device->send_free_control, ompi_free_list_t);
|
||||||
device->max_inline_data = 0;
|
device->max_inline_data = 0;
|
||||||
@ -908,7 +898,6 @@ static void device_destruct(mca_btl_openib_device_t *device)
|
|||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
#if OPAL_ENABLE_PROGRESS_THREADS
|
#if OPAL_ENABLE_PROGRESS_THREADS
|
||||||
if(device->progress) {
|
if(device->progress) {
|
||||||
device->progress = false;
|
device->progress = false;
|
||||||
@ -939,7 +928,6 @@ static void device_destruct(mca_btl_openib_device_t *device)
|
|||||||
goto device_error;
|
goto device_error;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
if(device->eager_rdma_buffers) {
|
if(device->eager_rdma_buffers) {
|
||||||
int i;
|
int i;
|
||||||
@ -2517,15 +2505,6 @@ btl_openib_component_init(int *num_btl_modules,
|
|||||||
OS's that support OpenFabrics that provide both FREE and MUNMAP
|
OS's that support OpenFabrics that provide both FREE and MUNMAP
|
||||||
support, so the following test is [currently] good enough... */
|
support, so the following test is [currently] good enough... */
|
||||||
value = opal_mem_hooks_support_level();
|
value = opal_mem_hooks_support_level();
|
||||||
#if !OPAL_HAVE_THREADS
|
|
||||||
if ((OPAL_MEMORY_FREE_SUPPORT | OPAL_MEMORY_MUNMAP_SUPPORT) ==
|
|
||||||
((OPAL_MEMORY_FREE_SUPPORT | OPAL_MEMORY_MUNMAP_SUPPORT) & value)) {
|
|
||||||
opal_show_help("help-mpi-btl-openib.txt",
|
|
||||||
"ptmalloc2 with no threads", true,
|
|
||||||
opal_process_info.nodename);
|
|
||||||
goto no_btls;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* If we have a memory manager available, and
|
/* If we have a memory manager available, and
|
||||||
opal_leave_pinned==-1, then unless the user explicitly set
|
opal_leave_pinned==-1, then unless the user explicitly set
|
||||||
@ -2698,9 +2677,7 @@ btl_openib_component_init(int *num_btl_modules,
|
|||||||
|
|
||||||
OBJ_CONSTRUCT(&btl_list, opal_list_t);
|
OBJ_CONSTRUCT(&btl_list, opal_list_t);
|
||||||
OBJ_CONSTRUCT(&mca_btl_openib_component.ib_lock, opal_mutex_t);
|
OBJ_CONSTRUCT(&mca_btl_openib_component.ib_lock, opal_mutex_t);
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
mca_btl_openib_component.async_thread = 0;
|
mca_btl_openib_component.async_thread = 0;
|
||||||
#endif
|
|
||||||
distance = dev_sorted[0].distance;
|
distance = dev_sorted[0].distance;
|
||||||
for (found = false, i = 0;
|
for (found = false, i = 0;
|
||||||
i < num_devs && (-1 == mca_btl_openib_component.ib_max_btls ||
|
i < num_devs && (-1 == mca_btl_openib_component.ib_max_btls ||
|
||||||
@ -2795,7 +2772,6 @@ btl_openib_component_init(int *num_btl_modules,
|
|||||||
if (OPAL_SUCCESS != setup_qps()) {
|
if (OPAL_SUCCESS != setup_qps()) {
|
||||||
goto no_btls;
|
goto no_btls;
|
||||||
}
|
}
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
if (mca_btl_openib_component.num_srq_qps > 0 ||
|
if (mca_btl_openib_component.num_srq_qps > 0 ||
|
||||||
mca_btl_openib_component.num_xrc_qps > 0) {
|
mca_btl_openib_component.num_xrc_qps > 0) {
|
||||||
opal_hash_table_t *srq_addr_table = &mca_btl_openib_component.srq_manager.srq_addr_table;
|
opal_hash_table_t *srq_addr_table = &mca_btl_openib_component.srq_manager.srq_addr_table;
|
||||||
@ -2807,7 +2783,6 @@ btl_openib_component_init(int *num_btl_modules,
|
|||||||
goto no_btls;
|
goto no_btls;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
/* For XRC:
|
/* For XRC:
|
||||||
* from this point we know if MCA_BTL_XRC_ENABLED it true or false */
|
* from this point we know if MCA_BTL_XRC_ENABLED it true or false */
|
||||||
@ -3713,12 +3688,10 @@ static int btl_openib_component_progress(void)
|
|||||||
int i;
|
int i;
|
||||||
int count = 0;
|
int count = 0;
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
if(OPAL_UNLIKELY(mca_btl_openib_component.use_async_event_thread &&
|
if(OPAL_UNLIKELY(mca_btl_openib_component.use_async_event_thread &&
|
||||||
mca_btl_openib_component.error_counter)) {
|
mca_btl_openib_component.error_counter)) {
|
||||||
goto error;
|
goto error;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
for(i = 0; i < mca_btl_openib_component.devices_count; i++) {
|
for(i = 0; i < mca_btl_openib_component.devices_count; i++) {
|
||||||
mca_btl_openib_device_t *device =
|
mca_btl_openib_device_t *device =
|
||||||
@ -3749,7 +3722,6 @@ static int btl_openib_component_progress(void)
|
|||||||
|
|
||||||
return count;
|
return count;
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
error:
|
error:
|
||||||
/* Set the fatal counter to zero */
|
/* Set the fatal counter to zero */
|
||||||
mca_btl_openib_component.error_counter = 0;
|
mca_btl_openib_component.error_counter = 0;
|
||||||
@ -3770,7 +3742,6 @@ error:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
return count;
|
return count;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int mca_btl_openib_post_srr(mca_btl_openib_module_t* openib_btl, const int qp)
|
int mca_btl_openib_post_srr(mca_btl_openib_module_t* openib_btl, const int qp)
|
||||||
|
@ -592,7 +592,6 @@ void mca_btl_openib_endpoint_connected(mca_btl_openib_endpoint_t *endpoint)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* Run over all qps and load alternative path */
|
/* Run over all qps and load alternative path */
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
if (APM_ENABLED) {
|
if (APM_ENABLED) {
|
||||||
int i;
|
int i;
|
||||||
if (MCA_BTL_XRC_ENABLED) {
|
if (MCA_BTL_XRC_ENABLED) {
|
||||||
@ -605,7 +604,6 @@ void mca_btl_openib_endpoint_connected(mca_btl_openib_endpoint_t *endpoint)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
endpoint->endpoint_state = MCA_BTL_IB_CONNECTED;
|
endpoint->endpoint_state = MCA_BTL_IB_CONNECTED;
|
||||||
endpoint->endpoint_btl->device->non_eager_rdma_endpoints++;
|
endpoint->endpoint_btl->device->non_eager_rdma_endpoints++;
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (c) 2008-2013 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2008-2013 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2009 Sandia National Laboratories. All rights reserved.
|
* Copyright (c) 2009 Sandia National Laboratories. All rights reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
*
|
*
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -10,7 +12,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Note: this file is a little fast-n-loose with OPAL_HAVE_THREADS --
|
* Note: this file is a little fast-n-loose --
|
||||||
* it uses this value in run-time "if" conditionals (vs. compile-time
|
* it uses this value in run-time "if" conditionals (vs. compile-time
|
||||||
* #if conditionals). We also don't protect including <pthread.h>.
|
* #if conditionals). We also don't protect including <pthread.h>.
|
||||||
* That's because this component currently only compiles on Linux and
|
* That's because this component currently only compiles on Linux and
|
||||||
@ -487,36 +489,34 @@ int opal_btl_openib_fd_init(void)
|
|||||||
/* Calculate the real size of the cmd struct */
|
/* Calculate the real size of the cmd struct */
|
||||||
cmd_size = (int) (&(bogus.end) - ((char*) &bogus));
|
cmd_size = (int) (&(bogus.end) - ((char*) &bogus));
|
||||||
|
|
||||||
if (OPAL_HAVE_THREADS) {
|
OBJ_CONSTRUCT(&pending_to_main_thread, opal_list_t);
|
||||||
OBJ_CONSTRUCT(&pending_to_main_thread, opal_list_t);
|
|
||||||
|
|
||||||
/* Create pipes to communicate between the two threads */
|
/* Create pipes to communicate between the two threads */
|
||||||
if (0 != pipe(pipe_to_service_thread)) {
|
if (0 != pipe(pipe_to_service_thread)) {
|
||||||
return OPAL_ERR_IN_ERRNO;
|
return OPAL_ERR_IN_ERRNO;
|
||||||
}
|
}
|
||||||
if (0 != pipe(pipe_to_main_thread)) {
|
if (0 != pipe(pipe_to_main_thread)) {
|
||||||
return OPAL_ERR_IN_ERRNO;
|
return OPAL_ERR_IN_ERRNO;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Create a libevent event that is used in the main thread
|
/* Create a libevent event that is used in the main thread
|
||||||
to watch its pipe */
|
to watch its pipe */
|
||||||
opal_event_set(opal_event_base, &main_thread_event, pipe_to_main_thread[0],
|
opal_event_set(opal_event_base, &main_thread_event, pipe_to_main_thread[0],
|
||||||
OPAL_EV_READ | OPAL_EV_PERSIST,
|
OPAL_EV_READ | OPAL_EV_PERSIST,
|
||||||
main_thread_event_callback, NULL);
|
main_thread_event_callback, NULL);
|
||||||
opal_event_add(&main_thread_event, 0);
|
opal_event_add(&main_thread_event, 0);
|
||||||
|
|
||||||
/* Start the service thread */
|
/* Start the service thread */
|
||||||
if (0 != pthread_create(&thread, NULL, service_thread_start,
|
if (0 != pthread_create(&thread, NULL, service_thread_start,
|
||||||
NULL)) {
|
NULL)) {
|
||||||
int errno_save = errno;
|
int errno_save = errno;
|
||||||
opal_event_del(&main_thread_event);
|
opal_event_del(&main_thread_event);
|
||||||
close(pipe_to_service_thread[0]);
|
close(pipe_to_service_thread[0]);
|
||||||
close(pipe_to_service_thread[1]);
|
close(pipe_to_service_thread[1]);
|
||||||
close(pipe_to_main_thread[0]);
|
close(pipe_to_main_thread[0]);
|
||||||
close(pipe_to_main_thread[1]);
|
close(pipe_to_main_thread[1]);
|
||||||
errno = errno_save;
|
errno = errno_save;
|
||||||
return OPAL_ERR_IN_ERRNO;
|
return OPAL_ERR_IN_ERRNO;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
initialized = true;
|
initialized = true;
|
||||||
@ -545,14 +545,9 @@ int opal_btl_openib_fd_monitor(int fd, int flags,
|
|||||||
cmd.pc_flags = flags;
|
cmd.pc_flags = flags;
|
||||||
cmd.pc_fn.event = callback;
|
cmd.pc_fn.event = callback;
|
||||||
cmd.pc_context = context;
|
cmd.pc_context = context;
|
||||||
if (OPAL_HAVE_THREADS) {
|
/* For the threaded version, write a command down the pipe */
|
||||||
/* For the threaded version, write a command down the pipe */
|
OPAL_OUTPUT((-1, "main thread sending monitor fd %d", fd));
|
||||||
OPAL_OUTPUT((-1, "main thread sending monitor fd %d", fd));
|
opal_fd_write(pipe_to_service_thread[1], cmd_size, &cmd);
|
||||||
opal_fd_write(pipe_to_service_thread[1], cmd_size, &cmd);
|
|
||||||
} else {
|
|
||||||
/* Otherwise, add it directly */
|
|
||||||
service_pipe_cmd_add_fd(true, &cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
return OPAL_SUCCESS;
|
return OPAL_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -578,14 +573,9 @@ int opal_btl_openib_fd_unmonitor(int fd,
|
|||||||
cmd.pc_flags = 0;
|
cmd.pc_flags = 0;
|
||||||
cmd.pc_fn.event = callback;
|
cmd.pc_fn.event = callback;
|
||||||
cmd.pc_context = context;
|
cmd.pc_context = context;
|
||||||
if (OPAL_HAVE_THREADS) {
|
/* For the threaded version, write a command down the pipe */
|
||||||
/* For the threaded version, write a command down the pipe */
|
OPAL_OUTPUT((-1, "main thread sending unmonitor fd %d", fd));
|
||||||
OPAL_OUTPUT((-1, "main thread sending unmonitor fd %d", fd));
|
opal_fd_write(pipe_to_service_thread[1], cmd_size, &cmd);
|
||||||
opal_fd_write(pipe_to_service_thread[1], cmd_size, &cmd);
|
|
||||||
} else {
|
|
||||||
/* Otherwise, remove it directly */
|
|
||||||
service_pipe_cmd_remove_fd(&cmd);
|
|
||||||
}
|
|
||||||
|
|
||||||
return OPAL_SUCCESS;
|
return OPAL_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -604,14 +594,9 @@ int opal_btl_openib_fd_run_in_service(opal_btl_openib_fd_main_callback_fn_t *cal
|
|||||||
cmd.pc_flags = 0;
|
cmd.pc_flags = 0;
|
||||||
cmd.pc_fn.main = callback;
|
cmd.pc_fn.main = callback;
|
||||||
cmd.pc_context = context;
|
cmd.pc_context = context;
|
||||||
if (OPAL_HAVE_THREADS) {
|
/* For the threaded version, write a command down the pipe */
|
||||||
/* For the threaded version, write a command down the pipe */
|
OPAL_OUTPUT((-1, "main thread sending 'run in service'"));
|
||||||
OPAL_OUTPUT((-1, "main thread sending 'run in service'"));
|
opal_fd_write(pipe_to_service_thread[1], cmd_size, &cmd);
|
||||||
opal_fd_write(pipe_to_service_thread[1], cmd_size, &cmd);
|
|
||||||
} else {
|
|
||||||
/* Otherwise, run it directly */
|
|
||||||
callback(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
return OPAL_SUCCESS;
|
return OPAL_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -623,22 +608,16 @@ int opal_btl_openib_fd_run_in_service(opal_btl_openib_fd_main_callback_fn_t *cal
|
|||||||
int opal_btl_openib_fd_run_in_main(opal_btl_openib_fd_main_callback_fn_t *callback,
|
int opal_btl_openib_fd_run_in_main(opal_btl_openib_fd_main_callback_fn_t *callback,
|
||||||
void *context)
|
void *context)
|
||||||
{
|
{
|
||||||
if (OPAL_HAVE_THREADS) {
|
cmd_t cmd;
|
||||||
cmd_t cmd;
|
|
||||||
|
|
||||||
OPAL_OUTPUT((-1, "run in main -- sending command"));
|
OPAL_OUTPUT((-1, "run in main -- sending command"));
|
||||||
/* For the threaded version, write a command down the pipe */
|
/* For the threaded version, write a command down the pipe */
|
||||||
cmd.pc_cmd = CMD_CALL_FUNCTION;
|
cmd.pc_cmd = CMD_CALL_FUNCTION;
|
||||||
cmd.pc_fd = -1;
|
cmd.pc_fd = -1;
|
||||||
cmd.pc_flags = 0;
|
cmd.pc_flags = 0;
|
||||||
cmd.pc_fn.main = callback;
|
cmd.pc_fn.main = callback;
|
||||||
cmd.pc_context = context;
|
cmd.pc_context = context;
|
||||||
write_to_main_thread(&cmd);
|
write_to_main_thread(&cmd);
|
||||||
} else {
|
|
||||||
/* Otherwise, call it directly */
|
|
||||||
OPAL_OUTPUT((-1, "run in main -- calling now!"));
|
|
||||||
callback(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
return OPAL_SUCCESS;
|
return OPAL_SUCCESS;
|
||||||
}
|
}
|
||||||
@ -677,37 +656,35 @@ opal_btl_openib_fd_main_thread_drain(void)
|
|||||||
int opal_btl_openib_fd_finalize(void)
|
int opal_btl_openib_fd_finalize(void)
|
||||||
{
|
{
|
||||||
if (initialized) {
|
if (initialized) {
|
||||||
if (OPAL_HAVE_THREADS) {
|
/* For the threaded version, send a command down the pipe */
|
||||||
/* For the threaded version, send a command down the pipe */
|
cmd_t cmd;
|
||||||
cmd_t cmd;
|
OPAL_OUTPUT((-1, "shutting down openib fd"));
|
||||||
OPAL_OUTPUT((-1, "shutting down openib fd"));
|
/* Check if the thread exists before asking it to quit */
|
||||||
/* Check if the thread exists before asking it to quit */
|
if (ESRCH != pthread_kill(thread, 0)) {
|
||||||
if (ESRCH != pthread_kill(thread, 0)) {
|
memset(&cmd, 0, cmd_size);
|
||||||
memset(&cmd, 0, cmd_size);
|
cmd.pc_cmd = CMD_TIME_TO_QUIT;
|
||||||
cmd.pc_cmd = CMD_TIME_TO_QUIT;
|
if (OPAL_SUCCESS != opal_fd_write(pipe_to_service_thread[1],
|
||||||
if (OPAL_SUCCESS != opal_fd_write(pipe_to_service_thread[1],
|
cmd_size, &cmd)) {
|
||||||
cmd_size, &cmd)) {
|
/* We cancel the thread if there's an error
|
||||||
/* We cancel the thread if there's an error
|
* sending the "quit" cmd. This only ever happens on
|
||||||
* sending the "quit" cmd. This only ever happens on
|
* a "restart" which could result in dangling
|
||||||
* a "restart" which could result in dangling
|
* fds. OMPI must not rely on the checkpointer to
|
||||||
* fds. OMPI must not rely on the checkpointer to
|
* save/restore any fds or connections
|
||||||
* save/restore any fds or connections
|
*/
|
||||||
*/
|
pthread_cancel(thread);
|
||||||
pthread_cancel(thread);
|
|
||||||
}
|
|
||||||
|
|
||||||
pthread_join(thread, NULL);
|
|
||||||
opal_atomic_rmb();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
opal_event_del(&main_thread_event);
|
pthread_join(thread, NULL);
|
||||||
|
opal_atomic_rmb();
|
||||||
close(pipe_to_service_thread[0]);
|
|
||||||
close(pipe_to_service_thread[1]);
|
|
||||||
close(pipe_to_main_thread[0]);
|
|
||||||
close(pipe_to_main_thread[1]);
|
|
||||||
OBJ_DESTRUCT(&pending_to_main_thread);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
opal_event_del(&main_thread_event);
|
||||||
|
|
||||||
|
close(pipe_to_service_thread[0]);
|
||||||
|
close(pipe_to_service_thread[1]);
|
||||||
|
close(pipe_to_main_thread[0]);
|
||||||
|
close(pipe_to_main_thread[1]);
|
||||||
|
OBJ_DESTRUCT(&pending_to_main_thread);
|
||||||
OBJ_DESTRUCT(®istered_items);
|
OBJ_DESTRUCT(®istered_items);
|
||||||
}
|
}
|
||||||
initialized = false;
|
initialized = false;
|
||||||
|
@ -16,7 +16,7 @@
|
|||||||
* Copyright (c) 2006-2007 Voltaire All rights reserved.
|
* Copyright (c) 2006-2007 Voltaire All rights reserved.
|
||||||
* Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2009-2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
* Copyright (c) 2013-2014 NVIDIA Corporation. All rights reserved.
|
* Copyright (c) 2013-2014 NVIDIA Corporation. All rights reserved.
|
||||||
* Copyright (c) 2014 Research Organization for Information Science
|
* Copyright (c) 2014-2015 Research Organization for Information Science
|
||||||
* and Technology (RIST). All rights reserved.
|
* and Technology (RIST). All rights reserved.
|
||||||
* Copyright (c) 2014 Intel, Inc. All rights reserved.
|
* Copyright (c) 2014 Intel, Inc. All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
@ -460,7 +460,6 @@ int btl_openib_register_mca_params(void)
|
|||||||
"(must be >= 0, where 0 = use all available)",
|
"(must be >= 0, where 0 = use all available)",
|
||||||
1, &mca_btl_openib_component.max_lmc, 0));
|
1, &mca_btl_openib_component.max_lmc, 0));
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
CHECK(reg_int("enable_apm_over_lmc", NULL, "Maximum number of alternative paths for each device port "
|
CHECK(reg_int("enable_apm_over_lmc", NULL, "Maximum number of alternative paths for each device port "
|
||||||
"(must be >= -1, where 0 = disable apm, -1 = all available alternative paths )",
|
"(must be >= -1, where 0 = disable apm, -1 = all available alternative paths )",
|
||||||
0, &mca_btl_openib_component.apm_lmc, REGINT_NEG_ONE_OK|REGINT_GE_ZERO));
|
0, &mca_btl_openib_component.apm_lmc, REGINT_NEG_ONE_OK|REGINT_GE_ZERO));
|
||||||
@ -501,9 +500,6 @@ int btl_openib_register_mca_params(void)
|
|||||||
"Enable/Disable on demand SRQ resize. "
|
"Enable/Disable on demand SRQ resize. "
|
||||||
"(0 = without resizing, nonzero = with resizing)", 1,
|
"(0 = without resizing, nonzero = with resizing)", 1,
|
||||||
&mca_btl_openib_component.enable_srq_resize));
|
&mca_btl_openib_component.enable_srq_resize));
|
||||||
#else
|
|
||||||
mca_btl_openib_component.enable_srq_resize = false;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if HAVE_DECL_IBV_LINK_LAYER_ETHERNET
|
#if HAVE_DECL_IBV_LINK_LAYER_ETHERNET
|
||||||
CHECK(reg_bool("rroce_enable", NULL,
|
CHECK(reg_bool("rroce_enable", NULL,
|
||||||
|
@ -14,6 +14,8 @@
|
|||||||
# Copyright (c) 2008-2011 Mellanox Technologies. All rights reserved.
|
# Copyright (c) 2008-2011 Mellanox Technologies. All rights reserved.
|
||||||
# Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
|
# Copyright (c) 2011 Oracle and/or its affiliates. All rights reserved.
|
||||||
# Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
|
# Copyright (c) 2013 NVIDIA Corporation. All rights reserved.
|
||||||
|
# Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
# and Technology (RIST). All rights reserved.
|
||||||
# $COPYRIGHT$
|
# $COPYRIGHT$
|
||||||
#
|
#
|
||||||
# Additional copyrights may follow
|
# Additional copyrights may follow
|
||||||
@ -37,7 +39,7 @@ AC_DEFUN([MCA_opal_btl_openib_POST_CONFIG], [
|
|||||||
AC_DEFUN([MCA_opal_btl_openib_CONFIG],[
|
AC_DEFUN([MCA_opal_btl_openib_CONFIG],[
|
||||||
AC_CONFIG_FILES([opal/mca/btl/openib/Makefile])
|
AC_CONFIG_FILES([opal/mca/btl/openib/Makefile])
|
||||||
|
|
||||||
OPAL_VAR_SCOPE_PUSH([cpcs have_threads LDFLAGS_save LIBS_save])
|
OPAL_VAR_SCOPE_PUSH([cpcs LDFLAGS_save LIBS_save])
|
||||||
cpcs="oob"
|
cpcs="oob"
|
||||||
|
|
||||||
OPAL_CHECK_OPENFABRICS([btl_openib],
|
OPAL_CHECK_OPENFABRICS([btl_openib],
|
||||||
@ -57,19 +59,11 @@ AC_DEFUN([MCA_opal_btl_openib_CONFIG],[
|
|||||||
$1],
|
$1],
|
||||||
[$2])
|
[$2])
|
||||||
|
|
||||||
AC_MSG_CHECKING([for thread support (needed for rdmacm/udcm)])
|
|
||||||
have_threads=`echo $THREAD_TYPE | awk '{ print [$]1 }'`
|
|
||||||
if test "x$have_threads" = "x"; then
|
|
||||||
have_threads=none
|
|
||||||
fi
|
|
||||||
AC_MSG_RESULT([$have_threads])
|
|
||||||
|
|
||||||
AS_IF([test "$btl_openib_happy" = "yes"],
|
AS_IF([test "$btl_openib_happy" = "yes"],
|
||||||
[if test "x$btl_openib_have_xrc" = "x1"; then
|
[if test "x$btl_openib_have_xrc" = "x1"; then
|
||||||
cpcs="$cpcs xoob"
|
cpcs="$cpcs xoob"
|
||||||
fi
|
fi
|
||||||
if test "x$btl_openib_have_rdmacm" = "x1" -a \
|
if test "x$btl_openib_have_rdmacm" = "x1"; then
|
||||||
"$have_threads" != "none"; then
|
|
||||||
cpcs="$cpcs rdmacm"
|
cpcs="$cpcs rdmacm"
|
||||||
if test "$enable_openib_rdmacm_ibaddr" = "yes"; then
|
if test "$enable_openib_rdmacm_ibaddr" = "yes"; then
|
||||||
AC_MSG_CHECKING([IB addressing])
|
AC_MSG_CHECKING([IB addressing])
|
||||||
@ -103,8 +97,7 @@ AC_DEFUN([MCA_opal_btl_openib_CONFIG],[
|
|||||||
AC_DEFINE(BTL_OPENIB_RDMACM_IB_ADDR, 0, rdmacm without IB_AF addressing support)
|
AC_DEFINE(BTL_OPENIB_RDMACM_IB_ADDR, 0, rdmacm without IB_AF addressing support)
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
if test "x$btl_openib_have_udcm" = "x1" -a \
|
if test "x$btl_openib_have_udcm" = "x1"; then
|
||||||
"$have_threads" != "none"; then
|
|
||||||
cpcs="$cpcs udcm"
|
cpcs="$cpcs udcm"
|
||||||
fi
|
fi
|
||||||
AC_MSG_CHECKING([which openib btl cpcs will be built])
|
AC_MSG_CHECKING([which openib btl cpcs will be built])
|
||||||
|
@ -5,6 +5,8 @@
|
|||||||
* Copyright (c) 2012-2013 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2012-2013 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2013-2014 Intel, Inc. All rights reserved
|
* Copyright (c) 2013-2014 Intel, Inc. All rights reserved
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
*
|
*
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
@ -18,10 +20,10 @@
|
|||||||
#include "btl_openib_proc.h"
|
#include "btl_openib_proc.h"
|
||||||
#include "connect/base.h"
|
#include "connect/base.h"
|
||||||
#include "connect/btl_openib_connect_empty.h"
|
#include "connect/btl_openib_connect_empty.h"
|
||||||
#if OPAL_HAVE_RDMACM && OPAL_HAVE_THREADS
|
#if OPAL_HAVE_RDMACM
|
||||||
#include "connect/btl_openib_connect_rdmacm.h"
|
#include "connect/btl_openib_connect_rdmacm.h"
|
||||||
#endif
|
#endif
|
||||||
#if OPAL_HAVE_UDCM && OPAL_HAVE_THREADS
|
#if OPAL_HAVE_UDCM
|
||||||
#include "connect/btl_openib_connect_udcm.h"
|
#include "connect/btl_openib_connect_udcm.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -44,19 +46,11 @@ static opal_btl_openib_connect_base_component_t *all[] = {
|
|||||||
|
|
||||||
/* Always have an entry here so that the CP indexes will always be
|
/* Always have an entry here so that the CP indexes will always be
|
||||||
the same: if RDMA CM is not available, use the "empty" CPC */
|
the same: if RDMA CM is not available, use the "empty" CPC */
|
||||||
#if OPAL_HAVE_RDMACM && OPAL_HAVE_THREADS
|
|
||||||
&opal_btl_openib_connect_rdmacm,
|
&opal_btl_openib_connect_rdmacm,
|
||||||
#else
|
|
||||||
&opal_btl_openib_connect_empty,
|
|
||||||
#endif
|
|
||||||
|
|
||||||
/* Always have an entry here so that the CP indexes will always be
|
/* Always have an entry here so that the CP indexes will always be
|
||||||
the same: if UD CM is not enabled, use the "empty" CPC */
|
the same: if UD CM is not enabled, use the "empty" CPC */
|
||||||
#if OPAL_HAVE_UDCM && OPAL_HAVE_THREADS
|
|
||||||
&opal_btl_openib_connect_udcm,
|
&opal_btl_openib_connect_udcm,
|
||||||
#else
|
|
||||||
&opal_btl_openib_connect_empty,
|
|
||||||
#endif
|
|
||||||
|
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
@ -875,7 +875,6 @@ static void udcm_module_destroy_listen_qp (udcm_module_t *m)
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
if (mca_btl_openib_component.use_async_event_thread &&
|
if (mca_btl_openib_component.use_async_event_thread &&
|
||||||
-1 != mca_btl_openib_component.async_pipe[1]) {
|
-1 != mca_btl_openib_component.async_pipe[1]) {
|
||||||
/* Tell the openib async thread to ignore ERR state on the QP
|
/* Tell the openib async thread to ignore ERR state on the QP
|
||||||
@ -894,7 +893,6 @@ static void udcm_module_destroy_listen_qp (udcm_module_t *m)
|
|||||||
BTL_ERROR(("Command to openib async thread to ignore QP ERR state failed"));
|
BTL_ERROR(("Command to openib async thread to ignore QP ERR state failed"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
/* Move listen QP into the ERR state to cancel all outstanding
|
/* Move listen QP into the ERR state to cancel all outstanding
|
||||||
@ -2681,7 +2679,6 @@ static int udcm_xrc_recv_qp_create (mca_btl_openib_endpoint_t *lcl_ep, udcm_msg_
|
|||||||
return OPAL_ERROR;
|
return OPAL_ERROR;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#if OPAL_HAVE_THREADS
|
|
||||||
if (APM_ENABLED) {
|
if (APM_ENABLED) {
|
||||||
#if OPAL_HAVE_CONNECTX_XRC_DOMAINS
|
#if OPAL_HAVE_CONNECTX_XRC_DOMAINS
|
||||||
mca_btl_openib_load_apm(lcl_ep->xrc_recv_qp, lcl_ep);
|
mca_btl_openib_load_apm(lcl_ep->xrc_recv_qp, lcl_ep);
|
||||||
@ -2689,7 +2686,6 @@ static int udcm_xrc_recv_qp_create (mca_btl_openib_endpoint_t *lcl_ep, udcm_msg_
|
|||||||
mca_btl_openib_load_apm_xrc_rcv(lcl_ep->xrc_recv_qp_num, lcl_ep);
|
mca_btl_openib_load_apm_xrc_rcv(lcl_ep->xrc_recv_qp_num, lcl_ep);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
return OPAL_SUCCESS;
|
return OPAL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
# Copyright (c) 2004-2005 The Regents of the University of California.
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
# Copyright (c) 2009-2010 Cisco Systems, Inc. All rights reserved.
|
# Copyright (c) 2009-2010 Cisco Systems, Inc. All rights reserved.
|
||||||
|
# Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
# and Technology (RIST). All rights reserved.
|
||||||
# $COPYRIGHT$
|
# $COPYRIGHT$
|
||||||
#
|
#
|
||||||
# Additional copyrights may follow
|
# Additional copyrights may follow
|
||||||
@ -19,12 +21,10 @@
|
|||||||
|
|
||||||
AM_CPPFLAGS = -DMALLOC_DEBUG=0
|
AM_CPPFLAGS = -DMALLOC_DEBUG=0
|
||||||
|
|
||||||
if OPAL_HAVE_POSIX_THREADS
|
|
||||||
AM_CPPFLAGS += \
|
AM_CPPFLAGS += \
|
||||||
-D_GNU_SOURCE=1 \
|
-D_GNU_SOURCE=1 \
|
||||||
-DMALLOC_HOOKS=1 \
|
-DMALLOC_HOOKS=1 \
|
||||||
-I$(srcdir)/sysdeps/pthread
|
-I$(srcdir)/sysdeps/pthread
|
||||||
endif
|
|
||||||
# this must come *after* the threads -Is
|
# this must come *after* the threads -Is
|
||||||
AM_CPPFLAGS += -I$(srcdir)/sysdeps/generic
|
AM_CPPFLAGS += -I$(srcdir)/sysdeps/generic
|
||||||
|
|
||||||
|
@ -16,6 +16,8 @@
|
|||||||
* Copyright (c) 2010-2013 Los Alamos National Security, LLC.
|
* Copyright (c) 2010-2013 Los Alamos National Security, LLC.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2013-2014 Intel, Inc. All rights reserved
|
* Copyright (c) 2013-2014 Intel, Inc. All rights reserved
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -607,7 +609,6 @@ int opal_init_test(void)
|
|||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
static bool fork_warning_issued = false;
|
static bool fork_warning_issued = false;
|
||||||
static bool atfork_called = false;
|
static bool atfork_called = false;
|
||||||
|
|
||||||
@ -619,14 +620,11 @@ static void warn_fork_cb(void)
|
|||||||
fork_warning_issued = true;
|
fork_warning_issued = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif /* OPAL_HAVE_POSIX_THREADS */
|
|
||||||
|
|
||||||
void opal_warn_fork(void)
|
void opal_warn_fork(void)
|
||||||
{
|
{
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
if (opal_warn_on_fork && !atfork_called) {
|
if (opal_warn_on_fork && !atfork_called) {
|
||||||
pthread_atfork(warn_fork_cb, NULL, NULL);
|
pthread_atfork(warn_fork_cb, NULL, NULL);
|
||||||
atfork_called = true;
|
atfork_called = true;
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
# Copyright (c) 2004-2005 The Regents of the University of California.
|
# Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
# All rights reserved.
|
# All rights reserved.
|
||||||
# Copyright (c) 2014 Cisco Systems, Inc. All rights reserved.
|
# Copyright (c) 2014 Cisco Systems, Inc. All rights reserved.
|
||||||
|
# Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
# and Technology (RIST). All rights reserved.
|
||||||
# $COPYRIGHT$
|
# $COPYRIGHT$
|
||||||
#
|
#
|
||||||
# Additional copyrights may follow
|
# Additional copyrights may follow
|
||||||
@ -31,5 +33,4 @@ headers += \
|
|||||||
lib@OPAL_LIB_PREFIX@open_pal_la_SOURCES += \
|
lib@OPAL_LIB_PREFIX@open_pal_la_SOURCES += \
|
||||||
threads/condition.c \
|
threads/condition.c \
|
||||||
threads/mutex.c \
|
threads/mutex.c \
|
||||||
threads/thread.c \
|
threads/thread.c
|
||||||
threads/tsd.c
|
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -27,9 +29,7 @@
|
|||||||
#ifdef HAVE_TIME_H
|
#ifdef HAVE_TIME_H
|
||||||
#include <time.h>
|
#include <time.h>
|
||||||
#endif
|
#endif
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "opal/threads/mutex.h"
|
#include "opal/threads/mutex.h"
|
||||||
#include "opal/runtime/opal_progress.h"
|
#include "opal/runtime/opal_progress.h"
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2007-2013 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2007-2013 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -32,8 +34,6 @@ bool opal_uses_threads = false;
|
|||||||
|
|
||||||
static void opal_mutex_construct(opal_mutex_t *m)
|
static void opal_mutex_construct(opal_mutex_t *m)
|
||||||
{
|
{
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
|
|
||||||
#if OPAL_ENABLE_DEBUG
|
#if OPAL_ENABLE_DEBUG
|
||||||
pthread_mutexattr_t attr;
|
pthread_mutexattr_t attr;
|
||||||
pthread_mutexattr_init(&attr);
|
pthread_mutexattr_init(&attr);
|
||||||
@ -48,6 +48,9 @@ static void opal_mutex_construct(opal_mutex_t *m)
|
|||||||
pthread_mutex_init(&m->m_lock_pthread, &attr);
|
pthread_mutex_init(&m->m_lock_pthread, &attr);
|
||||||
pthread_mutexattr_destroy(&attr);
|
pthread_mutexattr_destroy(&attr);
|
||||||
|
|
||||||
|
m->m_lock_debug = 0;
|
||||||
|
m->m_lock_file = NULL;
|
||||||
|
m->m_lock_line = 0;
|
||||||
#else
|
#else
|
||||||
|
|
||||||
/* Without debugging, choose the fastest available mutexes */
|
/* Without debugging, choose the fastest available mutexes */
|
||||||
@ -55,14 +58,6 @@ static void opal_mutex_construct(opal_mutex_t *m)
|
|||||||
|
|
||||||
#endif /* OPAL_ENABLE_DEBUG */
|
#endif /* OPAL_ENABLE_DEBUG */
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if OPAL_ENABLE_DEBUG
|
|
||||||
m->m_lock_debug = 0;
|
|
||||||
m->m_lock_file = NULL;
|
|
||||||
m->m_lock_line = 0;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if OPAL_HAVE_ATOMIC_SPINLOCKS
|
#if OPAL_HAVE_ATOMIC_SPINLOCKS
|
||||||
opal_atomic_init( &m->m_lock_atomic, OPAL_ATOMIC_UNLOCKED );
|
opal_atomic_init( &m->m_lock_atomic, OPAL_ATOMIC_UNLOCKED );
|
||||||
#endif
|
#endif
|
||||||
@ -70,9 +65,7 @@ static void opal_mutex_construct(opal_mutex_t *m)
|
|||||||
|
|
||||||
static void opal_mutex_destruct(opal_mutex_t *m)
|
static void opal_mutex_destruct(opal_mutex_t *m)
|
||||||
{
|
{
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
pthread_mutex_destroy(&m->m_lock_pthread);
|
pthread_mutex_destroy(&m->m_lock_pthread);
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
OBJ_CLASS_INSTANCE(opal_mutex_t,
|
OBJ_CLASS_INSTANCE(opal_mutex_t,
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2007 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -34,13 +36,11 @@
|
|||||||
|
|
||||||
#include "opal_config.h"
|
#include "opal_config.h"
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
#ifdef HAVE_PTHREAD_H
|
#ifdef HAVE_PTHREAD_H
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#endif
|
#endif
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "opal/class/opal_object.h"
|
#include "opal/class/opal_object.h"
|
||||||
#include "opal/sys/atomic.h"
|
#include "opal/sys/atomic.h"
|
||||||
@ -50,9 +50,7 @@ BEGIN_C_DECLS
|
|||||||
struct opal_mutex_t {
|
struct opal_mutex_t {
|
||||||
opal_object_t super;
|
opal_object_t super;
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
pthread_mutex_t m_lock_pthread;
|
pthread_mutex_t m_lock_pthread;
|
||||||
#endif
|
|
||||||
|
|
||||||
#if OPAL_ENABLE_DEBUG
|
#if OPAL_ENABLE_DEBUG
|
||||||
int m_lock_debug;
|
int m_lock_debug;
|
||||||
@ -70,12 +68,6 @@ OPAL_DECLSPEC OBJ_CLASS_DECLARATION(opal_mutex_t);
|
|||||||
*
|
*
|
||||||
************************************************************************/
|
************************************************************************/
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* POSIX threads
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
static inline int opal_mutex_trylock(opal_mutex_t *m)
|
static inline int opal_mutex_trylock(opal_mutex_t *m)
|
||||||
{
|
{
|
||||||
#if OPAL_ENABLE_DEBUG
|
#if OPAL_ENABLE_DEBUG
|
||||||
@ -119,34 +111,6 @@ static inline void opal_mutex_unlock(opal_mutex_t *m)
|
|||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
#elif OPAL_HAVE_ATOMIC_SPINLOCKS
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* Spin Locks
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
static inline int opal_mutex_trylock(opal_mutex_t *m)
|
|
||||||
{
|
|
||||||
return opal_atomic_trylock(&m->m_lock_atomic);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void opal_mutex_lock(opal_mutex_t *m)
|
|
||||||
{
|
|
||||||
opal_atomic_lock(&m->m_lock_atomic);
|
|
||||||
}
|
|
||||||
|
|
||||||
static inline void opal_mutex_unlock(opal_mutex_t *m)
|
|
||||||
{
|
|
||||||
opal_atomic_unlock(&m->m_lock_atomic);
|
|
||||||
}
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
#error No mutex definition
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
/************************************************************************
|
/************************************************************************
|
||||||
*
|
*
|
||||||
* mutex operations (atomic versions)
|
* mutex operations (atomic versions)
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -37,17 +39,9 @@ OBJ_CLASS_INSTANCE(opal_thread_t,
|
|||||||
static void opal_thread_construct(opal_thread_t *t)
|
static void opal_thread_construct(opal_thread_t *t)
|
||||||
{
|
{
|
||||||
t->t_run = 0;
|
t->t_run = 0;
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
t->t_handle = (pthread_t) -1;
|
t->t_handle = (pthread_t) -1;
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* POSIX threads
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
int opal_thread_start(opal_thread_t *t)
|
int opal_thread_start(opal_thread_t *t)
|
||||||
{
|
{
|
||||||
int rc;
|
int rc;
|
||||||
@ -89,38 +83,3 @@ void opal_thread_kill(opal_thread_t *t, int sig)
|
|||||||
{
|
{
|
||||||
pthread_kill(t->t_handle, sig);
|
pthread_kill(t->t_handle, sig);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
/************************************************************************
|
|
||||||
* No thread support
|
|
||||||
************************************************************************/
|
|
||||||
|
|
||||||
int opal_thread_start(opal_thread_t *t)
|
|
||||||
{
|
|
||||||
return OPAL_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int opal_thread_join(opal_thread_t *t, void **thr_return)
|
|
||||||
{
|
|
||||||
return OPAL_ERROR;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
bool opal_thread_self_compare(opal_thread_t *t)
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
opal_thread_t *opal_thread_get_self(void)
|
|
||||||
{
|
|
||||||
return NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void opal_thread_kill(opal_thread_t *t, int sig)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -23,9 +25,7 @@
|
|||||||
|
|
||||||
#include "opal_config.h"
|
#include "opal_config.h"
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#endif
|
|
||||||
#ifdef HAVE_SIGNAL_H
|
#ifdef HAVE_SIGNAL_H
|
||||||
#include <signal.h>
|
#include <signal.h>
|
||||||
#endif
|
#endif
|
||||||
@ -48,9 +48,7 @@ struct opal_thread_t {
|
|||||||
opal_object_t super;
|
opal_object_t super;
|
||||||
opal_thread_fn_t t_run;
|
opal_thread_fn_t t_run;
|
||||||
void* t_arg;
|
void* t_arg;
|
||||||
#ifdef OPAL_HAVE_POSIX_THREADS
|
|
||||||
pthread_t t_handle;
|
pthread_t t_handle;
|
||||||
#endif
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef struct opal_thread_t opal_thread_t;
|
typedef struct opal_thread_t opal_thread_t;
|
||||||
|
@ -1,117 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2007-2013 Los Alamos National Security, LLC. All rights
|
|
||||||
* reserved.
|
|
||||||
* $COPYRIGHT$
|
|
||||||
*
|
|
||||||
* Additional copyrights may follow
|
|
||||||
*
|
|
||||||
* $HEADER$
|
|
||||||
*/
|
|
||||||
|
|
||||||
|
|
||||||
#include "opal_config.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
# if HAVE_STDLIB_H
|
|
||||||
#include <stdlib.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
#include "opal/threads/tsd.h"
|
|
||||||
|
|
||||||
#if !OPAL_HAVE_POSIX_THREADS
|
|
||||||
|
|
||||||
#define TSD_ENTRIES 32
|
|
||||||
|
|
||||||
struct tsd_entry_t {
|
|
||||||
bool used;
|
|
||||||
void *value;
|
|
||||||
opal_tsd_destructor_t destructor;
|
|
||||||
};
|
|
||||||
typedef struct tsd_entry_t tsd_entry_t;
|
|
||||||
|
|
||||||
static tsd_entry_t entries[TSD_ENTRIES];
|
|
||||||
static bool atexit_registered = false;
|
|
||||||
|
|
||||||
static void
|
|
||||||
run_destructors(void)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
for (i = 0; i < TSD_ENTRIES ; ++i) {
|
|
||||||
opal_tsd_destructor_t destructor;
|
|
||||||
void *value;
|
|
||||||
|
|
||||||
if (entries[i].used) {
|
|
||||||
destructor = entries[i].destructor;
|
|
||||||
value = entries[i].value;
|
|
||||||
|
|
||||||
entries[i].used = false;
|
|
||||||
entries[i].destructor = NULL;
|
|
||||||
entries[i].value = NULL;
|
|
||||||
|
|
||||||
destructor(value);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
opal_tsd_key_create(opal_tsd_key_t *key,
|
|
||||||
opal_tsd_destructor_t destructor)
|
|
||||||
{
|
|
||||||
int i;
|
|
||||||
|
|
||||||
if (!atexit_registered) {
|
|
||||||
atexit_registered = true;
|
|
||||||
if (0 != atexit(run_destructors)) {
|
|
||||||
return OPAL_ERR_TEMP_OUT_OF_RESOURCE;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (i = 0 ; i < TSD_ENTRIES ; ++i) {
|
|
||||||
if (entries[i].used == false) {
|
|
||||||
entries[i].used = true;
|
|
||||||
entries[i].value = NULL;
|
|
||||||
entries[i].destructor = destructor;
|
|
||||||
*key = i;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (i == TSD_ENTRIES) return ENOMEM;
|
|
||||||
|
|
||||||
return OPAL_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
opal_tsd_key_delete(opal_tsd_key_t key)
|
|
||||||
{
|
|
||||||
if (!entries[key].used) return OPAL_ERR_BAD_PARAM;
|
|
||||||
|
|
||||||
entries[key].used = false;
|
|
||||||
entries[key].value = NULL;
|
|
||||||
entries[key].destructor = NULL;
|
|
||||||
|
|
||||||
return OPAL_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
opal_tsd_setspecific(opal_tsd_key_t key, void *value)
|
|
||||||
{
|
|
||||||
if (!entries[key].used) return OPAL_ERR_BAD_PARAM;
|
|
||||||
entries[key].value = value;
|
|
||||||
return OPAL_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
int
|
|
||||||
opal_tsd_getspecific(opal_tsd_key_t key, void **valuep)
|
|
||||||
{
|
|
||||||
if (!entries[key].used) return OPAL_ERR_BAD_PARAM;
|
|
||||||
*valuep = entries[key].value;
|
|
||||||
return OPAL_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
#endif
|
|
@ -2,6 +2,8 @@
|
|||||||
* Copyright (c) 2007-2013 Los Alamos National Security, LLC. All rights
|
* Copyright (c) 2007-2013 Los Alamos National Security, LLC. All rights
|
||||||
* reserved.
|
* reserved.
|
||||||
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2008 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -15,9 +17,7 @@
|
|||||||
|
|
||||||
#include "opal_config.h"
|
#include "opal_config.h"
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
#include <pthread.h>
|
#include <pthread.h>
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "opal/constants.h"
|
#include "opal/constants.h"
|
||||||
|
|
||||||
@ -134,7 +134,7 @@ OPAL_DECLSPEC int opal_tsd_setspecific(opal_tsd_key_t key, void *value);
|
|||||||
*/
|
*/
|
||||||
OPAL_DECLSPEC int opal_tsd_getspecific(opal_tsd_key_t key, void **valuep);
|
OPAL_DECLSPEC int opal_tsd_getspecific(opal_tsd_key_t key, void **valuep);
|
||||||
|
|
||||||
#elif OPAL_HAVE_POSIX_THREADS
|
#else
|
||||||
|
|
||||||
typedef pthread_key_t opal_tsd_key_t;
|
typedef pthread_key_t opal_tsd_key_t;
|
||||||
|
|
||||||
@ -164,19 +164,6 @@ opal_tsd_getspecific(opal_tsd_key_t key, void **valuep)
|
|||||||
return OPAL_SUCCESS;
|
return OPAL_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
#else
|
|
||||||
|
|
||||||
typedef int opal_tsd_key_t;
|
|
||||||
|
|
||||||
OPAL_DECLSPEC int opal_tsd_key_create(opal_tsd_key_t *key,
|
|
||||||
opal_tsd_destructor_t destructor);
|
|
||||||
|
|
||||||
OPAL_DECLSPEC int opal_tsd_key_delete(opal_tsd_key_t key);
|
|
||||||
|
|
||||||
OPAL_DECLSPEC int opal_tsd_setspecific(opal_tsd_key_t key, void *value);
|
|
||||||
|
|
||||||
OPAL_DECLSPEC int opal_tsd_getspecific(opal_tsd_key_t key, void **valuep);
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
END_C_DECLS
|
END_C_DECLS
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2007-2011 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2007-2011 Cisco Systems, Inc. All rights reserved.
|
||||||
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
* Copyright (c) 2009 Oak Ridge National Labs. All rights reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -354,13 +356,9 @@ void orte_info_do_config(bool want_all)
|
|||||||
symbol_visibility = OPAL_C_HAVE_VISIBILITY ? "yes" : "no";
|
symbol_visibility = OPAL_C_HAVE_VISIBILITY ? "yes" : "no";
|
||||||
|
|
||||||
/* setup strings that require allocation */
|
/* setup strings that require allocation */
|
||||||
if (OPAL_HAVE_POSIX_THREADS) { /* should just test OPAL_HAVE_THREADS */
|
asprintf(&threads, "%s (OPAL: %s, ORTE progress: yes, Event lib: yes)",
|
||||||
asprintf(&threads, "%s (OPAL: %s, ORTE progress: yes, Event lib: yes)",
|
"posix",
|
||||||
(OPAL_HAVE_POSIX_THREADS ? "posix" : "type unknown"), /* "type unknown" can presumably never happen */
|
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no");
|
||||||
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no");
|
|
||||||
} else {
|
|
||||||
threads = strdup("no");
|
|
||||||
}
|
|
||||||
|
|
||||||
asprintf(&ft_support, "%s (checkpoint thread: %s)",
|
asprintf(&ft_support, "%s (checkpoint thread: %s)",
|
||||||
OPAL_ENABLE_FT ? "yes" : "no", OPAL_ENABLE_FT_THREAD ? "yes" : "no");;
|
OPAL_ENABLE_FT ? "yes" : "no", OPAL_ENABLE_FT_THREAD ? "yes" : "no");;
|
||||||
|
@ -263,23 +263,19 @@ void oshmem_info_do_config(bool want_all)
|
|||||||
fortran_have_ignore_tkr = strdup("no");
|
fortran_have_ignore_tkr = strdup("no");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (OPAL_HAVE_POSIX_THREADS) { /* should just test OPAL_HAVE_THREADS */
|
|
||||||
#if OMPI_RTE_ORTE
|
#if OMPI_RTE_ORTE
|
||||||
(void)asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: %s, OPAL support: %s, OMPI progress: %s, ORTE progress: yes, Event lib: yes)",
|
(void)asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: %s, OPAL support: %s, OMPI progress: %s, ORTE progress: yes, Event lib: yes)",
|
||||||
(OPAL_HAVE_POSIX_THREADS ? "posix" : "type unknown"), /* "type unknown" can presumably never happen */
|
"posix",
|
||||||
OMPI_ENABLE_THREAD_MULTIPLE ? "yes" : "no",
|
OMPI_ENABLE_THREAD_MULTIPLE ? "yes" : "no",
|
||||||
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no",
|
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no",
|
||||||
OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
|
OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
|
||||||
#else
|
#else
|
||||||
(void)asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: %s, OPAL support: %s, OMPI progress: %s, Event lib: yes)",
|
(void)asprintf(&threads, "%s (MPI_THREAD_MULTIPLE: %s, OPAL support: %s, OMPI progress: %s, Event lib: yes)",
|
||||||
(OPAL_HAVE_POSIX_THREADS ? "posix" : "type unknown"), /* "type unknown" can presumably never happen */
|
"posix",
|
||||||
OMPI_ENABLE_THREAD_MULTIPLE ? "yes" : "no",
|
OMPI_ENABLE_THREAD_MULTIPLE ? "yes" : "no",
|
||||||
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no",
|
OPAL_ENABLE_MULTI_THREADS ? "yes" : "no",
|
||||||
OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
|
OPAL_ENABLE_PROGRESS_THREADS ? "yes" : "no");
|
||||||
#endif
|
#endif
|
||||||
} else {
|
|
||||||
threads = strdup("no");
|
|
||||||
}
|
|
||||||
|
|
||||||
(void)asprintf(&ft_support, "%s (checkpoint thread: %s)",
|
(void)asprintf(&ft_support, "%s (checkpoint thread: %s)",
|
||||||
OPAL_ENABLE_FT ? "yes" : "no", OPAL_ENABLE_FT_THREAD ? "yes" : "no");
|
OPAL_ENABLE_FT ? "yes" : "no", OPAL_ENABLE_FT_THREAD ? "yes" : "no");
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -62,7 +64,6 @@ void *oldptr;
|
|||||||
void *newptr;
|
void *newptr;
|
||||||
|
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
static void *thread_main(void *arg)
|
static void *thread_main(void *arg)
|
||||||
{
|
{
|
||||||
int rank = (int) (unsigned long) arg;
|
int rank = (int) (unsigned long) arg;
|
||||||
@ -80,15 +81,11 @@ static void *thread_main(void *arg)
|
|||||||
|
|
||||||
return (void *) (unsigned long) (rank + 1000);
|
return (void *) (unsigned long) (rank + 1000);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
int tid;
|
int tid;
|
||||||
pthread_t *th;
|
pthread_t *th;
|
||||||
#endif
|
|
||||||
|
|
||||||
if (argc != 2) {
|
if (argc != 2) {
|
||||||
printf("*** Incorrect number of arguments. Skipping test\n");
|
printf("*** Incorrect number of arguments. Skipping test\n");
|
||||||
@ -252,7 +249,6 @@ int main(int argc, char *argv[])
|
|||||||
valint = 0;
|
valint = 0;
|
||||||
|
|
||||||
/* -- create the thread set -- */
|
/* -- create the thread set -- */
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
th = (pthread_t *) malloc(nthreads * sizeof(pthread_t));
|
th = (pthread_t *) malloc(nthreads * sizeof(pthread_t));
|
||||||
if (!th) {
|
if (!th) {
|
||||||
perror("malloc");
|
perror("malloc");
|
||||||
@ -285,7 +281,6 @@ int main(int argc, char *argv[])
|
|||||||
#endif
|
#endif
|
||||||
opal_atomic_rmb();
|
opal_atomic_rmb();
|
||||||
assert((5 * nthreads * nreps) == valint);
|
assert((5 * nthreads * nreps) == valint);
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -57,9 +59,8 @@ static int
|
|||||||
atomic_math_test_th(int count, int thr_count)
|
atomic_math_test_th(int count, int thr_count)
|
||||||
{
|
{
|
||||||
int value;
|
int value;
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
pthread_t *th;
|
pthread_t *th;
|
||||||
int tid, ret = 0;
|
int tid;
|
||||||
|
|
||||||
th = (pthread_t *) malloc(thr_count * sizeof(pthread_t));
|
th = (pthread_t *) malloc(thr_count * sizeof(pthread_t));
|
||||||
if (!th) {
|
if (!th) {
|
||||||
@ -92,16 +93,6 @@ atomic_math_test_th(int count, int thr_count)
|
|||||||
}
|
}
|
||||||
free(th);
|
free(th);
|
||||||
|
|
||||||
return ret;
|
|
||||||
#else
|
|
||||||
value = count;
|
|
||||||
if (thr_count == 1) {
|
|
||||||
atomic_math_test((void*) &value);
|
|
||||||
} else {
|
|
||||||
return 77;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10,6 +10,8 @@
|
|||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
* Copyright (c) 2004-2005 The Regents of the University of California.
|
||||||
* All rights reserved.
|
* All rights reserved.
|
||||||
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
* Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
||||||
|
* Copyright (c) 2015 Research Organization for Information Science
|
||||||
|
* and Technology (RIST). All rights reserved.
|
||||||
* $COPYRIGHT$
|
* $COPYRIGHT$
|
||||||
*
|
*
|
||||||
* Additional copyrights may follow
|
* Additional copyrights may follow
|
||||||
@ -40,7 +42,6 @@ struct start_info {
|
|||||||
|
|
||||||
static int atomic_spinlock_test(opal_atomic_lock_t *lock, int count, int id);
|
static int atomic_spinlock_test(opal_atomic_lock_t *lock, int count, int id);
|
||||||
|
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
static void* atomic_spinlock_start(void* arg)
|
static void* atomic_spinlock_start(void* arg)
|
||||||
{
|
{
|
||||||
struct start_info *data = (struct start_info*) arg;
|
struct start_info *data = (struct start_info*) arg;
|
||||||
@ -48,13 +49,10 @@ static void* atomic_spinlock_start(void* arg)
|
|||||||
return (void*) (unsigned long) atomic_spinlock_test(data->lock, data->count,
|
return (void*) (unsigned long) atomic_spinlock_test(data->lock, data->count,
|
||||||
data->tid);
|
data->tid);
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
static int
|
static int
|
||||||
atomic_spinlock_test_th(opal_atomic_lock_t *lock, int count, int id, int thr_count)
|
atomic_spinlock_test_th(opal_atomic_lock_t *lock, int count, int id, int thr_count)
|
||||||
{
|
{
|
||||||
#if OPAL_HAVE_POSIX_THREADS
|
|
||||||
pthread_t *th;
|
pthread_t *th;
|
||||||
int tid, ret = 0;
|
int tid, ret = 0;
|
||||||
struct start_info *data;
|
struct start_info *data;
|
||||||
@ -90,9 +88,6 @@ atomic_spinlock_test_th(opal_atomic_lock_t *lock, int count, int id, int thr_cou
|
|||||||
free(th);
|
free(th);
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
#else
|
|
||||||
return 77;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Загрузка…
Ссылка в новой задаче
Block a user