Skip to content

Commit 9557fa0

Browse files
committed
Resolve merge conflicts
Signed-off-by: Mikhail Kurnosov <mkurnosov@gmail.com>
2 parents dfe203e + 5f1c940 commit 9557fa0

File tree

1,457 files changed

+7509
-18226
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,457 files changed

+7509
-18226
lines changed

LICENSE

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ Copyright (c) 2014-2015 Hewlett-Packard Development Company, LP. All
5353
rights reserved.
5454
Copyright (c) 2013-2017 Research Organization for Information Science (RIST).
5555
All rights reserved.
56-
Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights
56+
Copyright (c) 2017-2018 Amazon.com, Inc. or its affiliates. All Rights
5757
reserved.
5858
Copyright (c) 2018 DataDirect Networks. All rights reserved.
5959

NEWS

Lines changed: 47 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,53 @@ Master (not on release branches yet)
8080
Currently, this means the Open SHMEM layer will only build if
8181
a MXM or UCX library is found.
8282

83+
3.1.2 -- August, 2018
84+
------------------------
85+
86+
- A subtle race condition bug was discovered in the "vader" BTL
87+
(shared memory communications) that, in rare instances, can cause
88+
MPI processes to crash or incorrectly classify (or effectively drop)
89+
an MPI message sent via shared memory. If you are using the "ob1"
90+
PML with "vader" for shared memory communication (note that vader is
91+
the default for shared memory communication with ob1), you need to
92+
upgrade to v3.1.2 or later to fix this issue. You may also upgrade
93+
to the following versions to fix this issue:
94+
- Open MPI v2.1.5 (expected end of August, 2018) or later in the
95+
v2.1.x series
96+
- Open MPI v3.0.1 (released March, 2018) or later in the v3.0.x
97+
series
98+
- Assorted Portals 4.0 bug fixes.
99+
- Fix for possible data corruption in MPI_BSEND.
100+
- Move shared memory file for vader btl into /dev/shm on Linux.
101+
- Fix for MPI_ISCATTER/MPI_ISCATTERV Fortran interfaces with MPI_IN_PLACE.
102+
- Upgrade PMIx to v2.1.3.
103+
- Numerous One-sided bug fixes.
104+
- Fix for race condition in uGNI BTL.
105+
- Improve handling of large number of interfaces with TCP BTL.
106+
- Numerous UCX bug fixes.
107+
108+
3.1.1 -- June, 2018
109+
-------------------
110+
111+
- Fix potential hang in UCX PML during MPI_FINALIZE
112+
- Update internal PMIx to v2.1.2rc2 to fix forward version compatibility.
113+
- Add new MCA parameter osc_sm_backing_store to allow users to specify
114+
where in the filesystem the backing file for the shared memory
115+
one-sided component should live. Defaults to /dev/shm on Linux.
116+
- Fix potential hang on non-x86 platforms when using builds with
117+
optimization flags turned off.
118+
- Disable osc/pt2pt when using MPI_THREAD_MULTIPLE due to numerous
119+
race conditions in the component.
120+
- Fix dummy variable names for the mpi and mpi_f08 Fortran bindings to
121+
match the MPI standard. This may break applications which use
122+
name-based parameters in Fortran which used our internal names
123+
rather than those documented in the MPI standard.
124+
- Revamp Java detection to properly handle new Java versions which do
125+
not provide a javah wrapper.
126+
- Fix RMA function signatures for use-mpi-f08 bindings to have the
127+
asynchonous property on all buffers.
128+
- Improved configure logic for finding the UCX library.
129+
83130
3.1.0 -- May, 2018
84131
------------------
85132

README

