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

942 Коммитов

Автор SHA1 Сообщение Дата
Rainer Keller
02416033ad - Get rid of warning on function declarations:
First "static inline", then the type

This commit was SVN r20657.
2009-02-28 14:15:34 +00:00
George Bosilca
e181ba50c9 Stop valgrind from complaining about few uninitialized bytes on the PML
headers. This feature is enabled only in debug mode when the heterogeneous
support is enabled.

This commit was SVN r20648.
2009-02-27 05:24:06 +00:00
Rainer Keller
04567d3af0 - Header orte/mca/errmgr/errmgr.h is not needed.
Once again compiles fine with -Wimplicit-function-declaration   

This commit was SVN r20640.
2009-02-26 04:05:30 +00:00
Rainer Keller
96e1b9b747 - Header orte/mca/rml/rml.h is not needed if no occurence of orte_rml
or ORTE_RML.
   As the others compiles fine with -Wimplicit-function-declaration

This commit was SVN r20639.
2009-02-26 03:52:31 +00:00
Rainer Keller
b356e90fa1 - Get rid of include orte/util/proc_info.h, if not needed
Only proc_info.h-internal include file is opal/dss/dss_types.h
 - In one case (orte/util/hnp_contact.c) had to add proc_info.h again.
 - Local compilation (Linux/x86_64) w/ -Wimplicit-function-declaration
   works fine, no errors.

   Again, let's have MTT the last word.

This commit was SVN r20631.
2009-02-25 03:38:00 +00:00
Terry Dontje
0178b6c45f Added padding to predefined handle structures to maintain library version to
version compatibility.

This commit was SVN r20627.
2009-02-24 17:17:33 +00:00
George Bosilca
97a2296fdd Correct the GET protocol. Thanks to Mike Dubman for finding the problem and
testing my patch.

This commit was SVN r20591.
2009-02-19 16:00:15 +00:00
Rainer Keller
d81443cc5a - On the way to get the BTLs split out and lessen dependency on orte:
Often, orte/util/show_help.h is included, although no functionality
   is required -- instead, most often opal_output.h, or               
   orte/mca/rml/rml_types.h                                           
   Please see orte_show_help_replacement.sh commited next.            

 - Local compilation (Linux/x86_64) w/ -Wimplicit-function-declaration
   actually showed two *missing* #include "orte/util/show_help.h"     
   in orte/mca/odls/base/odls_base_default_fns.c and                  
   in orte/tools/orte-top/orte-top.c                                  
   Manually added these.                                              

   Let's have MTT the last word.

This commit was SVN r20557.
2009-02-14 02:26:12 +00:00
Jeff Squyres
91415c2996 Some minor valgrind-inspired cleanups: fix some memory leaks
This commit was SVN r20542.
2009-02-13 03:45:11 +00:00
George Bosilca
4747a4bb53 ompi_comm_all allocate memory and retain the objects. Therefore, after
each call to ompi_comm_all we should parse the communicator list and
release the objects ...

This commit was SVN r20525.
2009-02-11 21:48:11 +00:00
Jeff Squyres
679e2855b7 Fix CID 1135: the assignment to item was never used (it was
overwritten in the next loop iteration "item = next_item").

This commit was SVN r20189.
2009-01-03 15:15:42 +00:00
George Bosilca
4d5fbc5955 Remove unused lock from the ompi_proc_t. This reduce the size of the ompi_proc_t
by 64 bytes.
Remove the useless pml_proc from the PML layer.

This commit was SVN r20157.
2008-12-19 19:56:27 +00:00
Shiqing Fan
a5281f0434 - 1/4 commit for Windows Visual Studio and CCP support:
CMakeLists and .windows files.
  In contribs preconfigured and precompiled parts.

This commit was SVN r20108.
2008-12-10 20:59:20 +00:00
Ralph Castain
1ace83c470 Enable modex-less launch. Consists of:
1. minor modification to include two new opal MCA params:
   (a) opal_profile: outputs what components were selected by each framework
       currently enabled for most, but not all, frameworks
   (b) opal_profile_file: name of file that contains profile info required
       for modex

2. introduction of two new tools:
   (a) ompi-probe: MPI process that simply calls MPI_Init/Finalize with
       opal_profile set. Also reports back the rml IP address for all
       interfaces on the node
   (b) ompi-profiler: uses ompi-probe to create the profile_file, also
       reports out a summary of what framework components are actually
       being used to help with configuration options

3. modification of the grpcomm basic component to utilize the
   profile file in place of the modex where possible

4. modification of orterun so it properly sees opal mca params and
   handles opal_profile correctly to ensure we don't get its profile

5. similar mod to orted as for orterun

6. addition of new test that calls orte_init followed by calls to
   grpcomm.barrier

This is all completely benign unless actively selected. At the moment, it only supports modex-less launch for openib-based systems. Minor mod to the TCP btl would be required to enable it as well, if people are interested. Similarly, anyone interested in enabling other BTL's for modex-less operation should let me know and I'll give you the magic details.

This seems to significantly improve scalability provided the file can be locally located on the nodes. I'm looking at an alternative means of disseminating the info (perhaps in launch message) as an option for removing that constraint.

This commit was SVN r20098.
2008-12-09 23:49:02 +00:00
Shiqing Fan
abd21b6d17 - An update for memchecker :
1. fix a bug in pml_ob1_recvreq/sendreq.c, buffer was made defined where the request has already been released.
2. complete memchecker support for collective functions.
3. change the wrongly spelled function name of memchecker, i.e. '*_isaddressible' should be '*_isaddressable'

This commit was SVN r20043.
2008-11-27 16:34:02 +00:00
Jeff Squyres
bb0b5b04bd Remove duplicate copyright notice (found by script).
This commit was SVN r19984.
2008-11-12 17:42:40 +00:00
George Bosilca
82d1d5d785 The patch for "Unexpected message queue for unknown CID's required" ticket #1460.
I'm unable to split it in two parts, my patch and Edgar's one. So I just update
copyright information for both of us.
What this patch do:
- it use the unexpected queue create by commit r19562 to dispatch the
  unexpected message to the right communicator (once this communicator
  is created and initialized).
- delay the PML comm_add until we have the context_id for the new communicator.
- only do the PML comm_add on processes that really belong to the new
  communicator. Please read the lengthy comment in the source code for the
  reason behind this.

This commit was SVN r19929.

The following SVN revision numbers were found above:
  r19562 --> open-mpi/ompi@acd3406aa7
2008-11-04 21:58:06 +00:00
George Bosilca
9260f6b157 There is no reason to ask for an ACK from the BTL here.
This commit was SVN r19789.
2008-10-22 20:13:33 +00:00
Josh Hursey
88aa45dd52 Commit to bring online OpenIB, MX, and shared memory support for Open MPI's checkpoint/restart functionality. Some tuning is still needed, but basic functionality is in place.
There is still a problem with OpenIB and threads (external to C/R functionality). It has been reported in Ticket #1539

Additionally:
* Fix a file cleanup bug in CRS Base.
* Fix a possible deadlock in the TCP ft_event function
* Add a mca_base_param_deregister() function to MCA base
* Add whole process checkpoint timers
* Add support for BTL: OpenIB, MX,  Shared Memory
* Add support Mpool: rdma, sm
* Sundry bounds checking an cleanup in some scattered functions

This commit was SVN r19756.
2008-10-16 15:09:00 +00:00
Aurelien Bouteiller
852c0e35b8 Fixed a stupid type mismatch. Thanks Jeff for noticing.
Aurelien

This commit was SVN r19672.
2008-10-02 00:22:41 +00:00
Aurelien Bouteiller
77fa3b5d4c Code to connect to event loggers over optimized MPI communication channels.
This commit was SVN r19669.
2008-10-01 18:42:43 +00:00
Aurelien Bouteiller
aded765084 Upgrade to the new mca version
This commit was SVN r19668.
2008-10-01 18:40:44 +00:00
George Bosilca
00d24bf8ab Scalability patch, or slim-fast effect #1. All BML structures just
got a whole lot smaller, decreasing the memory footprint of the
running application. How much it's a good question. Here is a
breakdown:

- in mca_bml_base_endpoint_t: 3 *size_t + 1 * uint32_t
- in mca_bml_base_btl_t: 1 * int + 1 * double - 1 * float
                         + 6 * size_t + 9 * (void*)

The decrease in mca_bml_base_endpoint_t is for each peer and the
decrease in mca_bml_base_btl_t is for each BTL for each peer.
So, if we consider the most convenient case where there is only
one network between all peers, this decrease the memory foot print
per peer by
9*size_t + 9*(void*) + 2 * int32_t + 1 * double - 1 * float.
On a 64 bits machine this will be 156 bytes per peer.

Now we access all these fields directly from the underlying BTL
structure, and as this structure is common to multiple BML endpoint,
we are a lot more cache friendly. Even if this do not improve the
latency, it makes the SM performance graph a lot smoother.

This commit was SVN r19659.
2008-09-30 21:02:37 +00:00
George Bosilca
b32e4e7f34 Nothing important, mainly replacing tabs with spaces.
This commit was SVN r19658.
2008-09-30 18:30:35 +00:00
George Bosilca
325d006577 Mostly cleanups, and eventually a little bit more scalable add_procs.
There was an argument that was barely used, and on return at the PML
level it contained nothing usable. It has been removed, so now we're
using less memory ...

This commit was SVN r19657.
2008-09-30 15:47:43 +00:00
Jeff Squyres
d2d06008a0 Change the default value of mpi_leave_pinned to -1, meaning that we'll
figure it out at runtime (really meaning: we'll still default to "0"
unless something explicitly overrides to 1, such as the openib BTL).
This way, ompi_info doesn't confusingly report mpi_leave_pinned==0 for
mpi_leave_pinned, but we end up running with mpi_leave_pinned==1.

Fixes trac:1502.

This commit was SVN r19571.

The following Trac tickets were found above:
  Ticket 1502 --> https://svn.open-mpi.org/trac/ompi/ticket/1502
