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

9762 Коммитов

Автор SHA1 Сообщение Дата
Nathan Hjelm
7893248c5a opal/asm: add fetch-and-op atomics
This commit adds support for fetch-and-op atomics. This is needed
because and and or are irreversible operations so there needs to be a
way to get the old value atomically. These are also the only semantics
supported by C11 (there is not atomic_op_fetch, just
atomic_fetch_op). The old op-and-fetch atomics have been defined in
terms of fetch-and-op.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-11-30 10:41:23 -07:00
Nathan Hjelm
1282e98a01 opal/asm: rename existing arithmetic atomic functions
This commit renames the arithmetic atomic operations in opal to
indicate that they return the new value not the old value. This naming
differentiates these routines from new functions that return the old
value.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-11-30 10:41:22 -07:00
Nathan Hjelm
9d0b3fe9f4 opal/asm: remove opal_atomic_bool_cmpset functions
This commit eliminates the old opal_atomic_bool_cmpset functions. They
have been replaced by the opal_atomic_compare_exchange_strong
functions.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-11-30 10:41:22 -07:00
Nathan Hjelm
45db3637af osc/rdma: bug fixes
This commit fixes the following bugs:

 - Allow a btl to be used for communication if it can communicate with
   all non-self peers and it supports global atomic visibility. In
   this case CPU atomics can be used for self and the btl for any
   other peer.

 - It was possible to get into a state where different threads of an
   MPI process could issue conflicting accumulate operations to a
   remote peer. To eliminate this race we now update the peer flags
   atomically.

 - Queue up and re-issue put operations that failed during a BTL
   callback. This can occur during an accumulate operation. This was
   an unhandled error case.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-11-29 12:43:58 -07:00
Nathan Hjelm
67e26b6e5a
Merge pull request #4482 from matcabral/osc_rdma_skip_mtls
osc/rdma: mca parameter to list MTLs that lower osc rdma priority
2017-11-29 09:34:33 -07:00
Nathan Hjelm
647b40f3f2
Merge pull request #4442 from bosilca/topic/ob1_pvar
Topic/ob1 pvar
2017-11-29 09:31:07 -07:00
Ralph Castain
5e109fba6a Take the smallest change approach to fixing the hang on disconnect of connect/accept operations by replacing the call to pmix.disconnect with a simple pmix.fence as this is all OMPI currently requires
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2017-11-29 03:30:40 -08:00
Ralph Castain
7ad6886a30 Add a new OMPI rte component to support direct-launch using PMIx.
Cleanup several places where abstraction violations crept into OMPI layer (direct reference of ORTE). Add some missing includes that were exposed by this change.

Note that this compiles, but I haven't tested it for execution yet. Handing it over to Noah Evans for completion

Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2017-11-28 12:05:01 -08:00
bosilca
c4c5df4d1c
Merge pull request #4476 from hjelmn/errhandler_fixes
ompi/errhandler: make set/get actually thread safe
2017-11-27 19:43:42 -05:00
Nathan Hjelm
6b68d1cfc8 ompi/errhandler: make set/get actually thread safe
The current versions of these functions have a fatal flaw. If a
errhandler set and free call is made by another thread while the
thread calling get is between the cmpset and retain then we will
retain an invalid object. Fixing this by just using locking. This is
not a critical path so this should be ok.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-11-27 15:14:17 -07:00
Ralph Castain
3906aaf41a Silence warnings
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2017-11-25 11:50:18 -08:00
Edgar Gabriel
75ab006ec0 io/ompio: add a new option to disable amode overwriting
ompio has historically changed the WRONLY flag provided by the applicaiton
to RDWR to allow for the data sieving optimization within the two-phase I/O
fcoll component. This change did not have a performance impact
on regular UNIX file systems, but seems to hurt performance on NFS (and maybe Lustre?)