Lines changed: 21 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Copyright (c) 2004-2008 High Performance Computing Center Stuttgart,
88
University of Stuttgart. All rights reserved.
99
Copyright (c) 2004-2007 The Regents of the University of California.
1010
All rights reserved.
11-
Copyright (c) 2006-2017 Cisco Systems, Inc. All rights reserved.
11+
Copyright (c) 2006-2018 Cisco Systems, Inc. All rights reserved.
1212
Copyright (c) 2006-2011 Mellanox Technologies. All rights reserved.
1313
Copyright (c) 2006-2012 Oracle and/or its affiliates. All rights reserved.
1414
Copyright (c) 2007 Myricom, Inc. All rights reserved.
@@ -605,7 +605,6 @@ Network Support
605605
- Loopback (send-to-self)
606606
- Shared memory
607607
- TCP
608-
- Intel Phi SCIF
609608
- SMCUDA
610609
- Cisco usNIC
611610
- uGNI (Cray Gemini, Aries)
@@ -768,6 +767,26 @@ Open MPI is unable to find relevant support for <foo>, configure will
768767
assume that it was unable to provide a feature that was specifically
769768
requested and will abort so that a human can resolve out the issue.
770769

770+
Additionally, if a search directory is specified in the form
771+
--with-<foo>=<dir>, Open MPI will:
772+
773+
1. Search for <foo>'s header files in <dir>/include.
774+
2. Search for <foo>'s library files:
775+
2a. If --with-<foo>-libdir=<libdir> was specified, search in
776+
<libdir>.
777+
2b. Otherwise, search in <dir>/lib, and if they are not found
778+
there, search again in <dir>/lib64.
779+
3. If both the relevant header files and libraries are found:
780+
3a. Open MPI will build support for <foo>.
781+
3b. If the root path where the <foo> libraries are found is neither
782+
"/usr" nor "/usr/local", Open MPI will compile itself with
783+
RPATH flags pointing to the directory where <foo>'s libraries
784+
are located. Open MPI does not RPATH /usr/lib[64] and
785+
/usr/local/lib[64] because many systems already search these
786+
directories for run-time libraries by default; adding RPATH for
787+
them could have unintended consequences for the search path
788+
ordering.
789+
771790
INSTALLATION OPTIONS
772791

773792
--prefix=<directory>
@@ -1000,9 +1019,6 @@ NETWORKING SUPPORT / OPTIONS
10001019
covers most cases. This option is only needed for special
10011020
configurations.
10021021

1003-
--with-scif=<dir>
1004-
Look in directory for Intel SCIF support libraries
1005-
10061022
--with-verbs=<directory>
10071023
Specify the directory where the verbs (also known as OpenFabrics
10081024
verbs, or Linux verbs, and previously known as OpenIB) libraries and

autogen.pl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@
6161
my $exclude_list;
6262

6363
# Minimum versions
64-
my $ompi_automake_version = "1.12.2";
64+
my $ompi_automake_version = "1.13.4";
6565
my $ompi_autoconf_version = "2.69";
6666
my $ompi_libtool_version = "2.4.2";
6767

