Skip to content

Commit 2b6f888

Browse files
authored
Merge pull request #6370 from matcabral/fix-ofi-configury
v3.0.x: Fix ofi configury
2 parents 87b7e56 + 4211a5f commit 2b6f888

File tree

12 files changed

+143
-283
lines changed

12 files changed

+143
-283
lines changed

VERSION

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
# Copyright (c) 2008 Sun Microsystems, Inc. All rights reserved.
2-
# Copyright (c) 2008-2011 Cisco Systems, Inc. All rights reserved.
2+
# Copyright (c) 2008-2019 Cisco Systems, Inc. All rights reserved.
33
# Copyright (c) 2011 NVIDIA Corporation. All rights reserved.
44
# Copyright (c) 2013 Mellanox Technologies, Inc.
55
# All rights reserved.
@@ -107,7 +107,6 @@ libmca_orte_common_alps_so_version=40:0:0
107107

108108
# OPAL layer
109109
libmca_opal_common_cuda_so_version=40:0:0
110-
libmca_opal_common_libfabric_so_version=40:0:0
111110
libmca_opal_common_sm_so_version=40:0:0
112111
libmca_opal_common_ugni_so_version=40:0:0
113112
libmca_opal_common_verbs_so_version=41:0:1

config/opal_check_libfabric.m4

Lines changed: 108 additions & 78 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
dnl -*- shell-script -*-
22
dnl
3-
dnl Copyright (c) 2015-2016 Cisco Systems, Inc. All rights reserved.
4-
dnl Copyright (c) 2016 Los Alamos National Security, LLC. All rights
3+
dnl Copyright (c) 2015-2019 Cisco Systems, Inc. All rights reserved.
4+
dnl Copyright (c) 2016-2017 Los Alamos National Security, LLC. All rights
55
dnl reserved.
66
dnl $COPYRIGHT$
77
dnl
@@ -10,86 +10,116 @@ dnl
1010
dnl $HEADER$
1111
dnl
1212

