1
1
openmpi/ompi/mca/btl/sm/configure.m4
Nathan Hjelm e627c91227 btl/vader: add support for traditional shared memory.
This commit adds support for placing the send memory segment in a
traditional shared memory segment when XPMEM is not available. The
current default is to reserve 4MB for shared memory on each process.
The latest benchmarks show vader performing better than sm on both
Intel and AMD CPUs.

For large messages vader will now use CMA if it is available (and
XPMEM is not).

cmr=v1.7.5:reviewer=jsquyres

This commit was SVN r30123.
2014-01-06 19:51:44 +00:00

95 строки
3.3 KiB
Bash

# -*- shell-script -*-
#
# Copyright (c) 2009 The University of Tennessee and The University
# of Tennessee Research Foundation. All rights
# reserved.
# Copyright (c) 2009-2010 Cisco Systems, Inc. All rights reserved.
# Copyright (c) 2010-2012 IBM Corporation. All rights reserved.
# $COPYRIGHT$
#
# Additional copyrights may follow
#
# $HEADER$
#
# OMPI_CHECK_KNEM(prefix, [action-if-found], [action-if-not-found])
# --------------------------------------------------------
# check if knem support can be found. sets prefix_{CPPFLAGS,
# LDFLAGS, LIBS} as needed and runs action-if-found if there is
# support, otherwise executes action-if-not-found
AC_DEFUN([OMPI_CHECK_KNEM],[
OPAL_VAR_SCOPE_PUSH([ompi_check_knem_happy ompi_check_knem_$1_save_CPPFLAGS ompi_check_knem_dir])
AC_ARG_WITH([knem],
[AC_HELP_STRING([--with-knem(=DIR)],
[Build knem Linux kernel module support, searching for headers in DIR])])
OMPI_CHECK_WITHDIR([knem], [$with_knem], [include/knem_io.h])
ompi_check_knem_$1_save_CPPFLAGS="$CPPFLAGS"
AS_IF([test "$with_knem" != "no"],
[AS_IF([test ! -z "$with_knem" -a "$with_knem" != "yes"],
[ompi_check_knem_dir="$with_knem"])
_OMPI_CHECK_PACKAGE_HEADER([$1],
[knem_io.h],
[$ompi_check_knem_dir],
[ompi_check_knem_happy="yes"],
[ompi_check_knem_happy="no"])],
[ompi_check_knem_happy="no"])
CPPFLAGS="$CPPFLAGS $$1_CPPFLAGS"
# need at least version 0x0000000b
AS_IF([test "$ompi_check_knem_happy" = "yes"],
[AC_CACHE_CHECK([for knem ABI version 0xb or later],
[ompi_cv_knem_version_ok],
[AC_PREPROC_IFELSE(
[AC_LANG_PROGRAM([
#include <knem_io.h>
],[
#if KNEM_ABI_VERSION < 0xc
#error "Version less than 0xc"
#endif
])],
[ompi_cv_knem_version_ok=yes],
[ompi_cv_knem_version_ok=no])])])
CPPFLAGS="$ompi_check_knem_$1_save_CPPFLAGS"
AS_IF([test "$ompi_check_knem_happy" = "yes" -a "$ompi_cv_knem_version_ok" = "yes"],
[$2],
[AS_IF([test ! -z "$with_knem" -a "$with_knem" != "no"],
[AC_MSG_ERROR([KNEM support requested but not found. Aborting])])
$3])
OPAL_VAR_SCOPE_POP
])dnl
# MCA_btl_sm_CONFIG([action-if-can-compile],
# [action-if-cant-compile])
# ------------------------------------------------
AC_DEFUN([MCA_ompi_btl_sm_CONFIG],[
AC_CONFIG_FILES([ompi/mca/btl/sm/Makefile])
OPAL_VAR_SCOPE_PUSH([btl_sm_cma_happy])
OMPI_CHECK_CMA([btl_sm], [btl_sm_cma_happy=1], [btl_sm_cma_happy=0])
AC_DEFINE_UNQUOTED([OMPI_BTL_SM_HAVE_CMA],
[$btl_sm_cma_happy],
[If CMA support can be enabled])
OPAL_VAR_SCOPE_POP
OPAL_VAR_SCOPE_PUSH([btl_sm_knem_happy])
OMPI_CHECK_KNEM([btl_sm],
[btl_sm_knem_happy=1],
[btl_sm_knem_happy=0])
AC_DEFINE_UNQUOTED([OMPI_BTL_SM_HAVE_KNEM],
[$btl_sm_knem_happy],
[If knem support can be enabled])
[$1]
# substitute in the things needed to build KNEM
AC_SUBST([btl_sm_CPPFLAGS])
OPAL_VAR_SCOPE_POP
])dnl