config/ompi_config_files.m4

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# -*- shell-script -*-
22
#
33
# Copyright (c) 2009-2017 Cisco Systems, Inc. All rights reserved
4-
# Copyright (c) 2017 Research Organization for Information Science
4+
# Copyright (c) 2017-2018 Research Organization for Information Science
55
# and Technology (RIST). All rights reserved.
66
# Copyright (c) 2018 Los Alamos National Security, LLC. All rights
77
# reserved.
@@ -38,6 +38,7 @@ AC_DEFUN([OMPI_CONFIG_FILES],[
3838
ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-file-interfaces.h
3939
ompi/mpi/fortran/use-mpi-ignore-tkr/mpi-ignore-tkr-removed-interfaces.h
4040
ompi/mpi/fortran/use-mpi-f08/Makefile
41+
ompi/mpi/fortran/use-mpi-f08/bindings/Makefile
4142
ompi/mpi/fortran/use-mpi-f08/mod/Makefile
4243
ompi/mpi/fortran/mpiext-use-mpi/Makefile
4344
ompi/mpi/fortran/mpiext-use-mpi-f08/Makefile

config/opal_check_pmi.m4

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -347,7 +347,8 @@ AC_DEFUN([OPAL_CHECK_PMIX],[
347347
], [])],
348348
[AC_MSG_RESULT([found])
349349
opal_external_pmix_version=4x
350-
opal_external_pmix_version_found=1],
350+
opal_external_pmix_version_found=1
351+
opal_external_pmix_happy=yes],
351352
[AC_MSG_RESULT([not found])])])
352353
353354
AS_IF([test "$opal_external_pmix_version_found" = "0"],
@@ -437,9 +438,11 @@ AC_DEFUN([OPAL_CHECK_PMIX],[
437438
[Whether the external PMIx library is v1])
438439
AM_CONDITIONAL([OPAL_WANT_PRUN], [test "$opal_prun_happy" = "yes"])
439440
440-
AS_IF([test "$opal_external_pmix_version" = "1x"],
441-
[OPAL_SUMMARY_ADD([[Miscellaneous]],[[PMIx support]], [opal_pmix], [1.2.x: WARNING - DYNAMIC OPS NOT SUPPORTED])],
442-
[OPAL_SUMMARY_ADD([[Miscellaneous]],[[PMIx support]], [opal_pmix], [$opal_external_pmix_version])])
441+
AS_IF([test "$opal_external_pmix_happy" = "yes"],
442+
[AS_IF([test "$opal_external_pmix_version" = "1x"],
443+
[OPAL_SUMMARY_ADD([[Miscellaneous]],[[PMIx support]], [opal_pmix], [External (1.2.5) WARNING - DYNAMIC OPS NOT SUPPORTED])],
444+
[OPAL_SUMMARY_ADD([[Miscellaneous]],[[PMIx support]], [opal_pmix], [External ($opal_external_pmix_version)])])],
445+
[OPAL_SUMMARY_ADD([[Miscellaneous]], [[PMIx support]], [opal_pmix], [Internal])])
443446
444447
OPAL_VAR_SCOPE_POP
445448
])

config/opal_config_asm.m4

Lines changed: 136 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ dnl Copyright (c) 2008-2018 Cisco Systems, Inc. All rights reserved.
1313
dnl Copyright (c) 2010 Oracle and/or its affiliates. All rights reserved.
1414
dnl Copyright (c) 2015-2017 Research Organization for Information Science
1515
dnl and Technology (RIST). All rights reserved.
16-
dnl Copyright (c) 2014-2017 Los Alamos National Security, LLC. All rights
16+
dnl Copyright (c) 2014-2018 Los Alamos National Security, LLC. All rights
1717
dnl reserved.
1818
dnl Copyright (c) 2017 Amazon.com, Inc. or its affiliates. All Rights
1919
dnl reserved.
@@ -122,6 +122,57 @@ int main(int argc, char** argv)
122122
}
123123
]])
124124