2008-09-16 22:06:14 +00:00
Jeff Squyres
270f482fea Addendum to r19561: also remove a comment that is no longer true and
some code that is commented out.

This commit was SVN r19564.

The following SVN revision numbers were found above:
  r19561 --> open-mpi/ompi@17e65369be
2008-09-16 13:02:10 +00:00
George Bosilca
acd3406aa7 Never drop messages. No never no more.
This is supposed to fix the ticket #1460.

This commit was SVN r19562.
2008-09-15 23:04:18 +00:00
George Bosilca
17e65369be Fix the deadlock when we run out of resources on the BTLs. Move the progress
function from the BML into the PML. The BTL progress functions are now directly
registered with the event library.

This commit was SVN r19561.
2008-09-15 22:56:23 +00:00
George Bosilca
2499112d1c Fix indentation.
This commit was SVN r19313.
2008-08-17 20:10:54 +00:00
Rainer Keller
e84f1f6fdf - Mark the variable bytes_delivered as being unused
(it is just set within MCA_PML_OB1_RECV_REQUEST_UNPACK)
   Iff Coverity's prevent makes usage of __attribute__(unused),
   this should get rid of warning.
   Relates to CID1060

   Would then apply to a many int _rc; definitions, that are
   used in other macros in similar fashion...

This commit was SVN r19179.
2008-08-06 13:46:23 +00:00
George Bosilca
3dafa58b32 Fix coverty issue 1044.
This commit was SVN r19178.
2008-08-06 13:38:21 +00:00
Rainer Keller
c1f2b8e476 - Fix resource leak in case of error.
Coverity CID1067

This commit was SVN r19168.
2008-08-06 08:04:27 +00:00
Jeff Squyres
0af7ac53f2 Fixes trac:1392, #1400
* add "register" function to mca_base_component_t
   * converted coll:basic and paffinity:linux and paffinity:solaris to
     use this function
   * we'll convert the rest over time (I'll file a ticket once all
     this is committed)
 * add 32 bytes of "reserved" space to the end of mca_base_component_t
   and mca_base_component_data_2_0_0_t to make future upgrades
   [slightly] easier
   * new mca_base_component_t size: 196 bytes
   * new mca_base_component_data_2_0_0_t size: 36 bytes
 * MCA base version bumped to v2.0
   * '''We now refuse to load components that are not MCA v2.0.x'''
 * all MCA frameworks versions bumped to v2.0
 * be a little more explicit about version numbers in the MCA base
   * add big comment in mca.h about versioning philosophy

This commit was SVN r19073.

The following Trac tickets were found above:
  Ticket 1392 --> https://svn.open-mpi.org/trac/ompi/ticket/1392
2008-07-28 22:40:57 +00:00
Jeff Squyres
e3e79c0881 Fixes trac:1379:
* Use synonym/deprecated MCA param API for some mca base params
 * In openib BTL, if we have appropriate memory hooks support, and if
   mpi_leave_pinned and mpi_leave_pinned_pipeline were not set by the
   user, set mpi_leave_pinned to 1.
 * Defer checking mpi_leave_pinned_* until as late as possible (i.e.,
   until after the btl's have had a chance to set mpi_leave_pinned to
   1):
   * in ob1 pml
   * in rdma mpool

This commit was SVN r19022.

The following Trac tickets were found above:
  Ticket 1379 --> https://svn.open-mpi.org/trac/ompi/ticket/1379
2008-07-24 22:51:26 +00:00
Aurelien Bouteiller
086cb6190e Use the generic version number instead of hardcoded ones
This commit was SVN r18983.
2008-07-22 21:10:51 +00:00
George Bosilca
3ba0a8c0c1 In the case where the environment is homogeneous we can ALWAYS create
the receiver convertor when we create the request (as we know all
architectures are identical).

This commit was SVN r18934.
2008-07-17 04:57:55 +00:00
George Bosilca
902a2892b6 Fix typo.
This commit was SVN r18933.
2008-07-17 04:55:23 +00:00
George Bosilca
939fa3001d Small cleanups. Remove some switch cases that cannot be reached. Rename
a struct field.

This commit was SVN r18931.
2008-07-17 04:50:39 +00:00
George Bosilca
319a8b3219 Once matched the proc attached to the request should be the source
of the message and not the first on the list. This fix the ticket
#1386.

This commit was SVN r18929.
2008-07-17 03:04:28 +00:00
Aurelien Bouteiller
66463cb258 Fix the annoying message from showing up when not using PML V. The underlying bug is not fixed though, but at least people not involved in FT dev should not see it anymore.
Fix ticket https://svn.open-mpi.org/trac/ompi/ticket/1328

Aurelien

This commit was SVN r18917.
2008-07-15 22:05:40 +00:00
George Bosilca
3de0488410 Fix the truncation problem. This close the #211.
This commit was SVN r18850.
2008-07-09 17:38:41 +00:00
Ralph Castain
6af8a73dc0 Modify the checking logic to look for NULL return
This commit was SVN r18749.
2008-06-26 14:08:36 +00:00
Ralph Castain
af8c167861 May be picky, but cleanup before returning in error conditions
This commit was SVN r18748.
2008-06-26 13:31:36 +00:00
Ralph Castain
3631a60181 Update the PML selection logic to detect when a modex is required, and in those cases to only have rank=0 report its selected module. This is per the email thread on the devel list:
http://www.open-mpi.org/community/lists/devel/2008/06/4223.php

This commit was SVN r18747.
2008-06-26 13:22:48 +00:00
George Bosilca
bc9b950162 Honor ^ for the PML selection.
This commit was SVN r18683.
2008-06-19 16:50:46 +00:00
George Bosilca
dc0ab0d0a8 Enable the sendi path.
This commit was SVN r18633.
2008-06-09 23:03:56 +00:00
Aurelien Bouteiller
ebe6df4c06 Moving the pml_v_output global variable inside the pml_v structure. This should avoid one of the missing symbols when visibility is enabled.
This commit was SVN r18627.
2008-06-09 20:38:44 +00:00
Galen Shipman
dbd282fcad doh.. fix GET protocol..
This commit was SVN r18623.
2008-06-09 19:45:44 +00:00
Ralph Castain
9613b3176c Effectively revert the orte_output system and return to direct use of opal_output at all levels. Retain the orte_show_help subsystem to allow aggregation of show_help messages at the HNP.
After much work by Jeff and myself, and quite a lot of discussion, it has become clear that we simply cannot resolve the infinite loops caused by RML-involved subsystems calling orte_output. The original rationale for the change to orte_output has also been reduced by shifting the output of XML-formatted vs human readable messages to an alternative approach.

I have globally replaced the orte_output/ORTE_OUTPUT calls in the code base, as well as the corresponding .h file name. I have test compiled and run this on the various environments within my reach, so hopefully this will prove minimally disruptive.

This commit was SVN r18619.
2008-06-09 14:53:58 +00:00
George Bosilca
2aec094d56 The PML V is a component so it should use OMPI_MODULE_DECLSPEC.
This commit was SVN r18610.
2008-06-06 17:43:57 +00:00
George Bosilca
4d8cbbc167 Add Pasha's patch as it correctly solve the issues. In fact in the current
incarnation these functions do not need the inline keyword anymore.

This commit was SVN r18558.
2008-06-03 16:03:36 +00:00
Ralph Castain
c992e99035 Remove the tags from orte_output_open and the filtering operation from orte_output - this will be handled differently to improve the XML output interface
This commit was SVN r18557.
2008-06-03 14:24:01 +00:00
George Bosilca
e361bcb64c Send optimizations.
1. The send path get shorter. The BTL is allowed to return > 0 to specify that the
   descriptor was pushed to the networks, and that the memory attached to it is 
   available again for the upper layer. The MCA_BTL_DES_SEND_ALWAYS_CALLBACK flag
   can be used by the PML to force the BTL to always trigger the callback.
   Unmodified BTL will continue to work as expected, as they will return OMPI_SUCCESS
   which force the PML to have exactly the same behavior as before. Some BTLs have
   been modified: self, sm, tcp, mx.
2. Add send immediate interface to BTL.
   The idea is to have a mechanism of allowing the BTL to take advantage of
   send optimizations such as the ability to deliver data "inline". Some
   network APIs such as Portals allow data to be sent using a "thin" event
   without packing data into a memory descriptor. This interface change
   allows the BTL to use such capabilities and allows for other optimizations
   in the future. All existing BTLs except for Portals and sm have this interface
   set to NULL.

This commit was SVN r18551.
2008-05-30 03:58:39 +00:00
Galen Shipman
4da4c44210 Receive side changes, basically uses multiple active message callbacks rather
than using a single receive callback followed by a switch on the header.
Also fast pathed the matching for small fragments. 

This commit was SVN r18549.
2008-05-30 01:29:09 +00:00
Jeff Squyres
e7ecd56bd2 This commit represents a bunch of work on a Mercurial side branch. As
such, the commit message back to the master SVN repository is fairly
long.

= ORTE Job-Level Output Messages =

Add two new interfaces that should be used for all new code throughout
the ORTE and OMPI layers (we already make the search-and-replace on
the existing ORTE / OMPI layers):

 * orte_output(): (and corresponding friends ORTE_OUTPUT,
   orte_output_verbose, etc.)  This function sends the output directly
   to the HNP for processing as part of a job-specific output
   channel.  It supports all the same outputs as opal_output()
   (syslog, file, stdout, stderr), but for stdout/stderr, the output
   is sent to the HNP for processing and output.  More on this below.
 * orte_show_help(): This function is a drop-in-replacement for
   opal_show_help(), with two differences in functionality:
   1. the rendered text help message output is sent to the HNP for
      display (rather than outputting directly into the process' stderr
      stream)
   1. the HNP detects duplicate help messages and does not display them
      (so that you don't see the same error message N times, once from
      each of your N MPI processes); instead, it counts "new" instances
      of the help message and displays a message every ~5 seconds when
      there are new ones ("I got X new copies of the help message...")

