1
1
Граф коммитов

2936 Коммитов

Автор SHA1 Сообщение Дата
Jeff Squyres
0f28233b35 libfabric: don't use __thread
There's no real reason that this routine should use thread local
storage.  Plus, __thread appears to be a GCC extension.
2014-12-11 14:10:48 -08:00
Rolf vandeVaart
9ee8e1dcf4 With PGI compile we need stdarg.h for va_list define 2014-12-11 16:14:57 -05:00
Jeff Squyres
4551cab6f1 help messages: fix obvious typos 2014-12-11 12:23:33 -08:00
Nathan Hjelm
7e5af9cecf opal_lifo: fix potential race condition when using 128-bit atomics
On x86_64 reading a 128-bit value requires multiple instructions.
Under some conditions if the counted pointer counter is read before
the item pointer the fifo can be left in an inconsistent state. This
commit forces the read of the counter to always be read first.

The fifo does not appear to suffer from the same race.
2014-12-10 12:51:44 -07:00
rolfv
f471b09ae9 Add support for CUDA Unified memory. Basically, add a new flag and disable some
optimizations when that flag is detected.  Lightly reviewed by bosilca.
2014-12-10 05:46:00 -08:00
Nathan Hjelm
52ed5a9bf8 opal_lifo: fix one more potential issue with the new 128-bit lifo atomics
It is possible the compiler can reorder the read of the head item and
the head itself. This could lead to a situation where the item
returned was not really the head item.
2014-12-09 21:48:14 -07:00
Nathan Hjelm
a40fe8311f opal_lifo: add missing memory barriers in 128-bit atomic functions 2014-12-09 19:50:08 -07:00
Jeff Squyres
e6c8bfc201 libfabric: Gah -- also remove the "pragma pop" line
Thanks to Nathan for pointing out that I missed snipping one line in
2f9c69f016 (I removed the trailing
comment, but not the trailing pragma -- oops!).
2014-12-09 14:03:39 -08:00
Jeff Squyres
2f9c69f016 libfabric: use correct C99 notation for var-length array
Nathan pointed out the correct C99 way to notate a variable-length
array in a struct.  This change has now been accepted upstream in
libfabric.
2014-12-09 13:33:15 -08:00
Nathan Hjelm
d0da29351f opal_progress: fix sched_yield check 2014-12-09 14:14:20 -07:00
Jeff Squyres
cd0a54d76f usnic: short term fix to enable builds on non-libfabric platforms
This isn't quite the Right fix yet, because it doesn't address usnic
for external libfabric builds.  I'll fix that separately / later.
2014-12-09 09:19:26 -08:00
Nathan Hjelm
b2b7ecc7c4 Merge pull request #300 from hjelmn/topic/atomic_lifo_fifo
Add opal_fifo_t class and rename opal_atomic_lifo_t to opal_lifo_t
2014-12-09 10:54:50 -06:00
Jeff Squyres
c40fd09d2a libfabric: fix providers to conditionally add libs/flags
Only allow the usnic and PSM providers to add CPPFLAGS and LIBADD
flags when they are going to be built.
2014-12-09 07:15:25 -08:00
Jeff Squyres
45d6f29a27 Merge pull request #310 from yburette/master
libfabric: add optional PSM provider.
2014-12-09 06:39:34 -08:00
Jeff Squyres
6e24a1eb85 usnic: update for libfabric API change
Use FI_ADDR_UNSPEC for posting a receive from an unspecified source.
2014-12-09 06:06:52 -08:00
Jeff Squyres
f5a07f651c libfabric: Open MPI addition to stem a flood of warnings
Add a pragma to not warn about zero-length arrays.  This needs to be
addressed upstream, but for now, do it here.
2014-12-09 06:04:37 -08:00
Jeff Squyres
f331f48796 libfabric: update embedded libfabric to 934a714
Update the embedded copy of libfabric to the github ofiwg/libfabric
repo hash 934a714ca85f1a30a1e384a7d5f714ee962dc253.
2014-12-09 06:03:51 -08:00
Jeff Squyres
09d03a154b libfabric: fix some typos in the usnic configury 2014-12-09 05:52:24 -08:00
Ralph Castain
18d9fdfd8d Restore full topology comparison to support inventory monitoring 2014-12-09 01:33:06 -08:00
Ralph Castain
9b2f8cd840 Add the processor architecture to the topology signature 2014-12-09 01:17:00 -08:00
Howard Pritchard
3a14c8eeff fix build for cray xc
Recent addition of libfabric embdded broke build on Cray XC/XE.
This commit fixes this problem.
2014-12-08 22:21:13 -08:00
Yohann Burette
f90a7b51d2 libfabric: add optional PSM provider. 2014-12-08 16:49:41 -08:00
Ralph Castain
bb529ebd8e Revise the way we handle hetero nodes as users are finding this (a) a significant surprise, and (b) confusing as to when it is required. So try to automate it a bit by creating a topology "signature" that mpirun can share on the cmd line with the remote daemons, thus allowing them to check to see if they match. This isn't comprehensive of course - for now, it only checks the number of each type of hwloc object on the node. This is good enough to pickup major differences (e.g., where we have different numbers of sockets or assigned core bindings).
Retain the hetero-nodes flag for those cases where the user *knows* that there are differences and our automated system isn't good enough to see it.