125+
dnl This is a C test to see if 128-bit __atomic_compare_exchange_n()
126+
dnl actually works (e.g., it compiles and links successfully on
127+
dnl ARM64+clang, but returns incorrect answers as of August 2018).
128+
AC_DEFUN([OPAL_ATOMIC_COMPARE_EXCHANGE_STRONG_TEST_SOURCE],[[
129+
#include <stdint.h>
130+
#include <stdbool.h>
131+
#include <stdlib.h>
132+
#include <stdatomic.h>
133+
134+
typedef union {
135+
uint64_t fake@<:@2@:>@;
136+
_Atomic __int128 real;
137+
} ompi128;
138+
139+
static void test1(void)
140+
{
141+
// As of Aug 2018, we could not figure out a way to assign 128-bit
142+
// constants -- the compilers would not accept it. So use a fake
143+
// union to assign 2 uin64_t's to make a single __int128.
144+
ompi128 ptr = { .fake = { 0xFFEEDDCCBBAA0099, 0x8877665544332211 }};
145+
ompi128 expected = { .fake = { 0x11EEDDCCBBAA0099, 0x88776655443322FF }};
146+
ompi128 desired = { .fake = { 0x1122DDCCBBAA0099, 0x887766554433EEFF }};
147+
bool r = atomic_compare_exchange_strong (&ptr.real, &expected.real,
148+
desired.real, true,
149+
atomic_relaxed, atomic_relaxed);
150+
if ( !(r == false && ptr.real == expected.real)) {
151+
exit(1);
152+
}
153+
}
154+
155+
static void test2(void)
156+
{
157+
ompi128 ptr = { .fake = { 0xFFEEDDCCBBAA0099, 0x8877665544332211 }};
158+
ompi128 expected = ptr;
159+
ompi128 desired = { .fake = { 0x1122DDCCBBAA0099, 0x887766554433EEFF }};
160+
bool r = atomic_compare_exchange_strong (&ptr.real, &expected.real,
161+
desired.real, true,
162+
atomic_relaxed, atomic_relaxed);
163+
if (!(r == true && ptr.real == desired.real)) {
164+
exit(2);
165+
}
166+
}
167+
168+
int main(int argc, char** argv)
169+
{
170+
test1();
171+
test2();
172+
return 0;
173+
}
174+
]])
175+
125176
dnl ------------------------------------------------------------------
126177

127178
dnl
@@ -329,6 +380,71 @@ __atomic_add_fetch(&tmp64, 1, __ATOMIC_RELAXED);],
329380
OPAL_CHECK_GCC_BUILTIN_CSWAP_INT128
330381
])
331382