So provide an option that allows to keep the WRONLY option, and raise an error
if tha fcoll/two-phase would actually like to use the data sieving.

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-11-17 13:13:38 -06:00
Matias Cabral
d1869a725a
Merge pull request #4467 from matcabral/master
mtl/ofi: Set data and control progress options default values to FI_PROGRESS_UNSPEC
2017-11-13 07:35:39 -08:00
Jeff Squyres
a8686a6813 mtl ofi: squelch compiler warnings
gcc 5.2 complains:

```
mtl_ofi_component.c: In function ‘ompi_mtl_ofi_finalize’:
mtl_ofi_component.c:613:5: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
     if (ret = fi_close((fid_t)ompi_mtl_ofi.fabric)) {
     ^
```

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2017-11-11 05:07:11 -08:00
Jeff Squyres
5a6ddf42d6 mtl ofi: it is not an error to return no data from fi_getinfo()
Before this commit, the presence of usNIC devices -- which will
(currently) return no data when fi_getinfo() is queried for tagged
matching providers -- would cause an error message to be displayed.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2017-11-11 05:07:11 -08:00
Jeff Squyres
f910f554f7 mtl ofi: show the positive value of the error
The value of ret is negative (e.g., -61), but it is displayed in the
help message as `%zd`, which renders as unsigned (i.e., a giant
positive value).  So make sure to negate the negative value before
rendering it (e.g., so we display "61", not "4294967235").

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2017-11-11 05:07:11 -08:00
Jeff Squyres
e8c13ef286 mtl ofi: fix trivial comment whitespace
No code or logic changes.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2017-11-11 05:07:10 -08:00
Jeff Squyres
bed1930df8 mtl ofi: fix formatting of help message
No code or logic changes.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2017-11-11 05:07:05 -08:00
bosilca
3f43e2c8df
Merge pull request #4419 from thananon/pr_newob1
pml/ob1: match callback will now queue wrong sequence frag and return.
2017-11-10 20:10:53 -05:00
Matias A Cabral
80c8858c5a osc/rdma: add an mca parameter to list MTLs for which osc pt2pt should have
higher priority than rdma and default to psm2.

Context: the Intel Omni-path driver (hfi1) has verbs support, so the openib
btl is available to use. However, at a bad performance. Without this
change osc rdma using btl openib is the default choice when running on Intel
Omni-path, with a lower performance than osc pt2pt over mtl psm2.

Signed-off-by: Matias A Cabral <matias.a.cabral@intel.com>
2017-11-09 11:54:11 -08:00
George Bosilca
409638bdf4 Keep the out-of-sequence fragment ordered.
Rework the logic to handle the out-of-sequence fragments on the receiver
side. A large number of OOS messages are still arriving even in single
threaded scenarios.

Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
2017-11-08 14:27:13 -05:00
Matias Cabral
b76bb42ac1 mtl/ofi: Set data and control progress options default
values to FI_PROGRESS_UNSPEC so each provider will use its default.

Signed-off-by: Matias Cabral <matias.a.cabral@intel.com>
2017-11-08 08:24:33 -08:00
Thomas Naughton
86bb6f8bac
Merge pull request #4444 from naughtont3/tjn-fix-plm-monitoring-configury
configury: single quote to avoid trouble with BSD
2017-11-08 10:56:37 -05:00
Jeff Squyres
5ac1ea4512 ompi_info: add ipv6 config param
Allow ompi_info to show whether IPv6 support was enabled in Open MPI
or not.

Signed-off-by: Jeff Squyres <jsquyres@cisco.com>
2017-11-08 07:02:27 -08:00
Edgar Gabriel
0c3aa44ba3
Merge pull request #4454 from edgargabriel/topic/large-file-bug-fix
io/ompio: fix a bug in handling large write/read operations
2017-11-07 09:46:47 -06:00
Gilles Gouaillardet
18d3897479 fs/ufs: add some more error codes on file_open
set proper error codes in mca_fs_ufs_file_open by mapping the errno value to
the MPI error code.