Will obviously require further refinement as we find out which variances it can detect, and which it cannot.
2014-12-08 15:38:14 -08:00
Yohann Burette
f33a9afd22 libfabric: fix typo in Makefile.am 2014-12-08 13:19:43 -08:00
Jeff Squyres
ac8e9d103c libfabric: need to make AM_CONDITIONALs always be run
Ensure that the usnic-specific AM_CONDITIONAL for the embedded
libfabric is always run.
2014-12-08 11:51:26 -08:00
Jeff Squyres
d64881f040 psm_am.h: add missing file from libfabric snapshot
This is just about to be fixed upstream, but "make dist" was not
including this file in the libfabric tarball.
2014-12-08 11:39:08 -08:00
Jeff Squyres
d02756cdbb libfabric: various configury updates
1. Ensure to override CFLAGS properly.  Move the setting of CFLAGS outside the AM_CONDITIONAL so that Automake doesn't get confused (because CFLAGS is already set inside an AM_CONDITIONAL -- moving it outside the conditional ensure that this local CFLAGS override trumps all other CFLAGS overrides).
2. Only build libfabric on Linux. Add a little more configury to ensure that we only try to build libfabric on Linux.
3. Remove a dead/unused file
4. Fix typo in condition check
5. Use "false", not "/bin/false"
2014-12-08 11:39:07 -08:00
Jeff Squyres
92818d1fa5 usnic: remove SVN-style $Id$ tokens (and #idents)
This commit is also upstream in libfabric.
2014-12-08 11:39:07 -08:00
Jeff Squyres
9547345b18 usnic: fix show_help message
Rename a few symbols to use libfabric-friendly names.  Fix a show_help
message when fi_av_insert times out.
2014-12-08 11:39:07 -08:00
Jeff Squyres
8e49cc754f usnic: update to latest libfabric API changes 2014-12-08 11:37:37 -08:00
Jeff Squyres
c4e8d67515 libfabric: sync to upstream libfabric github
Bring down the latest from the libfabric github, as of
9d051567c8eb7adc2af89516f94c7d0539152948.
2014-12-08 11:37:37 -08:00
Jeff Squyres
7a96b58882 common verbs: remove usnic-specific code
Now that the usnic BTL uses libfabric, we can remove the
usnic-specific code from opal/mca/common/verbs.
2014-12-08 11:37:37 -08:00
Jeff Squyres
984982790a usnic: convert from verbs to libfabric (yay!)
This commit represents the conversion of the usnic BTL from verbs to
libfabric.

For the moment, libfabric is embedded in Open MPI (currently in the
usnic BTL).  This is because the libfabric API is still changing, and
also has not yet been released.  Ultimately, this embedded copy of
libfabric will likely disappear and the usnic BTL will rely on an
external installation of libfabric.

New configure options:

* --with-libfabric: will cause configure to fail if libfabric support
    cannot be built
* --without-libfabric: will prevent libfabric support from being built
* --with-libfabric=DIR: use an external libfabric installation
* --with-libfabric-libdir=LIBDIR: when paired with --with-libfabric=DIR,
    use LIBDIR for the libfabric installation library dir

The --with-libnl3[-libdir] arguments are now gone.
2014-12-08 11:37:37 -08:00
Nathan Hjelm
113b6bbdca opal_stdint.h: fix GCC diagnostic pragma 2014-12-05 07:19:14 -07:00
Gilles Gouaillardet
32bac600f7 opal: fix a warning caused by the introduction of opal_int128_t type 2014-12-05 12:14:31 +09:00
Nathan Hjelm
d1114ec17a Add opal_fifo_t class
This commit adds a new class: opal_fifo.h. The new class has atomic, non-atomic,
and opal_using_threads() conditoned routines. It should be used when first-in
first-out is required and should perform much better than using locks and an
opal_list_t. Like with opal_lifo_t there are two versions of the atomic
implementation: 128-bit compare-and-swap, and spin-locked. More implementations
can be added later (LL/SC comes to mind).

This commit also adds a unit test for the opal_fifo_t class. This test verifies
the fifo implementation when using multiple threads.
2014-12-04 15:30:02 -07:00
Nathan Hjelm
20c6eb5237 Rename opal_atomic_lifo_t to opal_lifo_t and improve interface
- Rename opal_atomic_lifo_t to opal_lifo_t to reflect both atomic and
   non-atomic usage. Added new routines (opal_lifo_*_st) for non-atomic
   usage as well as routines conditioned off opal_using_threads(). The
   atomic versions are always thread safe and the non-atomic are always
   not thread safe.

 - Add a new atomic lifo implementation that makes use of 128-bit
   compare-and-swap. The new implementation should scale better with
   larger numbers of threads.

 - Add threading unit test for opal_lifo_t.
2014-12-04 15:30:02 -07:00
Nathan Hjelm
a0083ceab4 Adjust cmpxchg16b clobber list 2014-12-04 15:29:28 -07:00
Nathan Hjelm
fe787512d8 Add support for __sync builtin compare and swap on 128-bit values 2014-12-04 09:23:51 -07:00
Nathan Hjelm
250f749602 Fix return type of opal_atomic_cmpset_128.
The return type will be opal_int128_t after the fetching atomics
changes but for now it is int.
2014-12-04 09:23:51 -07:00
Nathan Hjelm
b1632dfb3c Define opal_int128_t type if a 128-bit integer is available.
There currently is no standard support for 128-bit integer types. Any use
of the __int128 and int128_t types can lead to warnings from the compiler
when using -Wpedantic. Additionally, some compilers may support __int128
and other may support int128_t. This commit addresses both issues by
defining opal_int128_t if there is a supported 128-bit type. In the
case of GCC a pragma has been added to suppress warnings about __int128
not being a standard C type.
2014-12-04 09:23:51 -07:00
Nathan Hjelm
b2b58b31a2 Add support for 128-bit compare and swap on x86_64 when available.
A 128-bit compare-and-swap will enable a better atomic lifo implementation
that uses the pointer + counter method to avoid ABA issues. This commit
adds configury to check for the instruction (cmpxchg16b) and adds an
implementation that uses the __int128 type available in C99.
2014-12-04 08:53:28 -07:00
George Bosilca
04a4cbd77a Fix the clock_gettime monotonic timer. Thanks to Gilles for the
first sketch of the patch.
2014-12-04 00:20:56 -05:00
Jeff Squyres
983bd49f11 opal_timer_require_monotinic: change to bool / level 5 2014-12-03 17:09:43 -08:00
Jeff Squyres
8880b070b8 Merge pull request #295 from jsquyres/topic/bosilca-accurate-timers
Topic/bosilca accurate timers
2014-12-03 19:46:14 -05:00
Jeff Squyres
cf35e0c28c timers: fix 32 bit compile of timer 2014-12-03 16:43:33 -08:00
Howard Pritchard
c67afadcfc Merge pull request #289 from hppritcha/topic/remove_pmi
Topic/remove pmi
2014-12-03 16:58:35 -07:00
Nathan Hjelm
f989fe27b8 btl/vader: workaround to make jenkins happy 2014-12-03 15:51:58 -07:00
Todd Kordenbrock
c0c680bccb Portals4 BTL: Do not disqualify if a peer does not put Portals4 BTL modex info
If OPAL_MODEX_RECV() returns OPAL_ERR_NOT_FOUND, the peer didn't
send any Portals4 BTL info.  This is not a fatal error.  Instead of
disqualifying the Portals4 BTL just ignore that peer.

@jsquyres reported this in #194.
2014-12-03 14:22:10 -06:00
Howard Pritchard
c75dccede1 pmix/cray: remove finalize call from comp close
The finalize call in component close method is
no longer being matched by an equivalent init call,
so remove this call in the close method.
2014-12-03 09:44:18 -07:00