383+
AC_DEFUN([OPAL_CHECK_C11_CSWAP_INT128], [
384+
OPAL_VAR_SCOPE_PUSH([atomic_compare_exchange_result atomic_compare_exchange_CFLAGS_save atomic_compare_exchange_LIBS_save])
385+
386+
atomic_compare_exchange_CFLAGS_save=$CFLAGS
387+
atomic_compare_exchange_LIBS_save=$LIBS
388+
389+
# Do we have C11 atomics on 128-bit integers?
390+
# Use a special macro because we need to check with a few different
391+
# CFLAGS/LIBS.
392+
OPAL_ASM_CHECK_ATOMIC_FUNC([atomic_compare_exchange_strong_16],
393+
[AC_LANG_SOURCE(OPAL_ATOMIC_COMPARE_EXCHANGE_STRONG_TEST_SOURCE)],
394+
[atomic_compare_exchange_result=1],
395+
[atomic_compare_exchange_result=0])
396+
397+
# If we have it and it works, check to make sure it is always lock
398+
# free.
399+
AS_IF([test $atomic_compare_exchange_result -eq 1],
400+
[AC_MSG_CHECKING([if C11 __int128 atomic compare-and-swap is always lock-free])
401+
AC_RUN_IFELSE([AC_LANG_PROGRAM([#include <stdatomic.h>], [_Atomic __int128_t x; if (!atomic_is_lock_free(&x)) { return 1; }])],
402+
[AC_MSG_RESULT([yes])],
403+
[atomic_compare_exchange_result=0
404+
# If this test fails, need to reset CFLAGS/LIBS (the
405+
# above tests atomically set CFLAGS/LIBS or not; this
406+
# test is running after the fact, so we have to undo
407+
# the side-effects of setting CFLAGS/LIBS if the above
408+
# tests passed).
409+
CFLAGS=$atomic_compare_exchange_CFLAGS_save
410+
LIBS=$atomic_compare_exchange_LIBS_save
411+
AC_MSG_RESULT([no])],
412+
[AC_MSG_RESULT([cannot test -- assume yes (cross compiling)])])
413+
])
414+
415+
AC_DEFINE_UNQUOTED([OPAL_HAVE_C11_CSWAP_INT128],
416+
[$atomic_compare_exchange_result],
417+
[Whether C11 atomic compare swap is both supported and lock-free on 128-bit values])
418+
419+
dnl If we could not find decent support for 128-bits atomic let's
420+
dnl try the GCC _sync
421+
AS_IF([test $atomic_compare_exchange_result -eq 0],
422+
[OPAL_CHECK_SYNC_BUILTIN_CSWAP_INT128])
423+
424+
OPAL_VAR_SCOPE_POP
425+
])
426+
427+
AC_DEFUN([OPAL_CHECK_GCC_ATOMIC_BUILTINS], [
428+
AC_MSG_CHECKING([for __atomic builtin atomics])
429+
430+
AC_TRY_LINK([
431+
#include <stdint.h>
432+
uint32_t tmp, old = 0;
433+
uint64_t tmp64, old64 = 0;], [
434+
__atomic_thread_fence(__ATOMIC_SEQ_CST);
435+
__atomic_compare_exchange_n(&tmp, &old, 1, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
436+
__atomic_add_fetch(&tmp, 1, __ATOMIC_RELAXED);
437+
__atomic_compare_exchange_n(&tmp64, &old64, 1, 0, __ATOMIC_RELAXED, __ATOMIC_RELAXED);
438+
__atomic_add_fetch(&tmp64, 1, __ATOMIC_RELAXED);],
439+
[AC_MSG_RESULT([yes])
440+
$1],
441+
[AC_MSG_RESULT([no])
442+
$2])
443+
444+
# Check for 128-bit support
445+
OPAL_CHECK_GCC_BUILTIN_CSWAP_INT128
446+
])
447+
332448

333449
dnl #################################################################
334450
dnl
@@ -1020,17 +1136,27 @@ AC_DEFUN([OPAL_CONFIG_ASM],[
10201136
AC_REQUIRE([OPAL_SETUP_CC])
10211137
AC_REQUIRE([AM_PROG_AS])
10221138
1139+
AC_ARG_ENABLE([c11-atomics],[AC_HELP_STRING([--enable-c11-atomics],
1140+
[Enable use of C11 atomics if available (default: enabled)])])
1141+
10231142
AC_ARG_ENABLE([builtin-atomics],
10241143
[AC_HELP_STRING([--enable-builtin-atomics],
1025-
[Enable use of __sync builtin atomics (default: enabled)])])
1026-
1027-
opal_cv_asm_builtin="BUILTIN_NO"
1028-
AS_IF([test "$opal_cv_asm_builtin" = "BUILTIN_NO" && test "$enable_builtin_atomics" != "no"],
1029-
[OPAL_CHECK_GCC_ATOMIC_BUILTINS([opal_cv_asm_builtin="BUILTIN_GCC"], [])])
1030-
AS_IF([test "$opal_cv_asm_builtin" = "BUILTIN_NO" && test "$enable_builtin_atomics" != "no"],
1031-
[OPAL_CHECK_SYNC_BUILTINS([opal_cv_asm_builtin="BUILTIN_SYNC"], [])])
1032-
AS_IF([test "$opal_cv_asm_builtin" = "BUILTIN_NO" && test "$enable_builtin_atomics" = "yes"],
1033-
[AC_MSG_ERROR([__sync builtin atomics requested but not found.])])
1144+
[Enable use of __sync builtin atomics (default: disabled)])])
1145+
1146+
OPAL_CHECK_C11_CSWAP_INT128
1147+
1148+
if test "x$enable_c11_atomics" != "xno" && test "$opal_cv_c11_supported" = "yes" ; then
1149+
opal_cv_asm_builtin="BUILTIN_C11"
1150+
OPAL_CHECK_C11_CSWAP_INT128
1151+
else
1152+
opal_cv_asm_builtin="BUILTIN_NO"
1153+
AS_IF([test "$opal_cv_asm_builtin" = "BUILTIN_NO" && test "$enable_builtin_atomics" = "yes"],
1154+
[OPAL_CHECK_GCC_ATOMIC_BUILTINS([opal_cv_asm_builtin="BUILTIN_GCC"], [])])
1155+
AS_IF([test "$opal_cv_asm_builtin" = "BUILTIN_NO" && test "$enable_builtin_atomics" = "yes"],
1156+
[OPAL_CHECK_SYNC_BUILTINS([opal_cv_asm_builtin="BUILTIN_SYNC"], [])])
1157+
AS_IF([test "$opal_cv_asm_builtin" = "BUILTIN_NO" && test "$enable_builtin_atomics" = "yes"],
1158+
[AC_MSG_ERROR([__sync builtin atomics requested but not found.])])
1159+
fi
10341160
10351161
OPAL_CHECK_ASM_PROC
10361162
OPAL_CHECK_ASM_TEXT

config/opal_config_subdir_args.m4

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ dnl Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
1010
dnl University of Stuttgart. All rights reserved.
1111
dnl Copyright (c) 2004-2005 The Regents of the University of California.
1212
dnl All rights reserved.
13-
dnl Copyright (c) 2014-2015 Intel, Inc. All rights reserved.
13+
dnl Copyright (c) 2014-2018 Intel, Inc. All rights reserved.
1414
dnl Copyright (c) 2015 Cisco Systems, Inc. All rights reserved.
1515
dnl $COPYRIGHT$
1616
dnl
@@ -60,6 +60,8 @@ do
6060
;;
6161
-with-platform=* | --with-platform=*)
6262
;;
63+
-with*=internal)
64+
;;
6365
*)
6466
case $subdir_arg in
6567
*\'*) subdir_arg=`echo "$subdir_arg" | sed "s/'/'\\\\\\\\''/g"` ;;