opal_show_help and opal_output still exist, but they only output in
the current process.  The intent for the new orte_* functions is that
they can apply job-level intelligence to the output.  As such, we
recommend that all new ORTE and OMPI code use the new orte_*
functions, not thei opal_* functions.

=== New code ===

For ORTE and OMPI programmers, here's what you need to do differently
in new code:

 * Do not include opal/util/show_help.h or opal/util/output.h.
   Instead, include orte/util/output.h (this one header file has
   declarations for both the orte_output() series of functions and
   orte_show_help()).
 * Effectively s/opal_output/orte_output/gi throughout your code.
   Note that orte_output_open() takes a slightly different argument
   list (as a way to pass data to the filtering stream -- see below),
   so you if explicitly call opal_output_open(), you'll need to
   slightly adapt to the new signature of orte_output_open().
 * Literally s/opal_show_help/orte_show_help/.  The function signature
   is identical.

=== Notes ===

 * orte_output'ing to stream 0 will do similar to what
   opal_output'ing did, so leaving a hard-coded "0" as the first
   argument is safe.
 * For systems that do not use ORTE's RML or the HNP, the effect of
   orte_output_* and orte_show_help will be identical to their opal
   counterparts (the additional information passed to
   orte_output_open() will be lost!).  Indeed, the orte_* functions
   simply become trivial wrappers to their opal_* counterparts.  Note
   that we have not tested this; the code is simple but it is quite
   possible that we mucked something up.

= Filter Framework =

Messages sent view the new orte_* functions described above and
messages output via the IOF on the HNP will now optionally be passed
through a new "filter" framework before being output to
stdout/stderr.  The "filter" OPAL MCA framework is intended to allow
preprocessing to messages before they are sent to their final
destinations.  The first component that was written in the filter
framework was to create an XML stream, segregating all the messages
into different XML tags, etc.  This will allow 3rd party tools to read
the stdout/stderr from the HNP and be able to know exactly what each
text message is (e.g., a help message, another OMPI infrastructure
message, stdout from the user process, stderr from the user process,
etc.).

Filtering is not active by default.  Filter components must be
specifically requested, such as:

{{{
$ mpirun --mca filter xml ...
}}}

There can only be one filter component active.

= New MCA Parameters =

The new functionality described above introduces two new MCA
parameters:

 * '''orte_base_help_aggregate''': Defaults to 1 (true), meaning that
   help messages will be aggregated, as described above.  If set to 0,
   all help messages will be displayed, even if they are duplicates
   (i.e., the original behavior).
 * '''orte_base_show_output_recursions''': An MCA parameter to help
   debug one of the known issues, described below.  It is likely that
   this MCA parameter will disappear before v1.3 final.

= Known Issues =

 * The XML filter component is not complete.  The current output from
   this component is preliminary and not real XML.  A bit more work
   needs to be done to configure.m4 search for an appropriate XML
   library/link it in/use it at run time.
 * There are possible recursion loops in the orte_output() and
   orte_show_help() functions -- e.g., if RML send calls orte_output()
   or orte_show_help().  We have some ideas how to fix these, but
   figured that it was ok to commit before feature freeze with known
   issues.  The code currently contains sub-optimal workarounds so
   that this will not be a problem, but it would be good to actually
   solve the problem rather than have hackish workarounds before v1.3 final.

This commit was SVN r18434.
2008-05-13 20:00:55 +00:00
Gleb Natapov
31d2797a2f If RDMA PUT is received before ACK and registration of memory fails don't
start sending fragment by copy in/out before ACK is received as we don't
know pointer to receive request yet.

Pipeline protocol sometimes doesn't send ACK though, so this case is still
broken.

This commit was SVN r18423.
2008-05-11 12:40:55 +00:00
Josh Hursey
da2f1c58e2 Some checkpoint/restart cleanup.
* Remove the opal_only option. This was suffering from bit rot, and no one uses it. It can be added back fairly easily if wanted.
 * Cleanup metadata interactions at the local level.
 * Touch up some of the INC funcitonality (fix typos and a minor ordering issue)

This commit was SVN r18416.
2008-05-08 18:47:47 +00:00
Shiqing Fan
8393fb5d47 Use the new memchecker_call function for memory checking of non-blocking communication.
This commit was SVN r18399.
2008-05-07 12:28:51 +00:00
Shiqing Fan
f35a06119c Use memchecker_convertor_call function instead the old one. Move the function to the place that we can use convertor.
This commit was SVN r18370.
2008-05-05 13:57:27 +00:00
Josh Hursey
dcd21d7d07 Some checkpoint/restart fixes in response to r18338 (changes in modex).
Things should be working now.

This commit was SVN r18348.

The following SVN revision numbers were found above:
  r18338 --> open-mpi/ompi@3e55fe6f6d
2008-05-01 17:48:13 +00:00
Ralph Castain
3e55fe6f6d Fold in the revised modex scheme. Move the ompi_proc_t modex portions to the RTE level since the daemons already have that info. Provide each process with the equivalent of a "nidmap" - both a map of what nodes are in the job, and a map of which node each process is on. This enables the use of static ports, though that hasn't been turned "on" in this commit.
Update the rsh tree spawn capability so we spawn the next wave of daemons before launching our own local procs.

Add an ability to encode nodenames for large clusters with contiguous node name numbering schemes - this allows communication of all node names in a few bytes instead of tens-of-bytes/node.

This commit was SVN r18338.
2008-04-30 19:49:53 +00:00
George Bosilca
6e6c370917 Rollback r18274 as its legal to have a sequence number smaller than the
expected one. It doesn't necessarily means the message is duplicated,
it can simply signify the message is out of sequence and the counter
overflowed.

This commit was SVN r18323.

The following SVN revision numbers were found above:
  r18274 --> open-mpi/ompi@73c9de3af9
2008-04-27 18:35:54 +00:00
Aurelien Bouteiller
c20b020ea6 Fix ticket #1275. The pml v can now be correctly deactivated on the configure command line. Also fix a dist target under some unusual circumpstances.
This commit was SVN r18291.
2008-04-24 21:42:54 +00:00
Josh Hursey
2c736873bb Fix a checkpoint/restart bug that causes a restarted application to occasionally throw a SIGSEGV or SIGPIPE due to invalid socket descriptors.
The problem was caused by a bad ordering between the restart of the ORTE level tcp connections (in the OOB - out-of-band communication) and the Open MPI level tcp connections (BTLs). Before this commit ORTE would shutdown and restart the OOB completely before the OMPI level restarted its tcp connections. What would happen is that a socket descriptor used by the OMPI level on checkpoint was assigned to the ORTE level on restart. But the OMPI level had no knowledge that the socket descriptor it was previously using has been recycled so it closed it on restart. This caused the ORTE level to break as the newly created socket descriptor was closed without its knowledge.

The fix is to have the OMPI level shutdown tcp connections, allow the ORTE level to restart, and then allow the OMPi level to restart its connections. This seems obvious, and I'm surprised that this bug has not cropped up sooner. I'm confident that this specific problem has been fixed with this commit.

Thanks to Eric Roman and Tamer El Sayed for their help in identifying this problem, and patience while I was fixing it.

 * Add a new state {{{OPAL_CRS_RESTART_PRE}}}. This state identifies when we are on the down slope of the INC (finalize-like) which is useful when you want to close, but not reopen a component set for fear of interfering with a lower level.
 * Use this new state in OMPI level coordination. Here we want to make sure to play well with both the OMPI/BTL/TCP and ORTE/OOB/TCP components.
 * Update ft_event functions in PML and BML to handle the new restart state.
 * Add an additional flag to the error output in OOB/TCP so we can see what the socket descriptor was on failure as this can be helpful in debugging.

This commit was SVN r18276.
2008-04-24 17:54:22 +00:00
George Bosilca
3ccac4f803 Oops ...
This commit was SVN r18275.
2008-04-24 15:54:52 +00:00
George Bosilca
73c9de3af9 Bark if we got a wrong sequence number. Here wrong means that the
seq number if smaller than what we expect.

This commit was SVN r18274.
2008-04-24 15:48:43 +00:00
Josh Hursey
cc83d41ad9 Merge in tmp/jjh-scratch
{{{
 svn merge -r 18218:18240 https://svn.open-mpi.org/svn/ompi/tmp/jjh-scratch .
}}}

Contains:
 * Primarily a fix for a user reported problem where a cached file descriptor is causing a SIGPIPE on restart.
 * Cleanup some small memory leaks from using mca_base_param_env_var() - Thanks Jeff
 * Cleanup ORTE FT tool compilation in non-FT builds - Thanks Tim P.
 * Cleanup mpi interface with missplaced {{{OPAL_CR_ENTER_LIBRARY}}} - Thanks Terry
 * Some other sundry cleanup items all dealing with C/R functionality in the trunk.

This commit was SVN r18241.
2008-04-23 00:17:12 +00:00
Ralph Castain
fa082cafa9 Shift the architecture calculation from the ompi/datatype engine to the opal/util area. This allows us to compute the architecture earlier in the launch and communicate it outside of the modex.
Note: this is an early preliminary step in the movement of portions of the datatype engine to the opal layer.

This commit was SVN r18198.
2008-04-17 20:43:56 +00:00
Tim Prins
3582e11200 cleanup some warnings on 32 bit systems
This commit was SVN r18187.
2008-04-17 12:25:05 +00:00
Ralph Castain
3a0d09300b Fully implement the inbound binomial allgather for daemon-based collectives. Supports both modex and barrier operations.
Comm_spawn still uses the rank=0 method - shifting that algo to the daemons is under study.

This commit was SVN r18115.
2008-04-09 22:10:53 +00:00
Shiqing Fan
28746bbcdb Remove the memchecker macro in pml base request, used in req_wait.c, which actually is in the wrong place. Instead, one simple call from send_request_free and recv_request_free(already done) will do all the work, fast and clean.
This commit was SVN r18095.
2008-04-07 17:46:50 +00:00
Shiqing Fan
a1e5df1cc9 Use the new memchecker function call which is based on convertor.
Remove one unnecessary call.