13+
dnl
14+
dnl _OPAL_CHECK_OFI
15+
dnl --------------------------------------------------------
16+
dnl Do the real work of checking for OFI libfabric.
17+
dnl Upon return:
18+
dnl
19+
dnl - opal_ofi_happy: will be "yes" or "no"
20+
dnl - opal_ofi_{CPPFLAGS|LDFLAGS|LIBS} will be loaded (if relevant)
21+
dnl
22+
AC_DEFUN([_OPAL_CHECK_OFI],[
23+
# Add --with options
24+
AC_ARG_WITH([libfabric],
25+
[AC_HELP_STRING([--with-libfabric=DIR],
26+
[Deprecated synonym for --with-ofi])])
27+
AC_ARG_WITH([libfabric-libdir],
28+
[AC_HELP_STRING([--with-libfabric-libdir=DIR],
29+
[Deprecated synonym for --with-ofi-libdir])])
1330

14-
# OPAL_CHECK_LIBFABRIC(prefix, [action-if-found], [action-if-not-found]
15-
# --------------------------------------------------------
16-
# Check if libfabric support can be found.
17-
#
18-
# Sets prefix_{CPPFLAGS, LDFLAGs, LIBS} as needed and runs
19-
# action-if-found if there is support; otherwise executes
20-
# action-if-not-found.
21-
#
22-
AC_DEFUN([OPAL_CHECK_LIBFABRIC],[
23-
if test -z "$opal_check_libfabric_happy" ; then
24-
OPAL_VAR_SCOPE_PUSH([opal_check_libfabric_$1_save_CPPFLAGS opal_check_libfabric_$1_save_LDFLAGS opal_check_libfabric_$1_save_LIBS])
25-
26-
# Add --with options
27-
AC_ARG_WITH([libfabric],
28-
[AC_HELP_STRING([--with-libfabric=DIR],
29-
[Specify location of libfabric installation, adding DIR/include to the default search location for libfabric headers, and DIR/lib or DIR/lib64 to the default search location for libfabric libraries. Error if libfabric support cannot be found.])])
30-
AC_ARG_WITH([libfabric-libdir],
31-
[AC_HELP_STRING([--with-libfabric-libdir=DIR],
32-
[Search for libfabric libraries in DIR])])
33-
34-
# Sanity check the --with values
35-
OPAL_CHECK_WITHDIR([libfabric], [$with_libfabric],
36-
[include/rdma/fabric.h])
37-
OPAL_CHECK_WITHDIR([libfabric-libdir], [$with_libfabric_libdir],
38-
[libfabric.*])
39-
40-
opal_check_libfabric_$1_save_CPPFLAGS=$CPPFLAGS
41-
opal_check_libfabric_$1_save_LDFLAGS=$LDFLAGS
42-
opal_check_libfabric_$1_save_LIBS=$LIBS
43-
44-
opal_check_libfabric_happy=yes
45-
AS_IF([test "$with_libfabric" = "no"],
46-
[opal_check_libfabric_happy=no])
47-
48-
AS_IF([test $opal_check_libfabric_happy = yes],
49-
[AC_MSG_CHECKING([looking for libfabric in])
50-
AS_IF([test "$with_libfabric" != "yes"],
51-
[opal_libfabric_dir=$with_libfabric
52-
AC_MSG_RESULT([($opal_libfabric_dir)])],
53-
[AC_MSG_RESULT([(default search paths)])])
54-
AS_IF([test ! -z "$with_libfabric_libdir" && \
55-
test "$with_libfabric_libdir" != "yes"],
56-
[opal_libfabric_libdir=$with_libfabric_libdir])
57-
])
58-
59-
AS_IF([test $opal_check_libfabric_happy = yes],
60-
[OPAL_CHECK_PACKAGE([opal_check_libfabric],
61-
[rdma/fabric.h],
62-
[fabric],
63-
[fi_getinfo],
64-
[],
65-
[$opal_libfabric_dir],
66-
[$opal_libfabric_libdir],
67-
[],
68-
[opal_check_libfabric_happy=no])])
69-
70-
CPPFLAGS=$opal_check_libfabric_$1_save_CPPFLAGS
71-
LDFLAGS=$opal_check_libfabric_$1_save_LDFLAGS
72-
LIBS=$opal_check_libfabric_$1_save_LIBS
73-
74-
OPAL_SUMMARY_ADD([[Transports]],[[OpenFabrics Libfabric]],[$1],[$opal_check_libfabric_happy])
75-
76-
OPAL_VAR_SCOPE_POP
77-
fi
31+
AC_ARG_WITH([ofi],
32+
[AC_HELP_STRING([--with-ofi=DIR],
33+
[Specify location of OFI libfabric installation, adding DIR/include to the default search location for libfabric headers, and DIR/lib or DIR/lib64 to the default search location for libfabric libraries. Error if libfabric support cannot be found.])])
34+
35+
AC_ARG_WITH([ofi-libdir],
36+
[AC_HELP_STRING([--with-ofi-libdir=DIR],
37+
[Search for OFI libfabric libraries in DIR])])
7838

79-
if test $opal_check_libfabric_happy = yes ; then
80-
$1_CPPFLAGS="[$]$1_CPPFLAGS $opal_check_libfabric_CPPFLAGS"
81-
$1_LIBS="[$]$1_LIBS $opal_check_libfabric_LIBS"
82-
$1_LDFLAGS="[$]$1_LDFLAGS $opal_check_libfabric_LDFLAGS"
39+
if test "$with_ofi" = ""; then
40+
with_ofi=$with_libfabric
41+
fi
8342

84-
AC_SUBST($1_CPPFLAGS)
85-
AC_SUBST($1_LDFLAGS)
86-
AC_SUBST($1_LIBS)
43+
if test "$with_ofi_libdir" = ""; then
44+
with_ofi_libdir=$with_libfabric_libdir
8745
fi
8846

89-
AS_IF([test $opal_check_libfabric_happy = yes],
90-
[$2],
91-
[AS_IF([test -n "$with_libfabric" && test "$with_libfabric" != "no"],
92-
[AC_MSG_WARN([libfabric support requested (via --with-libfabric), but not found.])
47+
# Sanity check the --with values
48+
OPAL_CHECK_WITHDIR([ofi], [$with_ofi],
49+
[include/rdma/fabric.h])
50+
OPAL_CHECK_WITHDIR([ofi-libdir], [$with_ofi_libdir],
51+
[libfabric.*])
52+
53+
OPAL_VAR_SCOPE_PUSH([opal_check_ofi_save_CPPFLAGS opal_check_ofi_save_LDFLAGS opal_check_ofi_save_LIBS])
54+
opal_check_ofi_save_CPPFLAGS=$CPPFLAGS
55+
opal_check_ofi_save_LDFLAGS=$LDFLAGS
56+
opal_check_ofi_save_LIBS=$LIBS
57+
58+
opal_ofi_happy=yes
59+
AS_IF([test "$with_ofi" = "no"],
60+
[opal_ofi_happy=no])
61+
62+
AS_IF([test $opal_ofi_happy = yes],
63+
[AC_MSG_CHECKING([looking for OFI libfabric in])
64+
AS_IF([test "$with_ofi" != "yes"],
65+
[opal_ofi_dir=$with_ofi
66+
AC_MSG_RESULT([($opal_ofi_dir)])],
67+
[AC_MSG_RESULT([(default search paths)])])
68+
AS_IF([test ! -z "$with_ofi_libdir" && \
69+
test "$with_ofi_libdir" != "yes"],
70+
[opal_ofi_libdir=$with_ofi_libdir])
71+
])
72+
73+
AS_IF([test $opal_ofi_happy = yes],
74+
[OPAL_CHECK_PACKAGE([opal_ofi],
75+
[rdma/fabric.h],
76+
[fabric],
77+
[fi_getinfo],
78+
[],
79+
[$opal_ofi_dir],
80+
[$opal_ofi_libdir],
81+
[],
82+
[opal_ofi_happy=no])])
83+
84+
CPPFLAGS=$opal_check_ofi_save_CPPFLAGS
85+
LDFLAGS=$opal_check_ofi_save_LDFLAGS
86+
LIBS=$opal_check_ofi_save_LIBS
87+
88+
AC_SUBST([opal_ofi_CPPFLAGS])
89+
AC_SUBST([opal_ofi_LDFLAGS])
90+
AC_SUBST([opal_ofi_LIBS])
91+
92+
OPAL_SUMMARY_ADD([[Transports]],[[OpenFabrics OFI Libfabric]],[],[$opal_ofi_happy])
93+
94+
OPAL_VAR_SCOPE_POP
95+
96+
AS_IF([test $opal_ofi_happy = no],
97+
[AS_IF([test -n "$with_ofi" && test "$with_ofi" != "no"],
98+
[AC_MSG_WARN([OFI libfabric support requested (via --with-ofi or --with-libfabric), but not found.])
9399
AC_MSG_ERROR([Cannot continue.])])
94-
$3])
100+
])
95101
])dnl
102+
103+
104+
dnl
105+
dnl OPAL_CHECK_OFI
106+
dnl --------------------------------------------------------
107+
dnl Check to see if OFI libfabric is available.
108+
dnl
109+
dnl This is a simple wrapper around _OPAL_CHECK_OFI that just
110+
dnl ensures to only run the checks once. We do not use AC_REQUIRE
111+
dnl because that re-orders the texts and makes ordering in stdout
112+
dnl quite confusing / difficult to grok.
113+
dnl
114+
AC_DEFUN([OPAL_CHECK_OFI],[
115+
# Check for OFI libfabric. Note that $opal_ofi_happy is used in
116+
# other configure.m4's to know if OFI/libfabric configured
117+
# successfully. We only need to run the back-end checks once, but
118+
# at least emit a "checking..." statement each subsequent time
119+
# this macro is invoked so that configure's stdout has
120+
# sensible/logical output.
121+
AS_IF([test -z "$opal_ofi_happy"],
122+
[_OPAL_CHECK_OFI],
123+
[AC_MSG_CHECKING([if OFI libfabric is available])
124+
AC_MSG_RESULT([$opal_ofi_happy])])
125+
])

configure.ac

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
# University of Stuttgart. All rights reserved.
1111
# Copyright (c) 2004-2005 The Regents of the University of California.
1212
# All rights reserved.
13-
# Copyright (c) 2006-2016 Cisco Systems, Inc. All rights reserved.
13+
# Copyright (c) 2006-2019 Cisco Systems, Inc. All rights reserved
1414
# Copyright (c) 2006-2008 Sun Microsystems, Inc. All rights reserved.
1515
# Copyright (c) 2006-2011 Los Alamos National Security, LLC. All rights
1616
# reserved.
@@ -152,7 +152,6 @@ AC_SUBST(libopen_pal_so_version)
152152
# transparently by adding some intelligence in autogen.pl
153153
# and/or opal_mca.m4, but I don't have the cycles to do this
154154
# right now.
155-
AC_SUBST(libmca_opal_common_libfabric_so_version)
156155
AC_SUBST(libmca_opal_common_cuda_so_version)
157156
AC_SUBST(libmca_opal_common_sm_so_version)
158157
AC_SUBST(libmca_opal_common_ugni_so_version)

ompi/mca/mtl/ofi/Makefile.am

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,12 @@
11
#
22
# Copyright (c) 2013-2015 Intel, Inc. All rights reserved
33
#
4-
# Copyright (c) 2014-2015 Cisco Systems, Inc. All rights reserved.
4+
# Copyright (c) 2014-2019 Cisco Systems, Inc. All rights reserved
5+
# Copyright (c) 2017 Los Alamos National Security, LLC. All rights
6+
# reserved.
57
# Copyright (c) 2017 IBM Corporation. All rights reserved.
8+
# Copyright (c) 2019 Research Organization for Information Science
9+
# and Technology (RIST). All rights reserved.
610
# $COPYRIGHT$
711
#
812
# Additional copyrights may follow
@@ -12,7 +16,7 @@
1216

1317
EXTRA_DIST = post_configure.sh
1418

15-
AM_CPPFLAGS = $(ompi_mtl_ofi_CPPFLAGS) $(opal_common_libfabric_CPPFLAGS)
19+
AM_CPPFLAGS = $(opal_ofi_CPPFLAGS)
1620

1721
dist_ompidata_DATA = help-mtl-ofi.txt
1822

@@ -42,15 +46,14 @@ mcacomponentdir = $(ompilibdir)
4246
mcacomponent_LTLIBRARIES = $(component_install)
4347
mca_mtl_ofi_la_SOURCES = $(mtl_ofi_sources)
4448
mca_mtl_ofi_la_LDFLAGS = \
45-
$(ompi_mtl_ofi_LDFLAGS) \
49+
$(opal_ofi_LDFLAGS) \
4650
-module -avoid-version
4751
mca_mtl_ofi_la_LIBADD = $(top_builddir)/ompi/lib@[email protected] \
48-
$(ompi_mtl_ofi_LIBS) \
49-
$(OPAL_TOP_BUILDDIR)/opal/mca/common/libfabric/lib@OPAL_LIB_PREFIX@mca_common_libfabric.la
52+
$(opal_ofi_LIBS)
5053

5154
noinst_LTLIBRARIES = $(component_noinst)
5255
libmca_mtl_ofi_la_SOURCES = $(mtl_ofi_sources)
5356
libmca_mtl_ofi_la_LDFLAGS = \
54-
$(ompi_mtl_ofi_LDFLAGS) \
57+
$(opal_ofi_LDFLAGS) \
5558
-module -avoid-version
56-
libmca_mtl_ofi_la_LIBADD = $(ompi_mtl_ofi_LIBS)
59+
libmca_mtl_ofi_la_LIBADD = $(opal_ofi_LIBS)

ompi/mca/mtl/ofi/configure.m4

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
#
33
# Copyright (c) 2013-2014 Intel, Inc. All rights reserved
44
#
5-
# Copyright (c) 2014-2015 Cisco Systems, Inc. All rights reserved.
5+
# Copyright (c) 2014-2019 Cisco Systems, Inc. All rights reserved
6+
# Copyright (c) 2017 Los Alamos National Security, LLC. All rights
7+
# reserved.
68
# $COPYRIGHT$
79
#
810
# Additional copyrights may follow
@@ -23,10 +25,10 @@ AC_DEFUN([MCA_ompi_mtl_ofi_POST_CONFIG], [
2325
AC_DEFUN([MCA_ompi_mtl_ofi_CONFIG],[
2426
AC_CONFIG_FILES([ompi/mca/mtl/ofi/Makefile])
2527

26-
# ensure we already ran the common libfabric config
27-
AC_REQUIRE([MCA_opal_common_libfabric_CONFIG])
28+
# Check for OFI
29+
OPAL_CHECK_OFI
2830

29-
AS_IF([test "$opal_common_libfabric_happy" = "yes"],
31+
AS_IF([test "$opal_ofi_happy" = "yes"],
3032
[$1],
3133
[$2])
3234
])dnl

opal/mca/btl/usnic/Makefile.am

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
# All rights reserved.
1212
# Copyright (c) 2006 Sandia National Laboratories. All rights
1313
# reserved.
14-
# Copyright (c) 2010-2015 Cisco Systems, Inc. All rights reserved.
14+
# Copyright (c) 2010-2019 Cisco Systems, Inc. All rights reserved
1515
# Copyright (c) 2015 Intel, Inc. All rights reserved.
1616
# Copyright (c) 2016-2017 IBM Corporation. All rights reserved.
1717
# $COPYRIGHT$
@@ -21,7 +21,7 @@
2121
# $HEADER$
2222
#
2323

24-
AM_CPPFLAGS = -DBTL_IN_OPAL=1 $(opal_common_libfabric_CPPFLAGS) -DOMPI_LIBMPI_NAME=\"$(OMPI_LIBMPI_NAME)\"
24+
AM_CPPFLAGS = -DBTL_IN_OPAL=1 $(opal_ofi_CPPFLAGS) -DOMPI_LIBMPI_NAME=\"$(OMPI_LIBMPI_NAME)\"
2525

2626
EXTRA_DIST = README.txt README.test
2727

@@ -89,13 +89,18 @@ mcacomponent_LTLIBRARIES = $(component)
8989
mca_btl_usnic_la_SOURCES = $(component_sources)
9090
mca_btl_usnic_la_LDFLAGS = \
9191
$(opal_btl_usnic_LDFLAGS) \
92+
$(opal_ofi_LDFLAGS) \
9293
-module -avoid-version
9394
mca_btl_usnic_la_LIBADD = $(top_builddir)/opal/lib@[email protected] \
94-
$(OPAL_TOP_BUILDDIR)/opal/mca/common/libfabric/lib@OPAL_LIB_PREFIX@mca_common_libfabric.la
95+
$(opal_ofi_LIBS)
9596

9697
noinst_LTLIBRARIES = $(lib)
9798
libmca_btl_usnic_la_SOURCES = $(lib_sources)
98-
libmca_btl_usnic_la_LDFLAGS = -module -avoid-version $(opal_btl_usnic_LDFLAGS)
99+
libmca_btl_usnic_la_LDFLAGS = \
100+
$(opal_btl_usnic_LDFLAGS) \
101+
$(opal_ofi_LDFLAGS) \
102+
-module -avoid-version
103+
libmca_btl_usnic_la_LIBADD = $(opal_ofi_LIBS)
99104

100105
if OPAL_BTL_USNIC_BUILD_UNIT_TESTS
101106
usnic_btl_run_tests_CPPFLAGS = \

opal/mca/btl/usnic/configure.m4

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,9 @@
1212
# All rights reserved.
1313
# Copyright (c) 2006 Sandia National Laboratories. All rights
1414
# reserved.
15-
# Copyright (c) 2010-2015 Cisco Systems, Inc. All rights reserved.
15+
# Copyright (c) 2010-2019 Cisco Systems, Inc. All rights reserved
16+
# Copyright (c) 2017 Los Alamos National Security, LLC. All rights
17+
# reserved.
1618
# $COPYRIGHT$
1719
#
1820
# Additional copyrights may follow
@@ -93,21 +95,17 @@ AC_DEFUN([_OPAL_BTL_USNIC_DO_CONFIG],[
9395
AC_MSG_RESULT([$opal_btl_usnic_happy])
9496
])
9597

96-
# The usnic BTL requires libfabric support.
9798
AS_IF([test "$opal_btl_usnic_happy" = "yes"],
98-
[AC_MSG_CHECKING([whether libfabric support is available])
99-
AS_IF([test "$opal_common_libfabric_happy" = "yes"],
100-
[opal_btl_usnic_happy=yes],
101-
[opal_btl_usnic_happy=no])
102-
AC_MSG_RESULT([$opal_btl_usnic_happy])
103-
])
99+
[ # The usnic BTL requires OFI libfabric support
100+
OPAL_CHECK_OFI
101+
opal_btl_usnic_happy=$opal_ofi_happy])
104102

105103
# The usnic BTL requires at least libfabric v1.1 (there was a
106104
# critical bug in libfabric v1.0).
107105
AS_IF([test "$opal_btl_usnic_happy" = "yes"],
108106
[AC_MSG_CHECKING([whether libfabric is >= v1.1])
109107
opal_btl_usnic_CPPFLAGS_save=$CPPFLAGS
110-
CPPFLAGS="$opal_common_libfabric_CPPFLAGS $CPPFLAGS"
108+
CPPFLAGS="$opal_ofi_CPPFLAGS $CPPFLAGS"
111109
AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <rdma/fabric.h>]],
112110
[[
113111
#if !defined(FI_MAJOR_VERSION)
@@ -125,7 +123,7 @@ AC_DEFUN([_OPAL_BTL_USNIC_DO_CONFIG],[
125123
# Make sure we can find the libfabric usnic extensions header
126124
AS_IF([test "$opal_btl_usnic_happy" = "yes" ],
127125
[opal_btl_usnic_CPPFLAGS_save=$CPPFLAGS
128-
CPPFLAGS="$opal_common_libfabric_CPPFLAGS $CPPFLAGS"
126+
CPPFLAGS="$opal_ofi_CPPFLAGS $CPPFLAGS"
129127
AC_CHECK_HEADER([rdma/fi_ext_usnic.h],
130128
[],
131129
[opal_btl_usnic_happy=no])

0 commit comments

Comments
 (0)