configure.ac

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ OPAL_VAR_SCOPE_POP
100100
#
101101
# Init automake
102102
#
103-
AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects no-define 1.12.2 tar-ustar])
103+
AM_INIT_AUTOMAKE([foreign dist-bzip2 subdir-objects no-define 1.13.4 tar-ustar])
104104

105105
# SILENT_RULES is new in AM 1.11, but we require 1.11 or higher via
106106
# autogen. Limited testing shows that calling SILENT_RULES directly
@@ -858,7 +858,7 @@ OPAL_SEARCH_LIBS_CORE([ceil], [m])
858858
# -lrt might be needed for clock_gettime
859859
OPAL_SEARCH_LIBS_CORE([clock_gettime], [rt])
860860

861-
AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf openpty isatty getpwuid fork waitpid execve pipe ptsname setsid mmap tcgetpgrp posix_memalign strsignal sysconf syslog vsyslog regcmp regexec regfree _NSGetEnviron socketpair strncpy_s usleep mkfifo dbopen dbm_open statfs statvfs setpgid setenv __malloc_initialize_hook __clear_cache])
861+
AC_CHECK_FUNCS([asprintf snprintf vasprintf vsnprintf openpty isatty getpwuid fork waitpid execve pipe ptsname setsid mmap tcgetpgrp posix_memalign strsignal sysconf syslog vsyslog regcmp regexec regfree _NSGetEnviron socketpair usleep mkfifo dbopen dbm_open statfs statvfs setpgid setenv __malloc_initialize_hook __clear_cache])
862862

863863
# Sanity check: ensure that we got at least one of statfs or statvfs.
864864
if test $ac_cv_func_statfs = no && test $ac_cv_func_statvfs = no; then

contrib/Makefile.am

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -88,12 +88,8 @@ EXTRA_DIST = \
8888
platform/lanl/darwin/mic-common \
8989
platform/lanl/darwin/debug \
9090
platform/lanl/darwin/debug.conf \
91-
platform/lanl/darwin/debug-mic \
92-
platform/lanl/darwin/debug-mic.conf \
9391
platform/lanl/darwin/optimized \
9492
platform/lanl/darwin/optimized.conf \
95-
platform/lanl/darwin/optimized-mic \
96-
platform/lanl/darwin/optimized-mic.conf \
9793
platform/snl/portals4-m5 \
9894
platform/snl/portals4-orte \
9995
platform/ibm/debug-ppc32-gcc \

0 commit comments

Comments
 (0)