This commit was SVN r18085.
2008-04-07 07:52:04 +00:00
George Bosilca
b4f828f389 We need a newline at the nd of the file, or some compiler bark.
This commit was SVN r18023.
2008-03-30 19:05:56 +00:00
Aurelien Bouteiller
77653ac787 Missing .h file in makefile breaked nightly tarball distcheck...
This commit was SVN r18006.
2008-03-28 14:36:56 +00:00
Aurelien Bouteiller
c16339944a Fix a coverity warning about using unsafe sprintf.
This commit was SVN r17999.
2008-03-27 21:24:27 +00:00
Aurelien Bouteiller
e11237aadb Introduction of the "progress" sender_based method to replace the slow isend-self method.
This commit was SVN r17998.
2008-03-27 21:19:45 +00:00
Aurelien Bouteiller
93db01871e This is part of the previous patch.
This commit was SVN r17997.
2008-03-27 21:06:14 +00:00
Aurelien Bouteiller
f8bf6f2c6a Code cleanup.
sender_based.h is now split in two files, to solve cyclic .h files inclusion. 
Most macros are now inline functions.
Variable names have been changed from places to places.
Various other small things... 

This commit was SVN r17996.
2008-03-27 21:05:44 +00:00
Gleb Natapov
cf40674369 Decide if sends should be throttled at the receiver and pass this to the sender
in an ACK message. The decision can't be done reliably at the sender.

This commit was SVN r17987.
2008-03-27 08:56:43 +00:00
Galen Shipman
0116041133 BTL shouldn't own the passive side's descriptor in the PML get protocol. The BTL
doesn't know when to free it on the passive side. 

This commit was SVN r17943.
2008-03-25 01:43:41 +00:00
George Bosilca
8943ae0b4e Cleanup plus some typos.
This commit was SVN r17858.
2008-03-18 03:03:33 +00:00
Josh Hursey
612ebdc2ac Cleanup some symbol visability issues.
This commit was SVN r17733.
2008-03-05 13:59:25 +00:00
Ralph Castain
d70e2e8c2b Merge the ORTE devel branch into the main trunk. Details of what this means will be circulated separately.
Remains to be tested to ensure everything came over cleanly, so please continue to withhold commits a little longer

This commit was SVN r17632.
2008-02-28 01:57:57 +00:00
Aurelien Bouteiller
76e6334a57 This change is a mistake. CONVERTOR METHOD does not work with unpatched trunk. Revert back to PACK_METHOD.
This commit was SVN r17629.
2008-02-27 20:02:25 +00:00
Aurelien Bouteiller
1d57b8b0e0 Replaced all the (long) cast by PRIsize_t. Should solve definitely compiler warnings that appeared from time to time depending on sizeof(size_t)...
This commit was SVN r17627.
2008-02-27 19:58:18 +00:00
George Bosilca
fa31ec81d0 Add the ownership flags to the PML/BTL interface. The layer
owning the descriptor is responsible for releasing it once
the descriptor is not in use anymore.

This commit was SVN r17497.
2008-02-18 17:39:30 +00:00
Shiqing Fan
653857ddbe Wrong function name was copied here.
This commit was SVN r17486.
2008-02-17 19:47:47 +00:00
Gleb Natapov
354c5bc5e1 Don't call progress() from OB1 fragment scheduling functions. They don't serve
any purpose and case recursion calls to progress engine.

This commit was SVN r17478.
2008-02-17 12:42:32 +00:00
Aurelien Bouteiller
3ffe845187 Fixed warning.
This commit was SVN r17454.
2008-02-14 15:18:19 +00:00
Gleb Natapov
0a1fa2cb56 req_match_received is set inside MCA_PML_OB1_RECV_REQUEST_MATCHE().
This commit was SVN r17442.
2008-02-13 08:34:39 +00:00
Gleb Natapov
876f49f1a7 Remove unnecessary assignment. It is done later in the same function.
This commit was SVN r17441.
2008-02-13 08:28:25 +00:00
Shiqing Fan
54c7b71cfd Use the correct way of including memchecker.h, which will work with '--with-devel-headers'.
This commit was SVN r17435.
2008-02-12 18:01:17 +00:00
Rainer Keller
7621800477 - Fix and add comments -- output full name for pd
- Protect argument in macro...

This commit was SVN r17434.
2008-02-12 16:59:59 +00:00
Jeff Squyres
6adc5015f9 This file was accidentally re-introduced in r17409.
This commit was SVN r17428.

The following SVN revision numbers were found above:
  r17409 --> open-mpi/ompi@98f70d6318
2008-02-12 13:07:44 +00:00
Shiqing Fan
f5792bbda5 merging the memchecker into trunk.
This commit was SVN r17424.
2008-02-12 08:46:27 +00:00
George Bosilca
55179b833c Unexpected ... Removing unistd.h from datatype.h break the compilation
of the pml_base_bsend ... 