Refs. open-mpi/ompi#4443

Signed-off-by: Gilles Gouaillardet <gilles@rist.or.jp>
2017-11-07 11:09:32 +09:00
Edgar Gabriel
c9bb049d00 io/ompio: fix a bug in handling large write/read operations
This is a bug fix based on a problem reported on the mailing list.
For very large read/write operations, ompio breaks the operation
down into multiple cycles. The problem was that
one of the variables required to maintain its values
across the different cycles did not do that, and because
of that the calculations of the memory offsets was wrong.

Fixes issue #4453

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-11-06 11:48:13 -06:00
Edgar Gabriel
91881c4fdc fs/lustre: update component to match fs/ufs
the fs/lustre component has missed out on a number of updates to the fs/ufs component.
This commit tries to import all the changes performed on the fs/ufs component
w.r.t to the file_open operation, including updates on how the amode is set,
error is propegated and setting the fs_block_size value (which is required for
locking purposes).

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-11-03 16:11:46 -05:00
Edgar Gabriel
1885d99ac7 fs/ufs: set proper error codes on file_open
set proper error codes in mca_fs_ufs_file_open by mapping the errno value to
the MPI error code. Fixes an issue reported on the mailing by Wei-keng Liao

Fixes Issue #4443

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-11-03 16:06:31 -05:00
Thomas Naughton
c5dc41ee1a configury: single quote to avoid trouble with BSD
Signed-off-by: Thomas Naughton <naughtont@ornl.gov>
2017-11-03 11:34:28 -04:00
George Bosilca
d261282029
OB1 pvars should be linked with the OB1 component.
If not the pvars will remain valid after the OB1 PML is unloaded, and
any access will segfault (the callbacks associated with the pvar will
point to the memory of the dlclosed module).

Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
2017-11-03 01:18:26 -04:00
bosilca
3e1f771045
Merge pull request #4403 from naughtont3/tjn-fix-plm-monitoring-configury
fix PML monitoring configury to compile DSOs
2017-11-02 19:08:20 -04:00
bosilca
63e8a8c608
Merge pull request #4431 from hjelmn/asm_cleanup
opal: rename opal_atomic_cmpset* to opal_atomic_bool_cmpset*
2017-11-02 18:45:56 -04:00
Matias Cabral
c8aa22ee22
Merge pull request #4304 from aravindksg/master
Fix OFI MTL to recognize correct CQ empty scenario and improve error reporting
2017-11-02 11:56:57 -07:00
George Bosilca
b2b3da3046
Do not access the frag after returning it.
Signed-off-by: George Bosilca <bosilca@icl.utk.edu>
2017-10-31 16:39:23 -04:00
Nathan Hjelm
3ff34af355 opal: rename opal_atomic_cmpset* to opal_atomic_bool_cmpset*
This commit renames the atomic compare-and-swap functions to indicate
the return value. This is in preperation for adding support for a
compare-and-swap that returns the old value. At the same time the
return type has been changed to bool.

Signed-off-by: Nathan Hjelm <hjelmn@lanl.gov>
2017-10-31 12:47:23 -06:00
Ralph Castain
27f3d417ca Revert the MPI_Init fence operations to use volatile bool instead of thread macros.
The problem is that the waiting thread is cycling using OMPI_LAZY_WAIT_FOR_COMPLETION so it can exercise opal_progress. This probably isn't as critical for the modex step, but definitely necessary for the barrier at the end of mpi_init. The problem this creates is that the lazy macro exits as soon as "active" becomes false, and then we destruct the lock.

However, wakeup_thread sets "active" to false - and then calls the condition broadcast to wakeup any waiting threads. So there is a race condition between that broadcast and the lock destruct.

