Enable PAMIX extensions to enable/disable interrupts

(ibm) F182395
(ibm) 03ffc63daea2f65a6e51947043f38c73a02b9d25

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
Issue 6292: romio ad_bg bug fix for uninitialized struct

When the communicator size is 1 the pset processing is skipped and the
proc structure is to be initialized with appropriate values.

(ibm) Issue 6292
(ibm) 853a826f74e577224dc100ff959b562cc60cbabb

Signed-off-by: Su Huang <suhuang@us.ibm.com>
Handle count 0 allreduce

(ibm) Issue 8805
(ibm) 57cdcba6d9cd6858ed460f836c69dd052628c950

Signed-off-by: sssharka <sssharka@us.ibm.com>
fix bug in the 'is_local_task' extension.

The extension was reporting a non-zero value when the specified task is
local, but the src/mpid/pamid/src/pt2pt/mpidi_sendmsg.c is expecting a
boolean value to be used in the point-to-point eager limit lookup.

On bgq, the reported value was '64' which caused the eager limit lookup
to go off the end of the array.

The pe 'shift value' is 0 which will result in the expression
(1UL << 0) and should be optimized out by the compiler.

(ibm) Issue 8879
(ibm) 9c643ab134c3dfda3fac6ad5e3f77a51ac805372

Signed-off-by: Charles Archer <archerc@us.ibm.com>
MPI_File_get_position_share fail in mpich2

Variable could be passed into io routines uninitialized.
A file read was supposed to write the current values into the uninit
variable, but under certain circumstances the read would be 0
bytes, leading to the read call returning 0 and leaving the value
uninitialized.

Simple fix is to always init to zero. This preserves the original
meaning of a 0 byte read.

(ibm) D187003
(ibm) 6b32b4c853d24ba8f39ebe030688e3fde6be6db8

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
Added cross file for 32 bit

(ibm) cd0bf3564d3506c1a2b5dbc69433cc06e5495b08

Signed-off-by: Bob Cernohous <bobc@us.ibm.com>
Utility functions originally from "7 MPI-COM error injection cases core dump with MPICH2"

    (ibm) D183554
    (ibm) Rh62qdr
    (ibm) 05023445d12c781486885571b98ad98db9162d98
Add 'PAMID_PT2PT_LIMITS' env var to specify *all* point-to-point limit overrides

The entire point-to-point limit set is determined by three boolean
configuration values:
- 'is non-local limit'   vs 'is local limit'
- 'is eager limit'       vs 'is immediate limit'
- 'is application limit' vs 'is internal limit'

The point-to-point configuration limit values are specified in order and
are delimited by ':' characters. If a value is not specified for a given
configuration then the limit is not changed. All eight configuration
values are not required to be specified, although in order to set the
last (eighth) configuration value the previous seven configurations must
be listed. The 'k', 'K', 'm', and 'M' multipliers may be specified. For
example:

   PAMID_PT2PT_LIMITS=":::::::10k"

The configuration entries can be described as:
   0 - remote eager     application limit
   1 - local  eager     application limit
   2 - remote immediate application limit
   3 - local  immediate application limit
   4 - remote eager     internal    limit
   5 - local  eager     internal    limit
   6 - remote immediate internal    limit
   7 - local  immediate internal    limit

Examples:

   "10K"
     - sets the application internode eager (the "normal" eager limit)

   "10240::64"
     - sets the application internode eager and immediate limits

   "::::0:0:0:0"
     - disables 'eager' and 'immediate' for all internal point-to-point

(ibm) d39d893d857c4ffe7e860b7566592f0ca61ee484

Signed-off-by: Su Huang <suhuang@us.ibm.com>
Simplify and clarify the 'MPIDI_PT2PT_LIMIT' macro by splitting it in two.

(ibm) 35001dac7082ff96a7ce3ced2d9787512a120556

Signed-off-by: Su Huang <suhuang@us.ibm.com>
Create a task scaling threshold at which point internal eager is disabled

A new mpidi_platform.h define sets the job size threshold at which
point the default 'internal eager' limits are set to zero. This has the
same effect as specifying the environment variable:

  PAMID_PT2PT_LIMITS=::::0:0:0:0

The current threshold for bgq is 512k tasks. The default threshold for
all other platforms is 'max unsigned int" which effectively disables
this threshold check.

This 'disable internal eager' threshold check is done before any
envrionment variable processing.

(ibm) ad02891421a83ed1a57d9da7d5ecaa675e572cfb

Signed-off-by: Su Huang <suhuang@us.ibm.com>
New environment varariable: 'PAMID_DISABLE_INTERNAL_EAGER_TASK_LIMIT'

This new environment variable overrides the default task limit at
which point the internal eager protocols are disabled.

(ibm) 994e4e9a813f10aec687dde462a44bdd07da59dd

Signed-off-by: Su Huang <suhuang@us.ibm.com>
attempt to fix pe compile error.

(ibm) aca0d365ad4b3bda829483d55de6c9725fc32d40

Signed-off-by: Su Huang <suhuang@us.ibm.com>
fix the build - replace malloc/free by MPIU_Malloc/MPIU_Free

(ibm) 135d4666d3ebe4c847cd61420ef171c009a7bdd2

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
Memory management and token flow control for early arrivals

 * D187119: Check in the fixes from code review - memory management and token flow control
 * Fix some white space issues
 * Fix build break
 * Data integrity error w/ mpich2 MPI_Reduce & MPI_Allreduce. Put
   MPIDI_Request_setPeerRank_pami under OUT_OF_ORDER_HANDLING

(ibm) F182398
(ibm) D187119
(ibm) D187228
(ibm) D186242
(ibm) 7ae1e0584637dfc8b285f38b98582880b8a10c26
(ibm) ddf821de992bf60d90468094858613daae192e73
(ibm) e3b66ad45c1286a14ef76dd6fdc029d1c0dfc612
(ibm) f304257166639b4bac1e5d8971e6fb29d7ffb7d9

Signed-off-by: Charles Archer <archerc@us.ibm.com>
Signed-off-by: Su Huang <suhuang@us.ibm.com>
Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
mpich2 don't support mpc_statistics_write/zero in mpi program

 * Charles:  Build for bluegene, no impact to bluegene, committing
   and signing off without BG team approval.

(ibm) D187240
(ibm) 3b6577e99204fe78b894e5cde8dca5af552f9ad5

Signed-off-by: Charles Archer <archerc@us.ibm.com>
7 MPI-COM error injection cases core dump with MPICH2

(ibm) D183554
(ibm) Rh62qdr
(ibm) 05023445d12c781486885571b98ad98db9162d98

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
Split large broadcasts into smaller broadcasts

Also little streamlining/cleanup of collectives including:
- ndebug changes to remove verbose logging
- use local const variables to cache pointer references
- likely/unlikely code patch changes

(ibm) Issue 8863
(ibm) f747641815a2250a53407f01c12592dfe5c8ae33

Signed-off-by: Su Huang <suhuang@us.ibm.com>
handle ENOMEM errors in ADIO

(ibm) f8d7585697d27676bc15f9b47ce41a8fa5536a11

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>
BG ROMIO changes that remained unresolved after the merge.

I think these are "really old" baseline changes that didn't get pushed
into the top-level mpich master branch during previous (?) code
contributions.

These changes are needed at this point because the following commits,
that were essentially cherry-picked from the ibm master branch, depend
on some of these romio changes in this commit.
update error checkings in ADIO

(ibm) 70c9c492f206d4b2b124360bd1a8c07283493895

Signed-off-by: Michael Blocksome <blocksom@us.ibm.com>