This commit was SVN r17412.
2008-02-10 21:49:19 +00:00
Aurelien Bouteiller
4da1258d60 Quick fix for static builds (mca_component_retain always return failure in static build mode, so just blatently ignore the failure. Though, this may crash severly sometime later if the failure occurs while in dso mode.
This commit was SVN r17328.
2008-01-30 10:41:49 +00:00
George Bosilca
4e703741b7 Move the PML tags into the legal range.
This commit was SVN r17326.
2008-01-30 00:09:45 +00:00
Aurelien Bouteiller
2fd8230025 Windows might not be the only one...
This commit was SVN r17296.
2008-01-29 07:44:33 +00:00
Aurelien Bouteiller
bd10a0231f Replaced the explicit include of inttypes.h by the opal replacement.
This commit was SVN r17295.
2008-01-29 07:35:14 +00:00
Aurelien Bouteiller
e261861f4a Major build system modification. Removed symlinks (problem with make dist), solved issues with static builds and can accept most compile options. The only unsupported compile option for now is --enable-mca-no-build=pml-v. Still investigating this...
This commit was SVN r17294.
2008-01-29 06:07:57 +00:00
George Bosilca
fad6136794 To be or not to be ! As DR require 64 bits atomics, only allow it to
build when thread support is disabled or we have 64 bits atomics support.

This commit was SVN r17293.
2008-01-29 05:24:56 +00:00
George Bosilca
c5d5fcf50a Protect the standard header file, and allow the PML V to compile
on Windows.

This commit was SVN r17250.
2008-01-26 18:43:06 +00:00
Aurelien Bouteiller
ca8eb1fb30 There should be no leftovers of configuration phase after distclean
This commit was SVN r17249.
2008-01-26 09:56:02 +00:00
Aurelien Bouteiller
b5d44261a0 Fix one warning about extremely long lines (due to macro expansion)
This commit was SVN r17247.
2008-01-26 00:38:33 +00:00
Aurelien Bouteiller
48cabdc40b Changed build system. Should be more distcheck, VPATH, static and other compilation mode friendly.
This commit was SVN r17245.
2008-01-25 23:57:01 +00:00
Rainer Keller
f7e586fc01 - allow --enable-mca-direct=pml-ob1
This commit was SVN r17227.
2008-01-25 09:56:45 +00:00
Aurelien Bouteiller
e471abb55e put back ompi ignore until long filenames and other dist issues are fixed
This commit was SVN r17219.
2008-01-25 00:28:30 +00:00
Aurelien Bouteiller
11815d9773 Fixed two warnings (especially the one that get repeted a large number of times in 64bit builds)
This commit was SVN r17197.
2008-01-24 04:59:31 +00:00
Aurelien Bouteiller
a9045402c4 remove a pedantic warning
This commit was SVN r17196.
2008-01-24 02:29:07 +00:00
Aurelien Bouteiller
76b13f91b9 fixed link:wq error in static mode
This commit was SVN r17194.
2008-01-23 23:54:02 +00:00
Aurelien Bouteiller
f29ed2ed53 fixed missing errno.h on some architectures
This commit was SVN r17186.
2008-01-23 20:24:54 +00:00
Aurelien Bouteiller
6fe17aff4a solve compatibility issue from MMAP_NOCACHE
This commit was SVN r17184.
2008-01-23 19:29:19 +00:00
Aurelien Bouteiller
69b3bae999 removed ignore, as the code is robust enough to avoid interfering with others
This commit was SVN r17182.
2008-01-23 17:27:23 +00:00
Gleb Natapov
6e4155d111 Initialize local variable before use.
This commit was SVN r17170.
2008-01-21 15:17:49 +00:00
George Bosilca
6310ce955c The first patch related to the Active Message stuff. So far, here is what we have:
- the registration array is now global instead of one by BTL.
- each framework have to declare the entries in the registration array reserved. Then
  it have to define the internal way of sharing (or not) these entries between all
  components. As an example, the PML will not share as there is only one active PML
  at any moment, while the BTLs will have to. The tag is 8 bits long, the first 3
  are reserved for the framework while the remaining 5 are use internally by each
  framework.
- The registration function is optional. If a BTL do not provide such function,
  nothing happens. However, in the case where such function is provided in the BTL
  structure, it will be called by the BML, when a tag is registered.

Now, it's time for the second step... Converting OB1 from a switch based PML to an
active message one.

This commit was SVN r17140.
2008-01-15 05:32:53 +00:00
George Bosilca
98f79f2ea0 Remove the second declaration of the PML V component.
This commit was SVN r17139.
2008-01-15 05:26:26 +00:00
Jon Mason
a0d4122606 The new cpc selection framework is now in place. The patch below allows
for dynamic selection of cpc methods based on what is available.  It
also allows for inclusion/exclusions of methods.  It even futher allows
for modifying the priorities of certain cpc methods to better determine
the optimal cpc method.

This patch also contains XRC compile time disablement (per Jeff's
patch).

At a high level, the cpc selections works by walking through each cpc
and allowing it to test to see if it is permissable to run on this
mpirun.  It returns a priority if it is permissable or a -1 if not.  All
of the cpc names and priorities are rolled into a string.  This string
is then encapsulated in a message and passed around all the ompi
processes.  Once received and unpacked, the list received is compared
to a local copy of the list.  The connection method is chosen by
comparing the lists passed around to all nodes via modex with the list
generated locally.  Any non-negative number is a potentially valid
connection method.  The method below of determining the optimal
connection method is to take the cross-section of the two lists.  The
highest single value (and the other side being non-negative) is selected
as the cpc method.

svn merge -r 16948:17128 https://svn.open-mpi.org/svn/ompi/tmp-public/openib-cpc/ .

This commit was SVN r17138.
2008-01-14 23:22:03 +00:00
George Bosilca
1bd31aa3ac Cleanup the OMPI_DECLSPEC/OMPI_MODULE_DECLSPEC in the PMLs.
This commit was SVN r17093.
2008-01-09 20:32:39 +00:00
Gleb Natapov
b37ff74a24 Make function that is used only in one file static. Remove static functions
declaration.

This commit was SVN r17080.
2008-01-09 09:54:35 +00:00
Ethan Mallove
f32dcb1636 The Sun Studio 12 compilers need to have inline specified as
`static` in cases where a function is not part of a separate
compilation unit (such as `append_recv_req_to_queue`).

This commit was SVN r17069.
2008-01-08 18:45:51 +00:00
Aurelien Bouteiller
9bf54e1604 Windows compatibility patch.
Also introduces work in progress "convertor" sender based copy algorithm. This algorithm cannot be selected without other modifications in the convertor (not currently available in trunk). The default old synchronous copy algorithm is selected by default.

This commit was SVN r17063.
2008-01-07 23:35:44 +00:00
George Bosilca
d2324050f8 Allow the PML V component to be compiled on Windows. Force all
.c files to include the ompi_config.h as the first #include.

This commit was SVN r17056.
2008-01-05 00:17:32 +00:00
George Bosilca
42414b27e9 Use BEGIN_C_DECLS and END_C_DECLS instead of the ugly #if/#endif.
This commit was SVN r17009.
2007-12-21 06:19:46 +00:00
George Bosilca
b58dae00db Allow PERUSE to compile correctly.
This commit was SVN r17008.
2007-12-21 06:18:19 +00:00
George Bosilca
906e8bf1d1 Replace the ompi_pointer_array with opal_pointer_array. The next step
(sometimes after the merge with the ORTE branch), the opal_pointer_array
will became the only pointer_array implementation (the orte_pointer_array
will be removed).

This commit was SVN r17007.
2007-12-21 06:02:00 +00:00
Gleb Natapov
35bf8c7c46 Rewrite OB1 matching logic. Get rid of macros, make the code shorter.
This commit was SVN r16993.
2007-12-19 09:16:20 +00:00
Gleb Natapov
5cd38b8b06 Better encapsulate heterogeneous arch handling in ob1.
This commit was SVN r16970.
2007-12-16 08:45:44 +00:00
Gleb Natapov
8b511b969d Introduce a new BTL parameter btl_rndv_eager_limit which determines size of a
first fragment of rendezvous protocol. Remove no longer used btl_min_send_size
parameter.

This commit was SVN r16969.
2007-12-16 08:35:17 +00:00
Jeff Squyres
213b5d5c6e Per long threads on the mailing list and much confusion discussion
about linkers, have all OPAL, ORTE, and OMPI components '''not'' link
against the OPAL, ORTE, or OMPI libraries.

See ttp://www.open-mpi.org/community/lists/users/2007/10/4220.php for
details (or https://svn.open-mpi.org/trac/ompi/wiki/Linkers for a
better-formatted version of the same info).

This commit was SVN r16968.
2007-12-15 13:32:02 +00:00
Aurelien Bouteiller
93f39fa190 Fixes various issues with --enable-visibility, C++ and exotic C compilers.
Aurelien 

This commit was SVN r16949.
2007-12-12 19:13:23 +00:00
Gleb Natapov
e0dc53e516 Use mca_bml_base_send_status() in OB1.
This commit was SVN r16905.
2007-12-09 14:13:24 +00:00
Gleb Natapov
e2e211f23b Add flags parameter to btl_alloc() and btl_prepare_src() functions. If BTL
knows at the time of allocation priority of a descriptor it may do some
optimizations.

This commit was SVN r16901.
2007-12-09 14:08:01 +00:00
Gleb Natapov
2d784752dd Remove descriptor caching form BML. With descriptor caching some optimizations
are impossible.

This commit was SVN r16897.
2007-12-09 13:58:17 +00:00
Aurelien Bouteiller
6190c97ee9 PML V and vprotocol framework management of customizable wait/test. This is still a fast and dirty implementation (cleanup of the customized request functions is not totally correct if several component modify them out of order).
This commit was SVN r16890.
2007-12-07 08:21:25 +00:00
Aurelien Bouteiller
859169214c Vprotocol pessimist benefits from customizable requests. Waitany, waitsome, test, testany, testall, testsome can now be hooked and are therefore logged correctly.
This commit was SVN r16885.
2007-12-07 08:17:30 +00:00
Aurelien Bouteiller
15ffe6c89c Accomoding the new interface for free_lists.
This commit was SVN r16727.
2007-11-16 00:00:38 +00:00
Rich Graham
27a748e7eb change all instances of ompi_free_list_init to ompi_free_list_init_new. Header
and payload data are specified separately at this stage.

This commit was SVN r16633.
2007-11-01 23:38:50 +00:00
Rich Graham
67f4b69848 propogate fix for out of buffered send memory space to dr and ob1 - thanks
George.

This commit was SVN r16593.
2007-10-27 00:17:53 +00:00
Rich Graham
9c0483088a if unable to get buffered space, try and progress communications to
free up resources.

This commit was SVN r16591.
2007-10-26 23:16:31 +00:00
Gleb Natapov
52c6160252 MCA_PML_BASE_REQUEST_MPI_COMPLETE() macro does nothing except call to
ompi_request_complete(). Remove the macro and call the function directly.

This commit was SVN r16498.
2007-10-18 14:20:24 +00:00
George Bosilca
aa20a94b6f Remove warning about an unused variable.
This commit was SVN r16497.
2007-10-18 13:48:56 +00:00
Gleb Natapov
4f865e22e8 We have two different version of ompi_request_complete. One as a function
another as a macro. Make it one inline function.

This commit was SVN r16495.
2007-10-18 13:02:27 +00:00
Gleb Natapov
e0a3a7e53e Move duplicated code all over the code to a single function ompi_request_wait_completion().
This commit was SVN r16494.
2007-10-18 12:33:21 +00:00
Gleb Natapov
807f49ed7f If there are more then one BTL present we may divide payload between them in
such a way that converter will not be able to pack some of it. This commit adds
handling of such cases. If converter can't pack any data for a BTL the data is
sent over another BTL that has data to send.

This commit was SVN r16493.
2007-10-18 12:07:37 +00:00
Gleb Natapov
1330974e5e eager_limit is no longer needed in OB1 PML. Remove it.
This commit was SVN r16442.
2007-10-15 09:26:42 +00:00
George Bosilca
e3105a85be Don't require a progress function from the PML. If there is one then the
PML base will take care of the registration with the event library.
Otherwise, (and this apply for the CM case) the MTL are in charge of
registering their own progress function.

This commit was SVN r16415.
2007-10-09 23:28:53 +00:00
Galen Shipman
62ade993ca Seperate finalize and close for the PML, this gives the PML a chance to complete any outstanding operations prior to close. Before this change we just called pml_finalize in pml_close which causes problems if there are outstanding events that a BTL/MTL needs to progress during finalize. The problem is that MPI_COMM_WORLD and others were destroyed prior to closing the PML, pml_close would call pml_finalize, events would progress in the BTL, and these events expected MPI_COMM_WORLD to still be around..
This commit was SVN r16405.
2007-10-09 15:28:56 +00:00
Josh Hursey
7437f37e96 This commit contains the following:
* Fix some missing includes in a few places.
 * Add the cr_request() functionality to the BLCR CRS component.
   We are now dependent upon the 0.6.* series of BLCR.
 * Made the CR notification mechanism a registered function.
   This way we can have an OPAL-only version and it can be replaced at
   runtime with the ORTE version.
 * Add a 'opal_cr_allow_opal_only' parameter that will enable OPAL-only
   CR functionality when the user wants it. Default: Disabled.
 * Fix the placement of a checkpoint request check in MPI_Init
 * Pull the OPAL notification mechanism into the SnapC framework.
   * We no longer fork/exec the 'opal-checkpoint' command for local
   checkpointing, the Local coordinator in the orted does this directly.
   * The Local and Application coordinator talk together bypassing the OPAL
   notifiation mechanism.
   * Optimized the Local <-> App Coordinator communication.
   * Improved the structure used to track vpid_snapshots in the local coord.
 * Fix a race condition in which an application under heavy communication load
   may produce an inconsistent global checkpoint.

This commit was SVN r16389.
2007-10-08 20:53:02 +00:00
Ralph Castain
54b2cf747e These changes were mostly captured in a prior RFC (except for #2 below) and are aimed specifically at improving startup performance and setting up the remaining modifications described in that RFC.
The commit has been tested for C/R and Cray operations, and on Odin (SLURM, rsh) and RoadRunner (TM). I tried to update all environments, but obviously could not test them. I know that Windows needs some work, and have highlighted what is know to be needed in the odls process component.

This represents a lot of work by Brian, Tim P, Josh, and myself, with much advice from Jeff and others. For posterity, I have appended a copy of the email describing the work that was done:

As we have repeatedly noted, the modex operation in MPI_Init is the single greatest consumer of time during startup. To-date, we have executed that operation as an ORTE stage gate that held the process until a startup message containing all required modex (and OOB contact info - see #3 below) info could be sent to it. Each process would send its data to the HNP's registry, which assembled and sent the message when all processes had reported in.

In addition, ORTE had taken responsibility for monitoring process status as it progressed through a series of "stage gates". The process reported its status at each gate, and ORTE would then send a "release" message once all procs had reported in.

The incoming changes revamp these procedures in three ways:

1. eliminating the ORTE stage gate system and cleanly delineating responsibility between the OMPI and ORTE layers for MPI init/finalize. The modex stage gate (STG1) has been replaced by a collective operation in the modex itself that performs an allgather on the required modex info. The allgather is implemented using the orte_grpcomm framework since the BTL's are not active at that point. At the moment, the grpcomm framework only has a "basic" component analogous to OMPI's "basic" coll framework - I would recommend that the MPI team create additional, more advanced components to improve performance of this step.

The other stage gates have been replaced by orte_grpcomm barrier functions. We tried to use MPI barriers instead (since the BTL's are active at that point), but - as we discussed on the telecon - these are not currently true barriers so the job would hang when we fell through while messages were still in process. Note that the grpcomm barrier doesn't actually resolve that problem, but Brian has pointed out that we are unlikely to ever see it violated. Again, you might want to spend a little time on an advanced barrier algorithm as the one in "basic" is very simplistic.

Summarizing this change: ORTE no longer tracks process state nor has direct responsibility for synchronizing jobs. This is now done via collective operations within the MPI layer, albeit using ORTE collective communication services. I -strongly- urge the MPI team to implement advanced collective algorithms to improve the performance of this critical procedure.


2. reducing the volume of data exchanged during modex. Data in the modex consisted of the process name, the name of the node where that process is located (expressed as a string), plus a string representation of all contact info. The nodename was required in order for the modex to determine if the process was local or not - in addition, some people like to have it to print pretty error messages when a connection failed.

The size of this data has been reduced in three ways:

(a) reducing the size of the process name itself. The process name consisted of two 32-bit fields for the jobid and vpid. This is far larger than any current system, or system likely to exist in the near future, can support. Accordingly, the default size of these fields has been reduced to 16-bits, which means you can have 32k procs in each of 32k jobs. Since the daemons must have a vpid, and we require one daemon/node, this also restricts the default configuration to 32k nodes.

To support any future "mega-clusters", a configuration option --enable-jumbo-apps has been added. This option increases the jobid and vpid field sizes to 32-bits. Someday, if necessary, someone can add yet another option to increase them to 64-bits, I suppose.

(b) replacing the string nodename with an integer nodeid. Since we have one daemon/node, the nodeid corresponds to the local daemon's vpid. This replaces an often lengthy string with only 2 (or at most 4) bytes, a substantial reduction.

(c) when the mca param requesting that nodenames be sent to support pretty error messages, a second mca param is now used to request FQDN - otherwise, the domain name is stripped (by default) from the message to save space. If someone wants to combine those into a single param somehow (perhaps with an argument?), they are welcome to do so - I didn't want to alter what people are already using.

While these may seem like small savings, they actually amount to a significant impact when aggregated across the entire modex operation. Since every proc must receive the modex data regardless of the collective used to send it, just reducing the size of the process name removes nearly 400MBytes of communication from a 32k proc job (admittedly, much of this comm may occur in parallel). So it does add up pretty quickly.


3. routing RML messages to reduce connections. The default messaging system remains point-to-point - i.e., each proc opens a socket to every proc it communicates with and sends its messages directly. A new option uses the orteds as routers - i.e., each proc only opens a single socket to its local orted. All messages are sent from the proc to the orted, which forwards the message to the orted on the node where the intended recipient proc is located - that orted then forwards the message to its local proc (the recipient). This greatly reduces the connection storm we have encountered during startup.

It also has the benefit of removing the sharing of every proc's OOB contact with every other proc. The orted routing tables are populated during launch since every orted gets a map of where every proc is being placed. Each proc, therefore, only needs to know the contact info for its local daemon, which is passed in via the environment when the proc is fork/exec'd by the daemon. This alone removes ~50 bytes/process of communication that was in the current STG1 startup message - so for our 32k proc job, this saves us roughly 32k*50 = 1.6MBytes sent to 32k procs = 51GBytes of messaging.

Note that you can use the new routing method by specifying -mca routed tree - if you so desire. This mode will become the default at some point in the future.


There are a few minor additional changes in the commit that I'll just note in passing:

* propagation of command line mca params to the orteds - fixes ticket #1073. See note there for details.

* requiring of "finalize" prior to "exit" for MPI procs - fixes ticket #1144. See note there for details.

* cleanup of some stale header files

This commit was SVN r16364.
2007-10-05 19:48:23 +00:00
Aurelien Bouteiller
670956e172 Another cast mistake.
This commit was SVN r16247.
2007-09-26 21:14:35 +00:00
Aurelien Bouteiller
f7d7d58fb6 Various cast type errors on 64bit architectures
This commit was SVN r16246.
2007-09-26 20:54:18 +00:00
Aurelien Bouteiller
0df0087f17 Investigating improvement of cache line management on shared memory
This commit was SVN r16183.
2007-09-21 20:02:56 +00:00
Josh Hursey
3e51d7bb25 Implement the MPI_Iprobe and MPI_Probe wrappers.
Remove some old, unused code.

This commit was SVN r16178.
2007-09-21 16:28:46 +00:00
Aurelien Bouteiller
d3b376a340 This patch adds actual non-blocking sender-based message logging. This improves bandwidth. Still need to work on malloc/mmap storage to reach optimal bandwidth.
This commit was SVN r16172.
2007-09-21 03:24:08 +00:00
Aurelien Bouteiller
bc318b35e2 There is room in convertor to copy the packed data. It works just need to add the correct memcopy. It does not manage the short messages but I alreqdy think of a workaround for this (and it might even be better regarding latency).
This commit was SVN r16169.
2007-09-20 21:57:21 +00:00
Aurelien Bouteiller
bbac6e650a New improved version of sender-based. Under dev but a new framework for expressing various methods have been added.
This commit was SVN r16159.
2007-09-19 03:42:56 +00:00
Gleb Natapov
097b17d30e Prevent a receive request from been freed while other thread holds a reference
to it or there is an outstanding completion for the request.

This commit was SVN r16153.
2007-09-18 16:18:47 +00:00
Aurelien Bouteiller
a1f5312afb Fixed two little warnings
This commit was SVN r16116.
2007-09-12 21:07:11 +00:00
Aurelien Bouteiller
ccb3f75e8f Make sure that the pml v parasite never get loaded when user did not requested FT. This does not break the ability to switch protocol on the fly.
This commit was SVN r16114.
2007-09-12 20:47:17 +00:00
Aurelien Bouteiller
828af95be8 Major modification of the vprotocol framework build system. With a better integration in autogen.sh, it allows for generating static-components.h the usual way.
NOTE: This build system does not work with the current autogen.sh. Modified one is under heavy testing to make sure it does not have side effects 

This commit was SVN r16110.
2007-09-12 18:46:37 +00:00
George Bosilca
05ae27c68b Don't segfault if we receive a fragment for a non existing communicator.
Instead, drop it by now.

This commit was SVN r16105.
2007-09-12 17:52:02 +00:00
Shiqing Fan
a0660f4deb - Just some type casts.
This commit was SVN r16100.
2007-09-12 15:29:58 +00:00
Gleb Natapov
07c8fddeef Fix scheduling of pending send request. It should be scheduled req_lock times.
This commit was SVN r16096.
2007-09-12 07:08:38 +00:00
George Bosilca
d8fed2cfa1 Set a default value so that some compilers stop complaining about
uninitialized values.

This commit was SVN r16094.
2007-09-11 18:00:53 +00:00
Gleb Natapov
79011279e5 Remove debug output.
This commit was SVN r16016.
2007-08-30 13:29:41 +00:00
Gleb Natapov
690fb95bda Cleanup send scheduling code.
This commit was SVN r16014.
2007-08-30 12:10:04 +00:00
Gleb Natapov
0b0f9d14aa Mark send request complete on PML level only when absolutely sure there is
no more work associated with this request. No more outstanding completions or
packets and send scheduling isn't running in another thread.

This commit was SVN r16013.
2007-08-30 12:08:33 +00:00
Gleb Natapov
eac2674f66 The inner voice tells me this is a typo.
This commit was SVN r16004.
2007-08-29 13:28:47 +00:00
Brian Barrett
59b22533f2 Enable RDMA for heterogeneous situations. Currently done by overloading
the ompi_convertor_need_buffers function to only return 0 if the convertor
is homogeneous (which it never does on the trunk, but does to on v1.2, but
that's a different issue).  Only enable the heterogeneous rdma code for
a btl if it supports it (via a flag), as some btls need some work for this
to work properly.  Currently only TCP and OpenIB extensively tested

This commit was SVN r15990.
2007-08-28 21:23:44 +00:00
Gleb Natapov
fa69c5cc10 If a memory on a sender's size is not registered don't register it on a receive
side too. Otherwise a content of the recvreq->req_rdma array is replaced later
without freeing previous content and refcount on registration in mpool become
wrong.

This commit was SVN r15978.
2007-08-28 07:43:06 +00:00
Gleb Natapov
e1a1d9d90e Receive request converter can be accessed in parallel by a thread that receives
data and a thread that run RDMA schedule function. Protect access to the
converter by a lock.

This commit was SVN r15967.
2007-08-27 11:41:42 +00:00
Gleb Natapov
065d04dfde Do not free recvreq while schedule function is running in another thread.
This commit was SVN r15964.
2007-08-27 11:31:40 +00:00
Rainer Keller
1b5fa48a29 - Add missing PERUSE_COMM_REQ_REMOVE_FROM_POSTED_Q when matching
from the posted generic_recv-queue.
 - Move the PERUSE_COMM_MSG_MATCH_POSTED_REQ from
   MCA_PML_OB1_RECV_REQUEST_MATCHED to
   mca_pml_ob1_recv_frag_match() as suggested by Terry Dontje
   Only post, if this is not a probe/iprobe request.
 - Do not post PERUSE_COMM_REQ_MATCH_UNEX for probes / iprobes and
   do in correct order before PERUSE_COMM_MSG_REMOVE_FROM_UNEX_Q

This commit was SVN r15947.
2007-08-23 07:09:43 +00:00
Rainer Keller
c175801f98 - Initialize in the order of mca_pml_ob1_comm_proc_t...
This commit was SVN r15946.
2007-08-23 05:56:22 +00:00
Rainer Keller
b0df55d53b - For MPI_Probe/MPI_Iprobe, we should not have a
PERUSE_COMM_REQ_ACTIVATE event.
   Therefore move the PERUSE_TRACE_COMM_EVENT for this event from
   MCA_PML_BASE_SEND_REQUEST_INIT / MCA_PML_BASE_RECV_REQUEST_INIT
   to the proper places into pml_ob1_isend.c / pml_ob1_irecv.c right
   after the MCA_PML_OB1_SEND_REQUEST_INIT /
   MCA_PML_OB1_RECV_REQUEST_INIT.

This commit was SVN r15945.
2007-08-23 05:52:33 +00:00
Gleb Natapov
5596aa5f53 The sizes of mca_pml_ob1_send_request_t and mca_pml_ob1_recv_request_t depend
on a parameter and are determined in runtime. r15346 removed calculation of
correct sizes for this structures. This patch adds it back and fixes trac:1116, #1114.

This commit was SVN r15932.

The following SVN revision numbers were found above:
  r15346 --> open-mpi/ompi@433f8a7694

The following Trac tickets were found above:
  Ticket 1116 --> https://svn.open-mpi.org/trac/ompi/ticket/1116
2007-08-20 12:06:27 +00:00
George Bosilca
c7e0ab93ae Don't forget to include string.h for the strcmp function.
This commit was SVN r15927.
2007-08-19 19:59:15 +00:00
Josh Hursey
729c63cf9d Fix invalid MCA 'base' names so they appear in ompi_info.
A subset of this patch needs to be applied to v1.2

Refs trac:928

This commit was SVN r15918.

The following Trac tickets were found above:
  Ticket 928 --> https://svn.open-mpi.org/trac/ompi/ticket/928
2007-08-18 03:05:45 +00:00
Aurelien Bouteiller
3a83c61c40 Fixed a bug with available space in sender based.
This commit was SVN r15889.
2007-08-16 17:54:26 +00:00
Aurelien Bouteiller
77565d60d9 Heavy modification of the pml_v framework.
* Code cleanup and rationalization
* Fixed: mca_pml_base_send/recv_request are now allocated before recreation by the PML-V
* Fixed: pointer arithmetic bug in sender based that crashed 
* Changed: directory structure. This is one step forward using autogen.sh to build static-components.h (it needs to have the directory structure of a mca framework for this). 

This commit was SVN r15878.
2007-08-16 05:52:30 +00:00
Aurelien Bouteiller
ee708d702d Slight modification to register the name of the selected pml (from the pml framework) instead of the generic mca name. This might be a different name when enabling FT features. This name modification in the modex allows the PMLS to detect a FT protocol mismatch among hosts.
This commit was SVN r15877.
2007-08-16 05:46:11 +00:00
Aurelien Bouteiller
fa7f6f6722 Improved error detection of request types
This commit was SVN r15857.
2007-08-14 17:24:46 +00:00
Aurelien Bouteiller
67399e7c31 Added a debug type checking for request types (to make sure request size is correctly computed).
This commit was SVN r15856.
2007-08-14 17:18:15 +00:00
Aurelien Bouteiller
1d97c183e7 Better argument checking for output function and added a routine for error printing.
This commit was SVN r15855.
2007-08-14 17:17:12 +00:00
Aurelien Bouteiller
ca69915b1e Code cleanup
This commit was SVN r15783.
2007-08-06 22:20:44 +00:00
Mohamad Chaarawi
59a7bf8a9f Merging in the Sparse Groups..
This commit includes config changes..

This commit was SVN r15764.
2007-08-04 00:41:26 +00:00
George Bosilca
e41ee17ca5 Add a small comment that hopefully will enforce the correct ordering of
the fields between CM and the other PML in the requests structure.

This commit was SVN r15760.
2007-08-03 23:59:29 +00:00
Aurelien Bouteiller
1d160ca583 Needed change for vampir pml to work
This commit was SVN r15750.
2007-08-03 02:23:24 +00:00
Gleb Natapov
627d9bc8ed Delay freeing of a send request if scheduling function is running by other
thread.

This commit was SVN r15722.
2007-08-01 12:19:16 +00:00
Aurelien Bouteiller
a403fed18a More checkings (assert) on the output system so that malformed format string does not crash the application at a later random time.
Changed various debug messages to retain most usefull messages

This commit was SVN r15715.
2007-07-31 19:33:39 +00:00
Aurelien Bouteiller
cec9ce8106 Fixed: various warnings with printf(%x, uint64_t) on 32 bit architectures + some left (long) cast for size_t printf.
This commit was SVN r15706.
2007-07-31 17:12:21 +00:00
Aurelien Bouteiller
a5d0e53bb3 Moved replay macros to functions. The performance improvement in process recovery does not worth the debugging hassle.
This commit was SVN r15703.
2007-07-31 16:01:32 +00:00
Aurelien Bouteiller
5a792a3fad (hopefully) fixed various pedantic warning about casts on 32bit machines. Not tried only have 64bits available.
This commit was SVN r15702.
2007-07-31 15:58:19 +00:00
Aurelien Bouteiller
3559fd5d1a Fixed issues with "verbose" output being too silent.
This commit was SVN r15691.
2007-07-30 19:11:15 +00:00
Gleb Natapov
afac5eb93f Guard recv request with lock against simultaneous access from different
threads.

This commit was SVN r15681.
2007-07-30 12:50:38 +00:00
Gleb Natapov
21dd061696 Init req_send_range_lock. Found by Terry Dontje.
This commit was SVN r15677.
2007-07-30 08:21:52 +00:00
Aurelien Bouteiller
17e10ff918 Modified the output system to comply with a wider range of compilers.
Jelena: this should solve the issue you faced today. 

This commit was SVN r15668.
2007-07-27 23:11:00 +00:00
Aurelien Bouteiller
e07b95bdd5 Fixed: warnings with printf(%d, size_t)
Fixed: All copyrights are now correct up to 2007
Fixed: Build system now works with VPATHs
Changed: protocol_example is now ignored by default

This commit was SVN r15627.
2007-07-25 22:28:04 +00:00
Galen Shipman
f6a20715b7 minor nit..
This commit was SVN r15619.
2007-07-25 17:34:37 +00:00
George Bosilca
873bd41796 More fixes for the Windows suport.
This commit was SVN r15602.
2007-07-25 04:22:21 +00:00
George Bosilca
10175c3014 No more warnings in the PML V.
This commit was SVN r15601.
2007-07-25 04:19:58 +00:00
George Bosilca
c6d2e03cdd Correct the prototype for non GNU compilers.
This commit was SVN r15598.
2007-07-25 03:50:35 +00:00
Aurelien Bouteiller
16da13c79e Missing file...
This commit was SVN r15540.
2007-07-20 22:24:02 +00:00
Aurelien Bouteiller
70bb44d7a9 Moving the Message Log framework to the trunk. Protocol example (simple
showcase) and sender based are provided for now.

Ignored by default except for utk folks. 

This commit was SVN r15539.
2007-07-20 21:36:11 +00:00
Brian Barrett
5b9fa7e998 reapply r15517 and r15520, which were removed in r15527 so that I could get
the RML/OOB merge in slightly easier

This commit was SVN r15530.

The following SVN revision numbers were found above:
  r15517 --> open-mpi/ompi@41977fcc95
  r15520 --> open-mpi/ompi@9cbc9df1b8
  r15527 --> open-mpi/ompi@2d17dd9516
2007-07-20 02:34:29 +00:00
Brian Barrett
39a6057fc6 A number of improvements / changes to the RML/OOB layers:
* General TCP cleanup for OPAL / ORTE
  * Simplifying the OOB by moving much of the logic into the RML
  * Allowing the OOB RML component to do routing of messages
  * Adding a component framework for handling routing tables
  * Moving the xcast functionality from the OOB base to its own framework

Includes merge from tmp/bwb-oob-rml-merge revisions:

    r15506, r15507, r15508, r15510, r15511, r15512, r15513

This commit was SVN r15528.

The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
  r15506
  r15507
  r15508
  r15510
  r15511
  r15512
  r15513
2007-07-20 01:34:02 +00:00
Brian Barrett
2d17dd9516 temporarily back our r15517 and 15520 so that I can get the RML / OOB changes
to cleanly apply

This commit was SVN r15527.

The following SVN revision numbers were found above:
  r15517 --> open-mpi/ompi@41977fcc95
2007-07-20 01:10:34 +00:00
Ralph Castain
41977fcc95 Remove the cellid field from the orte_process_name_t structure. This only affects a handful of files in itself, but...
Cleanup ALL instances of output involving the printing of orte_process_name_t structures using the ORTE_NAME_ARGS macro so that the number of fields and type of data match. Replace those values with a new macro/function pair ORTE_NAME_PRINT that outputs a string (using the new thread safe data capability) so that any future changes to the printing of those structures can be accomplished with a change to a single point.

Note that I could not possibly find outputs that directly print the orte_process_name_t fields, but only dealt with those that used ORTE_NAME_ARGS. Hence, you may still have a few outputs that bark during compilation. Also, I could only verify those that fall within environments I can compile on, so other environments may yield some minor warnings.

This commit was SVN r15517.
2007-07-19 20:56:46 +00:00
Rich Graham
f2a30cde5d add table of send completion callback functions, on a per send-type
basis.

This commit was SVN r15471.
2007-07-17 21:26:56 +00:00
Rich Graham
0991c3d5f5 move buffered send component clean up out of the pml to ompi_mpi_finalize.
This commit was SVN r15463.
2007-07-17 14:50:52 +00:00
Rich Graham
1a4ce2a961 move setting of the component used to managed buffer sends out of the
pmls, and into ompi_mpi_init.  This is the first of several steps to pull
buffered send management out of the pmls.

This commit was SVN r15451.
2007-07-16 21:52:25 +00:00
George Bosilca
1e825888a5 Fix the problem reported on #1087. The global send and receive requests queues are
now release in the base close, so there is no need for the cm PML to destroy them.

This commit was SVN r15425.
2007-07-13 23:56:09 +00:00
George Bosilca
8643f38adf Don't allow the BTL to be closed before the end of the process. Count the
number of times the BTLs are opened, and then don't remove them until
close was called the same number of times.

This commit was SVN r15376.
2007-07-11 22:21:04 +00:00
George Bosilca
9ed3ede73e Correct the thin and heavy requests management for the CM PML.
This commit was SVN r15361.
2007-07-11 15:10:01 +00:00
George Bosilca
ef7d17d814 Fix a copy&paste typo.
This commit was SVN r15360.
2007-07-11 15:09:06 +00:00
George Bosilca
9b501eb66d Looks like MAX is not a standard macro. Anyway, that the heavy requests is larger than the thin
seems to be a "correct" assumption.

This commit was SVN r15348.
2007-07-11 00:04:33 +00:00
George Bosilca
e19777e910 A more consistent version. As we now share the send and receive queue, we
have to construct/destruct only once. Therefore, the construction will
happens before digging for a PML, while the destruction just before
finalizing the component.

Add some OPAL_LIKELY/OPAL_UNLIKELY.

This commit was SVN r15347.
2007-07-10 23:45:23 +00:00
George Bosilca
433f8a7694 This patch bring full support for message queues in Open MPI. Now the send and
receive queues are shared among all PMLs, they are declared in the base PML,
and the selected PML is in charge of initializing and releasing them. 

The CM PML is slightly different compared with OB1 or DR. Internally it use
2 different types of requests: light and heavy. However, now with this patch
both types of requests are stored in the same queue, and cast appropriately
on the allocation macro. This means we might use less memory than we allocate,
but in exchange we got full support for most of the parallel debuggers.

Another thing with this patch, is that now for all PML (CM included) the basic
PML requests start with the same fields, and they are declared in the same order
in the request structure. Moreover, the fields have been moved in such a way
that only one volatile/atomic will exist per line of cache (hopefully).

This commit was SVN r15346.
2007-07-10 22:16:38 +00:00
Brian Barrett
8b9e8054fd Move modex from pml base to general ompi runtime, sicne it's used by more
than just the PML/BTLs these days.  Also clean up the code so that it
handles the situation where not all nodes register information for a given
node (rather than just spinning until that node sends information, like
we do today).

Includes r15234 and r15265 from the /tmp/bwb-modex branch.

This commit was SVN r15310.

The following SVN revisions from the original message are invalid or
inconsistent and therefore were not cross-referenced:
  r15234
  r15265
2007-07-09 17:16:34 +00:00
Tim Prins
f3ac4ac20e Fix order of function arguments
This commit was SVN r15304.
2007-07-08 16:37:51 +00:00
Rainer Keller
cff1b6a71b - PERUSE_COMM_REQ_XFER_BEGIN should be emited for first fragment
of larger message as well.

This commit was SVN r15299.
2007-07-06 15:02:36 +00:00
George Bosilca
951e4929b9 Usually it's unlikely to have additional fragments.
This commit was SVN r15253.
2007-07-01 16:19:53 +00:00
George Bosilca
c435094639 Only trigger the PERUSE_COMM_REQ_XFER_BEGIN event on the initial fragment.
This commit was SVN r15252.
2007-07-01 16:19:13 +00:00
George Bosilca
60319f99ac Make sure in case of error what we return is clean (set to NULL).
This commit was SVN r15251.
2007-07-01 16:17:43 +00:00
George Bosilca
11656e20aa Remove few warnings.
This commit was SVN r15250.
2007-07-01 16:16:05 +00:00
Gleb Natapov
77e54ebc7e Schedule RDMA op on the last BTL that got completion.
This commit was SVN r15249.
2007-07-01 11:35:55 +00:00
Gleb Natapov
54b40aef91 Schedule SEND traffic of pipeline protocol between BTLs in accordance with
relative bandwidths of each BTL. Precalculate what part of a message should
be send via each BTL in advance instead of doing it during scheduling.

This commit was SVN r15248.
2007-07-01 11:34:23 +00:00
Gleb Natapov
e74aa6b295 Schedule RDMA traffic between BTLs in accordance with relative bandwidths of
each BTL. Precalculate what part of a message should be send via each BTL in
advance instead of doing it during scheduling.

This commit was SVN r15247.
2007-07-01 11:31:26 +00:00
Gleb Natapov
1c7141df4d Remove unused struct.
This commit was SVN r15228.
2007-06-28 11:58:16 +00:00
Gleb Natapov
b88b7dedfe Rename btl_rdma_offset to btl_pipeline_send_length.
This commit was SVN r15153.
2007-06-21 07:12:40 +00:00
Josh Hursey
7fd1805e97 Fix a couple of compile warnings that Tim P brought to by attention.
This commit was SVN r15132.
2007-06-19 00:46:16 +00:00
George Bosilca
10a017d1bf For a obscure reason this have to be defined on Windows. The obscure
reason it's that we don't have the nice configure stuff, so detecting
when to enable the CR PML it's kind of hard. Keep it defined and at
least it compile smoothly.

This commit was SVN r15116.
2007-06-17 05:01:09 +00:00
Rainer Keller
ca09aae2cc - Get PERUSE compile again with latest RDMA changes in r14768/r14842.
This commit was SVN r15042.

The following SVN revision numbers were found above:
  r14768 --> open-mpi/ompi@3401bd2b07
  r14842 --> open-mpi/ompi@10266fb467
2007-06-13 12:47:47 +00:00
Brian Barrett
84d1512fba Add the potential for doing some basic error checking on mutexes during
single threaded builds.  In its default configuration, all this does
is ensure that there's at least a good chance of threads building
based on non-threaded development (since the variable names will be
checked).  There is also code to make sure that a "mutex" is never
"double locked" when using the conditional macro mutex operations.
This is off by default because there are a number of places in both
ORTE and OMPI where this alarm spews mega bytes of errors on a
simple test.  So we have some work to do on our path towards
thread support.

Also removed the macro versions of the non-conditional thread locks,
as the only places they were used, the author of the code intended
to use the conditional thread locks.  So now you have upper-case
macros for conditional thread locks and lowercase functions for
non-conditional locks.  Simple, right? :).

This commit was SVN r15011.
2007-06-12 16:25:26 +00:00
Gleb Natapov
423f404c34 Shut up compiler warning. Ugly, but I can see better way except changing
converter to use uint64_t(ssize_t?) for offset.

This commit was SVN r14950.
2007-06-07 11:33:28 +00:00
Gleb Natapov
9f9b64db4e Revert r14947 as this doesn't solve the problem.
This commit was SVN r14949.

The following SVN revision numbers were found above:
  r14947 --> open-mpi/ompi@5b9fe28e3f
2007-06-07 11:24:24 +00:00
Gleb Natapov
5b9fe28e3f Fix warning on 32bit systems.
This commit was SVN r14947.
2007-06-07 08:57:34 +00:00
Rich Graham
e276f7bcc7 undo my error.
This commit was SVN r14890.
2007-06-05 23:32:47 +00:00
Rich Graham
ce0e9ac329 initialize lock properly.
This commit was SVN r14881.
2007-06-05 20:34:11 +00:00
Shiqing Fan
c142c23f88 Initialize req_ompi.req_status._count to be 0 before starting the request.
This commit was SVN r14861.
2007-06-05 09:50:06 +00:00
Shiqing Fan
0961669912 Spaces after backslash are removed.
This commit was SVN r14844.
2007-06-04 10:10:24 +00:00
Shiqing Fan
7bf18a4fd5 MPI_SOURCE should be initialized.
This commit was SVN r14843.
2007-06-04 09:37:21 +00:00
Gleb Natapov
10266fb467 Fix deadlock in OB1 protocol by by sending memory by copying if registration
fails.

This commit was SVN r14842.
2007-06-03 08:31:58 +00:00
Gleb Natapov
a25e1e7b15 Implement new function mca_pml_ob1_send_requst_copy_in_out(req, offset, len)
that allows to send any range of a request by send/recv instaed of RDMA
and use it to send data from the end of a request in pipeline protocol. 

This commit was SVN r14841.
2007-06-03 08:30:07 +00:00
Gleb Natapov
06bf5d74e7 Remove mca_pml_ob1_send_fin_btl function.
This commit was SVN r14784.
2007-05-28 06:51:12 +00:00
Gleb Natapov
f5078db0db Fix order of parameters to function.
This commit was SVN r14783.
2007-05-27 13:45:24 +00:00
Gleb Natapov
ad69d3c6ac Fix out of resource handling for FIN packets broken by r14768.
This commit was SVN r14780.

The following SVN revision numbers were found above:
  r14768 --> open-mpi/ompi@3401bd2b07
2007-05-27 08:29:38 +00:00
Galen Shipman
3401bd2b07 Add optional ordering to the BTL interface.
This is required to tighten up the BTL semantics. Ordering is not guaranteed,
but, if the BTL returns a order tag in a descriptor (other than
MCA_BTL_NO_ORDER) then we may request another descriptor that will obey
ordering w.r.t. to the other descriptor.


This will allow sane behavior for RDMA networks, where local completion of an
RDMA operation on the active side does not imply remote completion on the
passive side. If we send a FIN message after local completion and the FIN is
not ordered w.r.t. the RDMA operation then badness may occur as the passive
side may now try to deregister the memory and the RDMA operation may still be
pending on the passive side. 

Note that this has no impact on networks that don't suffer from this
limitation as the ORDER tag can simply always be specified as
MCA_BTL_NO_ORDER.

This commit was SVN r14768.
2007-05-24 19:51:26 +00:00