Add OPAL_ACQUIRE_OBJECT and OPAL_POST_OBJECT memory barriers to help protect against thread race conditions on some platforms

Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2017-10-31 08:09:02 -07:00
Aravind Gopalakrishnan
285fc42b4e Fix OFI MTL to recognize correct CQ empty scenario
Currently, the progress function is incorrectly interpreting any error
value other than a positive value or -FI_EAVAIL to mean CQ is empty.
CQ is empty only if fi_cq_read() call returned -EAGAIN error
code. Fix that here.

While at it, fix help text output for calls made to OFI API.

Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@intel.com>
2017-10-30 12:13:44 -07:00
Thananon Patinyasakdikul
e3b267a8fe pml/ob1: match callback will now queue wrong sequence frag and return.
In multithreaded case, it is expensive to release the lock, call the slow match
and retake the lock again just to queue the frag. This patch will eliminate number of
lock taken by queueing the frag right away and return.

Signed-off-by: Thananon Patinyasakdikul <tpatinya@utk.edu>
2017-10-30 12:01:50 -04:00
Aravind Gopalakrishnan
bea4503f95 Move help text output regarding PSM2_CUDA envvar to component init phase
The messages should be printed only in the event of CUDA builds and in the
presence of supporting hardware and when PSM2 MTL has actually been selected
for use. To this end, move help text output to component init phase.

Also use opal_setenv/unsetenv() for safer setting, unsetting of the environment
variable and sanitize the help text message.

Signed-off-by: Aravind Gopalakrishnan <Aravind.Gopalakrishnan@intel.com>
2017-10-26 16:01:01 -07:00
Thomas Naughton
86d282d6dd fix PML monitoring configury to compile DSOs
Signed-off-by: Thomas Naughton <naughtont@ornl.gov>
2017-10-26 15:53:11 -04:00
Ralph Castain
cf3bc4f55b Merge pull request #4346 from matcabral/psm2_mtl_mq_thread_fix
MTL PSM2: add a thread lock while peeking and completing the psm2 requests.
2017-10-24 16:41:29 -05:00
Ralph Castain
0353be9704 Update MPI init to properly skip barriers
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2017-10-23 19:28:34 -07:00
Ralph Castain
6ea3c8a0bd Update the interlib example to show an alternative method for model declaration. Add a missing range value to the OPAL layer. Make it easier to see OMPI model callbacks
Signed-off-by: Ralph Castain <rhc@open-mpi.org>
2017-10-23 11:27:42 -07:00
Matias Cabral
b81bcd4b0d MTL PSM2: add a thread lock while peeking and completing the psm2
requests.
Reviewed-by: Gopalakrishnan, Aravind <aravind.gopalakrishnan@intel.com>
Signed-off-by: Matias Cabral <matias.a.cabral@intel.com>
2017-10-20 14:46:48 -07:00
Edgar Gabriel
be0de21e6f fs/ufs and fbtl/posix: cleanup lock management
This commit looks large, but its really mostly a cleanup step.
1. introduce proper error handling for the return values of fcntl and the fbtl_posix_lock function
2. rename a parameter to more accurately reflect what it does
3. introduce an mca parameter in the fs/ufs component that allows to control
   what the level of locking the user would like to enforce
4. move the initialization of the fs_block_size parameter from fs/ufs into the
   common/ompio component. An fs component might be allowed to overwrite this
   value, but none of the actual fs components do that.

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-10-19 14:56:28 -05:00
Edgar Gabriel
e62f9d2e52 fs/ufs: ensure that the never-lock flag is set if not on NFS
Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-10-19 13:32:40 -05:00
Edgar Gabriel
f66c55f77a fbtl/posix: fixes in the offset calculation and for aio operations
our own internal testsuite passes now correctly. More testing to follow.

Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-10-19 13:32:39 -05:00
Edgar Gabriel
a3c638bc38 fbtl/posix: add support for file locking for the non-blocking operations
Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-10-19 13:32:38 -05:00
Edgar Gabriel
415e76514d fbtl/posix: make the code compile
Signed-off-by: Edgar Gabriel <egabriel@central.uh.edu>
2017-10-19 13:32:37 -05:00