[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.1rc2-98-g61f2600

mysql vizuser noreply at mpich.org
Thu Dec 19 09:09:38 CST 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "MPICH primary repository".

The branch, master has been updated
       via  61f260051e6244cf3986e8ee1b90a6cc67672b60 (commit)
       via  129adbf365319bc8921c249fb4abf5fc52b2761f (commit)
       via  8c133e469cbe28e90c07fa36cec89f9708d0ae2f (commit)
       via  6f0cdcc8b744cbe955b3bcb9964cbfebddebbaf9 (commit)
       via  f43e6fe33beaf1eb94295621feabbebaf7d2566e (commit)
       via  d96b1df370e308cbbceaa524cae7232e2c582226 (commit)
       via  6239007c3a9c415f5ebfc566788f3ca5eb6dd34a (commit)
       via  c10aaa185e46c42968dbbaed77925f75e820cc80 (commit)
      from  b2b9e1f9a5bbaf79126867531a7c685835319a04 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.mpich.org/mpich.git/commitdiff/61f260051e6244cf3986e8ee1b90a6cc67672b60

commit 61f260051e6244cf3986e8ee1b90a6cc67672b60
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Sat Nov 16 06:44:41 2013 -0600

    Add the missing NEMESIS_LMT_DMA_THRESHOLD
    
    Signed-off-by: Pavan Balaji <balaji at mcs.anl.gov>

diff --git a/src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c b/src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c
index a77e801..e2f8512 100644
--- a/src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c
+++ b/src/mpid/ch3/channels/nemesis/src/mpid_nem_lmt_dma.c
@@ -6,6 +6,24 @@
 #include "mpid_nem_impl.h"
 #include "mpid_nem_datatypes.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_NEMESIS_LMT_DMA_THRESHOLD
+      category    : NEMESIS
+      type        : int
+      default     : 2097152
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Messages larger than this size will use the "dma" (knem)
+        intranode LMT implementation, if it is enabled and available.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 MPIU_SUPPRESS_OSX_HAS_NO_SYMBOLS_WARNING;
 
 #if defined(HAVE_KNEM_IO_H)

http://git.mpich.org/mpich.git/commitdiff/129adbf365319bc8921c249fb4abf5fc52b2761f

commit 129adbf365319bc8921c249fb4abf5fc52b2761f
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Wed Nov 13 23:32:26 2013 -0600

    Revise description of MPIR_CVAR_BCAST_* cvars
    
    Fixes #1928
    
    Signed-off-by: Pavan Balaji <balaji at mcs.anl.gov>

diff --git a/src/mpi/coll/bcast.c b/src/mpi/coll/bcast.c
index 6edd389..bda2984 100644
--- a/src/mpi/coll/bcast.c
+++ b/src/mpi/coll/bcast.c
@@ -20,8 +20,16 @@ cvars:
       verbosity   : MPI_T_VERBOSITY_USER_BASIC
       scope       : MPI_T_SCOPE_ALL_EQ
       description : >-
-        the minimum number of processes in a communicator to use a non-binomial
-        broadcast algorithm
+        Let's define short messages as messages with size < MPIR_CVAR_BCAST_SHORT_MSG_SIZE,
+        and medium messages as messages with size >= MPIR_CVAR_BCAST_SHORT_MSG_SIZE but
+        < MPIR_CVAR_BCAST_LONG_MSG_SIZE, and long messages as messages with size >=
+        MPIR_CVAR_BCAST_LONG_MSG_SIZE. The broadcast algorithms selection procedure is
+        as follows. For short messages or when the number of processes is <
+        MPIR_CVAR_BCAST_MIN_PROCS, we do broadcast using the binomial tree algorithm.
+        Otherwise, for medium messages and with a power-of-two number of processes, we do
+        broadcast based on a scatter followed by a recursive doubling allgather algorithm.
+        Otherwise, for long messages or with non power-of-two number of processes, we do
+        broadcast based on a scatter followed by a ring allgather algorithm.
 
     - name        : MPIR_CVAR_BCAST_SHORT_MSG_SIZE
       category    : COLLECTIVE
@@ -31,8 +39,17 @@ cvars:
       verbosity   : MPI_T_VERBOSITY_USER_BASIC
       scope       : MPI_T_SCOPE_ALL_EQ
       description : >-
-        the short message algorithm will be used if the send buffer size is <
-        this value (in bytes)
+        (Same description as that for MPIR_CVAR_BCAST_MIN_PROCS)
+        Let's define short messages as messages with size < MPIR_CVAR_BCAST_SHORT_MSG_SIZE,
+        and medium messages as messages with size >= MPIR_CVAR_BCAST_SHORT_MSG_SIZE but
+        < MPIR_CVAR_BCAST_LONG_MSG_SIZE, and long messages as messages with size >=
+        MPIR_CVAR_BCAST_LONG_MSG_SIZE. The broadcast algorithms selection procedure is
+        as follows. For short messages or when the number of processes is <
+        MPIR_CVAR_BCAST_MIN_PROCS, we do broadcast using the binomial tree algorithm.
+        Otherwise, for medium messages and with a power-of-two number of processes, we do
+        broadcast based on a scatter followed by a recursive doubling allgather algorithm.
+        Otherwise, for long messages or with non power-of-two number of processes, we do
+        broadcast based on a scatter followed by a ring allgather algorithm.
 
     - name        : MPIR_CVAR_BCAST_LONG_MSG_SIZE
       category    : COLLECTIVE
@@ -42,8 +59,17 @@ cvars:
       verbosity   : MPI_T_VERBOSITY_USER_BASIC
       scope       : MPI_T_SCOPE_ALL_EQ
       description : >-
-        the long message algorithm will be used if the send buffer size is >=
-        this value (in bytes)
+        (Same description as that for MPIR_CVAR_BCAST_MIN_PROCS)
+        Let's define short messages as messages with size < MPIR_CVAR_BCAST_SHORT_MSG_SIZE,
+        and medium messages as messages with size >= MPIR_CVAR_BCAST_SHORT_MSG_SIZE but
+        < MPIR_CVAR_BCAST_LONG_MSG_SIZE, and long messages as messages with size >=
+        MPIR_CVAR_BCAST_LONG_MSG_SIZE. The broadcast algorithms selection procedure is
+        as follows. For short messages or when the number of processes is <
+        MPIR_CVAR_BCAST_MIN_PROCS, we do broadcast using the binomial tree algorithm.
+        Otherwise, for medium messages and with a power-of-two number of processes, we do
+        broadcast based on a scatter followed by a recursive doubling allgather algorithm.
+        Otherwise, for long messages or with non power-of-two number of processes, we do
+        broadcast based on a scatter followed by a ring allgather algorithm.
 
     - name        : MPIR_CVAR_ENABLE_SMP_BCAST
       category    : COLLECTIVE

http://git.mpich.org/mpich.git/commitdiff/8c133e469cbe28e90c07fa36cec89f9708d0ae2f

commit 8c133e469cbe28e90c07fa36cec89f9708d0ae2f
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Mon Nov 11 19:21:44 2013 -0600

    Spread out cvar info into source files
    
    Fixes #1963
    
    Signed-off-by: Pavan Balaji <balaji at mcs.anl.gov>

diff --git a/src/include/mpiutil.h b/src/include/mpiutil.h
index d6e764d..97417e2 100644
--- a/src/include/mpiutil.h
+++ b/src/include/mpiutil.h
@@ -6,6 +6,26 @@
 #if !defined(MPIUTIL_H_INCLUDED)
 #define MPIUTIL_H_INCLUDED
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_NEMESIS_POLLS_BEFORE_YIELD
+      category    : NEMESIS
+      type        : int
+      default     : 1000
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        When MPICH is in a busy waiting loop, it will periodically
+        call a function to yield the processor.  This cvar sets
+        the number of loops before the yield function is called.  A
+        value of 0 disables yielding.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 #ifndef HAS_MPID_ABORT_DECL
 /* FIXME: 4th arg is undocumented and bogus */
 struct MPID_Comm;
diff --git a/src/mpi/coll/allgather.c b/src/mpi/coll/allgather.c
index a7fc8e3..99fef86 100644
--- a/src/mpi/coll/allgather.c
+++ b/src/mpi/coll/allgather.c
@@ -7,6 +7,35 @@
 
 #include "mpiimpl.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_ALLGATHER_SHORT_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 81920
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        For MPI_Allgather and MPI_Allgatherv, the short message algorithm will
+        be used if the send buffer size is < this value (in bytes).
+
+    - name        : MPIR_CVAR_ALLGATHER_LONG_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 524288
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        For MPI_Allgather and MPI_Allgatherv, the long message algorithm will be
+        used if the send buffer size is >= this value (in bytes)
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Allgather */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Allgather = PMPI_Allgather
diff --git a/src/mpi/coll/allgatherv.c b/src/mpi/coll/allgatherv.c
index f2faa14..275c404 100644
--- a/src/mpi/coll/allgatherv.c
+++ b/src/mpi/coll/allgatherv.c
@@ -7,6 +7,24 @@
 
 #include "mpiimpl.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_ALLGATHERV_PIPELINE_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 32768
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        The smallest message size that will be used for the pipelined, large-message,
+        ring algorithm in the MPI_Allgatherv implementation.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Allgatherv */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Allgatherv = PMPI_Allgatherv
diff --git a/src/mpi/coll/allreduce.c b/src/mpi/coll/allreduce.c
index e0b014b..c2ac3b5 100644
--- a/src/mpi/coll/allreduce.c
+++ b/src/mpi/coll/allreduce.c
@@ -7,6 +7,55 @@
 #include "mpiimpl.h"
 #include "collutil.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_ALLREDUCE_SHORT_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 2048
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        the short message algorithm will be used if the send buffer size is <=
+        this value (in bytes)
+
+    - name        : MPIR_CVAR_ENABLE_SMP_COLLECTIVES
+      category    : COLLECTIVE
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Enable SMP aware collective communication.
+
+    - name        : MPIR_CVAR_ENABLE_SMP_ALLREDUCE
+      category    : COLLECTIVE
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Enable SMP aware allreduce.
+
+    - name        : MPIR_CVAR_MAX_SMP_ALLREDUCE_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 0
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Maximum message size for which SMP-aware allreduce is used.  A
+        value of '0' uses SMP-aware allreduce for all message sizes.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Allreduce */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Allreduce = PMPI_Allreduce
diff --git a/src/mpi/coll/alltoall.c b/src/mpi/coll/alltoall.c
index 96e1f9b..8ec541a 100644
--- a/src/mpi/coll/alltoall.c
+++ b/src/mpi/coll/alltoall.c
@@ -7,6 +7,52 @@
 
 #include "mpiimpl.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories :
+   - name : COLLECTIVE
+     description : A category for collective communication variables.
+
+cvars:
+   - name      : MPIR_CVAR_ALLTOALL_SHORT_MSG_SIZE
+     category  : COLLECTIVE
+     type      : int
+     default   : 256
+     class     : device
+     verbosity : MPI_T_VERBOSITY_USER_BASIC
+     scope     : MPI_T_SCOPE_ALL_EQ
+     description : >-
+        the short message algorithm will be used if the per-destination
+        message size (sendcount*size(sendtype)) is <= this value
+
+   - name      : MPIR_CVAR_ALLTOALL_MEDIUM_MSG_SIZE
+     category  : COLLECTIVE
+     type      : int
+     default   : 32768
+     class     : device
+     verbosity : MPI_T_VERBOSITY_USER_BASIC
+     scope     : MPI_T_SCOPE_ALL_EQ
+     description : >-
+         the medium message algorithm will be used if the per-destination
+         message size (sendcount*size(sendtype)) is <= this value and
+         larger than ALLTOALL_SHORT_MSG_SIZE
+
+   - name      : MPIR_CVAR_ALLTOALL_THROTTLE
+     category  : COLLECTIVE
+     type      : int
+     default   : 32
+     class     : device
+     verbosity : MPI_T_VERBOSITY_USER_BASIC
+     scope     : MPI_T_SCOPE_ALL_EQ
+     description : >-
+       max no. of irecvs/isends posted at a time in some alltoall
+       algorithms. Setting it to 0 causes all irecvs/isends to be
+       posted at once
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Alltoall */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Alltoall = PMPI_Alltoall
diff --git a/src/mpi/coll/barrier.c b/src/mpi/coll/barrier.c
index efcc4fd..d81e201 100644
--- a/src/mpi/coll/barrier.c
+++ b/src/mpi/coll/barrier.c
@@ -7,6 +7,22 @@
 
 #include "mpiimpl.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_ENABLE_SMP_BARRIER
+      category    : COLLECTIVE
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : Enable SMP aware barrier.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Barrier */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Barrier = PMPI_Barrier
diff --git a/src/mpi/coll/bcast.c b/src/mpi/coll/bcast.c
index 6b56ad7..6edd389 100644
--- a/src/mpi/coll/bcast.c
+++ b/src/mpi/coll/bcast.c
@@ -8,6 +8,66 @@
 #include "mpiimpl.h"
 #include "collutil.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_BCAST_MIN_PROCS
+      category    : COLLECTIVE
+      type        : int
+      default     : 8
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        the minimum number of processes in a communicator to use a non-binomial
+        broadcast algorithm
+
+    - name        : MPIR_CVAR_BCAST_SHORT_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 12288
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        the short message algorithm will be used if the send buffer size is <
+        this value (in bytes)
+
+    - name        : MPIR_CVAR_BCAST_LONG_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 524288
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        the long message algorithm will be used if the send buffer size is >=
+        this value (in bytes)
+
+    - name        : MPIR_CVAR_ENABLE_SMP_BCAST
+      category    : COLLECTIVE
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : Enable SMP aware broadcast.
+
+    - name        : MPIR_CVAR_MAX_SMP_BCAST_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 0
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Maximum message size for which SMP-aware broadcast is used.  A
+        value of '0' uses SMP-aware broadcast for all message sizes.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Bcast */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Bcast = PMPI_Bcast
diff --git a/src/mpi/coll/gather.c b/src/mpi/coll/gather.c
index f7f9bbc..465c844 100644
--- a/src/mpi/coll/gather.c
+++ b/src/mpi/coll/gather.c
@@ -7,6 +7,35 @@
 
 #include "mpiimpl.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_GATHER_VSMALL_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 1024
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        use a temporary buffer for intracommunicator MPI_Gather if the send
+        buffer size is < this value (in bytes)
+
+    - name        : MPIR_CVAR_GATHER_INTER_SHORT_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 2048
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        use the short message algorithm for intercommunicator MPI_Gather if the
+        send buffer size is < this value (in bytes)
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Gather */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Gather = PMPI_Gather
diff --git a/src/mpi/coll/gatherv.c b/src/mpi/coll/gatherv.c
index c99b492..8deb6e3 100644
--- a/src/mpi/coll/gatherv.c
+++ b/src/mpi/coll/gatherv.c
@@ -7,6 +7,26 @@
 
 #include "mpiimpl.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_GATHERV_INTER_SSEND_MIN_PROCS
+      category    : COLLECTIVE
+      type        : int
+      default     : 32
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Use Ssend (synchronous send) for intercommunicator MPI_Gatherv if the
+        "group B" size is >= this value.  Specifying "-1" always avoids using
+        Ssend.  For backwards compatibility, specifying "0" uses the default
+        value.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Gatherv */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Gatherv = PMPI_Gatherv
diff --git a/src/mpi/coll/helper_fns.c b/src/mpi/coll/helper_fns.c
index 8fbaedf..ac5ebf0 100644
--- a/src/mpi/coll/helper_fns.c
+++ b/src/mpi/coll/helper_fns.c
@@ -8,6 +8,32 @@
 #include "mpiimpl.h"
 #include "datatype.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : FAULT_TOLERANCE
+      description : cvars that control fault tolerance behavior
+
+cvars:
+    - name        : MPIR_CVAR_ENABLE_COLL_FT_RET
+      category    : FAULT_TOLERANCE
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        DEPRECATED! Will be removed in MPICH-3.2
+        Collectives called on a communicator with a failed process
+        should not hang, however the result of the operation may be
+        invalid even though the function returns MPI_SUCCESS.  This
+        option enables an experimental feature that will return an error
+        if the result of the collective is invalid.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 #define COPY_BUFFER_SZ 16384
 
 /* These functions are used in the implementation of collective
diff --git a/src/mpi/coll/red_scat.c b/src/mpi/coll/red_scat.c
index b04ea60..46dc14e 100644
--- a/src/mpi/coll/red_scat.c
+++ b/src/mpi/coll/red_scat.c
@@ -8,6 +8,24 @@
 #include "mpiimpl.h"
 #include "collutil.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_REDSCAT_COMMUTATIVE_LONG_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 524288
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        the long message algorithm will be used if the operation is commutative
+        and the send buffer size is >= this value (in bytes)
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Reduce_scatter */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Reduce_scatter = PMPI_Reduce_scatter
diff --git a/src/mpi/coll/reduce.c b/src/mpi/coll/reduce.c
index 0e3d7b7..c85fa53 100644
--- a/src/mpi/coll/reduce.c
+++ b/src/mpi/coll/reduce.c
@@ -8,6 +8,46 @@
 #include "mpiimpl.h"
 #include "collutil.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_REDUCE_SHORT_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 2048
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        the short message algorithm will be used if the send buffer size is <=
+        this value (in bytes)
+
+    - name        : MPIR_CVAR_ENABLE_SMP_REDUCE
+      category    : COLLECTIVE
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Enable SMP aware reduce.
+
+    - name        : MPIR_CVAR_MAX_SMP_REDUCE_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 0
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Maximum message size for which SMP-aware reduce is used.  A
+        value of '0' uses SMP-aware reduce for all message sizes.
+
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Reduce */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Reduce = PMPI_Reduce
diff --git a/src/mpi/coll/scatter.c b/src/mpi/coll/scatter.c
index ffd78f8..705a456 100644
--- a/src/mpi/coll/scatter.c
+++ b/src/mpi/coll/scatter.c
@@ -7,6 +7,24 @@
 
 #include "mpiimpl.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_SCATTER_INTER_SHORT_MSG_SIZE
+      category    : COLLECTIVE
+      type        : int
+      default     : 2048
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        use the short message algorithm for intercommunicator MPI_Scatter if the
+        send buffer size is < this value (in bytes)
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Scatter */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Scatter = PMPI_Scatter
diff --git a/src/mpi/comm/comm_split.c b/src/mpi/comm/comm_split.c
index 379e792..83658bb 100644
--- a/src/mpi/comm/comm_split.c
+++ b/src/mpi/comm/comm_split.c
@@ -8,6 +8,27 @@
 #include "mpiimpl.h"
 #include "mpicomm.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : COMMUNICATOR
+      description : cvars that control communicator construction and operation
+
+cvars:
+    - name        : MPIR_CVAR_COMM_SPLIT_USE_QSORT
+      category    : COMMUNICATOR
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Use qsort(3) in the implementation of MPI_Comm_split instead of bubble sort.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Comm_split */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Comm_split = PMPI_Comm_split
diff --git a/src/mpi/comm/commutil.c b/src/mpi/comm/commutil.c
index b759e79..dd2198d 100644
--- a/src/mpi/comm/commutil.c
+++ b/src/mpi/comm/commutil.c
@@ -17,6 +17,27 @@
 #define MPID_COMM_PREALLOC 8
 #endif
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_CTXID_EAGER_SIZE
+      category    : THREADS
+      type        : int
+      default     : 2
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        The MPIR_CVAR_CTXID_EAGER_SIZE environment variable allows you to
+        specify how many words in the context ID mask will be set aside
+        for the eager allocation protocol.  If the application is running
+        out of context IDs, reducing this value may help.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
+
 /* Preallocated comm objects */
 /* initialized in initthread.c */
 MPID_Comm MPID_Comm_builtin[MPID_COMM_N_BUILTIN] = { {0} };
diff --git a/src/mpi/debugger/dbginit.c b/src/mpi/debugger/dbginit.c
index e1cad65..6ae6a21 100644
--- a/src/mpi/debugger/dbginit.c
+++ b/src/mpi/debugger/dbginit.c
@@ -11,6 +11,33 @@
 #include <unistd.h>
 #endif
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_PROCTABLE_SIZE
+      category    : DEBUGGER
+      type        : int
+      default     : 64
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Size of the "MPIR" debugger interface proctable (process table).
+
+    - name        : MPIR_CVAR_PROCTABLE_PRINT
+      category    : DEBUGGER
+      type        : boolean
+      default     : false
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        If true, dump the proctable entries at MPIR_WaitForDebugger-time.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* There are two versions of the debugger startup:
    1. The debugger starts mpiexec - then mpiexec provides the MPIR_proctable
       information
diff --git a/src/mpi/errhan/errutil.c b/src/mpi/errhan/errutil.c
index dc275c3..84555e3 100644
--- a/src/mpi/errhan/errutil.c
+++ b/src/mpi/errhan/errutil.c
@@ -33,6 +33,38 @@
 #include <stdio.h>
 
 /*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : ERROR_HANDLING
+      description : cvars that control error handling behavior (stack traces, aborts, etc)
+
+cvars:
+    - name        : MPIR_CVAR_PRINT_ERROR_STACK
+      category    : ERROR_HANDLING
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_LOCAL
+      description : >-
+        If true, print an error stack trace at error handling time.
+
+    - name        : MPIR_CVAR_CHOP_ERROR_STACK
+      category    : ERROR_HANDLING
+      type        : int
+      default     : 0
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_LOCAL
+      description : >-
+        If >0, truncate error stack output lines this many characters
+        wide.  If 0, do not truncate, and if <0 use a sensible default.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
+/*
  * Structure of this file
  *
  * This file contains several groups of routines user for error handling
diff --git a/src/mpi/init/finalize.c b/src/mpi/init/finalize.c
index 19f3d9f..e22d0ff 100644
--- a/src/mpi/init/finalize.c
+++ b/src/mpi/init/finalize.c
@@ -8,6 +8,28 @@
 #include "mpiimpl.h"
 #include "mpi_init.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : DEVELOPER
+      description : useful for developers working on MPICH itself
+
+cvars:
+    - name        : MPIR_CVAR_MEMDUMP
+      category    : DEVELOPER
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_MPIDEV_DETAIL
+      scope       : MPI_T_SCOPE_LOCAL
+      description : >-
+        If true, list any memory that was allocated by MPICH and that
+        remains allocated when MPI_Finalize completes.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Finalize */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Finalize = PMPI_Finalize
diff --git a/src/mpi/init/init.c b/src/mpi/init/init.c
index 2ffcfce..56a87d0 100644
--- a/src/mpi/init/init.c
+++ b/src/mpi/init/init.c
@@ -7,6 +7,47 @@
 #include "mpiimpl.h"
 #include "mpi_init.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : THREADS
+      description : multi-threading cvars
+
+cvars:
+    - name        : MPIR_CVAR_ASYNC_PROGRESS
+      category    : THREADS
+      type        : boolean
+      default     : false
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        If set to true, MPICH will initiate an additional thread to
+        make asynchronous progress on all communication operations
+        including point-to-point, collective, one-sided operations and
+        I/O.  Setting this variable will automatically increase the
+        thread-safety level to MPI_THREAD_MULTIPLE.  While this
+        improves the progress semantics, it might cause a small amount
+        of performance overhead for regular MPI operations.  The user
+        is encouraged to leave one or more hardware threads vacant in
+        order to prevent contention between the application threads
+        and the progress thread(s).  The impact of oversubscription is
+        highly system dependent but may be substantial in some cases,
+        hence this recommendation.
+
+    - name        : MPIR_CVAR_DEFAULT_THREAD_LEVEL
+      category    : THREADS
+      type        : string
+      default     : "MPI_THREAD_SINGLE"
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Sets the default thread level to use when using MPI_INIT.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
 
 /* -- Begin Profiling Symbol Block for routine MPI_Init */
 #if defined(HAVE_PRAGMA_WEAK)
diff --git a/src/mpi/init/initthread.c b/src/mpi/init/initthread.c
index 7401af7..3ebe996 100644
--- a/src/mpi/init/initthread.c
+++ b/src/mpi/init/initthread.c
@@ -24,6 +24,43 @@
 #include <unistd.h>
 #endif
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : DEBUGGER
+      description : cvars relevant to the "MPIR" debugger interface
+
+cvars:
+    - name        : MPIR_CVAR_DEBUG_HOLD
+      category    : DEBUGGER
+      type        : boolean
+      default     : false
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        If true, causes processes to wait in MPI_Init and
+        MPI_Initthread for a debugger to be attached.  Once the
+        debugger has attached, the variable 'hold' should be set to 0
+        in order to allow the process to continue (e.g., in gdb, "set
+        hold=0").
+
+    - name        : MPIR_CVAR_ERROR_CHECKING
+      category    : ERROR_HANDLING
+      type        : boolean
+      default     : true
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_LOCAL
+      description : >-
+        If true, perform checks for errors, typically to verify valid inputs
+        to MPI routines.  Only effective when MPICH is configured with
+        --enable-error-checking=runtime .
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* -- Begin Profiling Symbol Block for routine MPI_Init_thread */
 #if defined(HAVE_PRAGMA_WEAK)
 #pragma weak MPI_Init_thread = PMPI_Init_thread
diff --git a/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c b/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c
index ae992ed..26ca89c 100644
--- a/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c
+++ b/src/mpid/ch3/channels/nemesis/netmod/tcp/tcp_init.c
@@ -21,6 +21,69 @@
 #include <signal.h>
 #endif
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_CH3_INTERFACE_HOSTNAME
+      category    : CH3
+      alt-env     : MPIR_CVAR_INTERFACE_HOSTNAME
+      type        : string
+      default     : NULL
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_LOCAL
+      description : >-
+        If non-NULL, this cvar specifies the IP address that
+        other processes should use when connecting to this process.
+        This cvar is mutually exclusive with the
+        MPIR_CVAR_CH3_NETWORK_IFACE cvar and it is an error to set them
+        both.
+
+    - name        : MPIR_CVAR_CH3_PORT_RANGE
+      category    : CH3
+      alt-env     : MPIR_CVAR_PORTRANGE, MPIR_CVAR_PORT_RANGE
+      type        : range
+      default     : "0:0"
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        The MPIR_CVAR_CH3_PORT_RANGE environment variable allows you to
+        specify the range of TCP ports to be used by the process
+        manager and the MPICH library. The format of this variable is
+        <low>:<high>.  To specify any available port, use 0:0.
+
+    - name        : MPIR_CVAR_NEMESIS_TCP_NETWORK_IFACE
+      category    : NEMESIS
+      alt-env     : MPIR_CVAR_NETWORK_IFACE
+      type        : string
+      default     : NULL
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        If non-NULL, this cvar specifies which pseudo-ethernet
+        interface the tcp netmod should use (e.g., "eth1", "ib0").
+        Note, this is a Linux-specific cvar.
+        This cvar is mutually exclusive with the
+        MPIR_CVAR_CH3_INTERFACE_HOSTNAME cvar and it is an error to set
+        them both.
+
+    - name        : MPIR_CVAR_NEMESIS_TCP_HOST_LOOKUP_RETRIES
+      category    : NEMESIS
+      type        : int
+      default     : 10
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        This cvar controls the number of times to retry the
+        gethostbyname() function before giving up.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 #define DBG_IFNAME 0
 
 #ifdef ENABLE_CHECKPOINTING
diff --git a/src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c b/src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c
index 96a6df1..82df5f3 100644
--- a/src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c
+++ b/src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c
@@ -6,6 +6,23 @@
 
 #include "mpid_nem_impl.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+cvars:
+    - name        : MPIR_CVAR_NEMESIS_ENABLE_CKPOINT
+      category    : NEMESIS
+      type        : boolean
+      default     : false
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        If true, enables checkpointing support and returns an error if
+        checkpointing library cannot be initialized.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 MPIU_SUPPRESS_OSX_HAS_NO_SYMBOLS_WARNING;
 
 #ifdef ENABLE_CHECKPOINTING
diff --git a/src/mpid/ch3/channels/nemesis/src/mpid_nem_init.c b/src/mpid/ch3/channels/nemesis/src/mpid_nem_init.c
index 5aa1f06..095ab20 100644
--- a/src/mpid/ch3/channels/nemesis/src/mpid_nem_init.c
+++ b/src/mpid/ch3/channels/nemesis/src/mpid_nem_init.c
@@ -11,6 +11,44 @@
 #include "mpidi_nem_statistics.h"
 #include "mpit.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : NEMESIS
+      description : cvars that control behavior of the ch3:nemesis channel
+
+cvars:
+    - name        : MPIR_CVAR_NEMESIS_SHM_EAGER_MAX_SZ
+      category    : NEMESIS
+      type        : int
+      default     : -1
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        This cvar controls the message size at which Nemesis
+        switches from eager to rendezvous mode for shared memory.
+        If this cvar is set to -1, then Nemesis will choose
+        an appropriate value.
+
+    - name        : MPIR_CVAR_NEMESIS_SHM_READY_EAGER_MAX_SZ
+      category    : NEMESIS
+      type        : int
+      default     : -2
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        This cvar controls the message size at which Nemesis
+        switches from eager to rendezvous mode for ready-send
+        messages.  If this cvar is set to -1, then ready messages
+        will always be sent eagerly.  If this cvar is set to -2,
+        then Nemesis will choose an appropriate value.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* constants for configure time selection of local LMT implementations */
 #define MPID_NEM_LOCAL_LMT_NONE 0
 #define MPID_NEM_LOCAL_LMT_SHM_COPY 1
diff --git a/src/mpid/ch3/channels/nemesis/src/mpid_nem_network.c b/src/mpid/ch3/channels/nemesis/src/mpid_nem_network.c
index fb93e43..468e58f 100644
--- a/src/mpid/ch3/channels/nemesis/src/mpid_nem_network.c
+++ b/src/mpid/ch3/channels/nemesis/src/mpid_nem_network.c
@@ -9,6 +9,24 @@
     #include "strings.h"
 #endif
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_NEMESIS_NETMOD
+      category    : NEMESIS
+      type        : string
+      default     : ""
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        If non-empty, this cvar specifies which network module
+        should be used for communication.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* initialize to prevent the compiler from generating common symbols */
 MPID_nem_netmod_funcs_t *MPID_nem_netmod_func = NULL;
 int MPID_nem_netmod_id = -1;
diff --git a/src/mpid/ch3/src/ch3u_rma_sync.c b/src/mpid/ch3/src/ch3u_rma_sync.c
index fe65823..f3c9759 100644
--- a/src/mpid/ch3/src/ch3u_rma_sync.c
+++ b/src/mpid/ch3/src/ch3u_rma_sync.c
@@ -7,6 +7,75 @@
 #include "mpidimpl.h"
 #include "mpidrma.h"
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : CH3
+      description : cvars that control behavior of ch3
+
+cvars:
+    - name        : MPIR_CVAR_CH3_RMA_ACC_IMMED
+      category    : CH3
+      type        : boolean
+      default     : true
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Use the immediate accumulate optimization
+
+    - name        : MPIR_CVAR_CH3_RMA_NREQUEST_THRESHOLD
+      category    : CH3
+      type        : int
+      default     : 4000
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Threshold at which the RMA implementation attempts to complete requests
+        while completing RMA operations and while using the lazy synchonization
+        approach.  Change this value if programs fail because they run out of
+        requests or other internal resources
+
+    - name        : MPIR_CVAR_CH3_RMA_NREQUEST_NEW_THRESHOLD
+      category    : CH3
+      type        : int
+      default     : 128
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Threshold for the number of new requests since the last attempt to
+        complete pending requests.  Higher values can increase performance,
+        but may run the risk of exceeding the available number of requests
+        or other internal resources.
+
+    - name        : MPIR_CVAR_CH3_RMA_LOCK_IMMED
+      category    : CH3
+      type        : boolean
+      default     : false
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Issue a request for the passive target RMA lock immediately.  Default
+        behavior is to defer the lock request until the call to MPI_Win_unlock.
+
+    - name        : MPIR_CVAR_CH3_RMA_MERGE_LOCK_OP_UNLOCK
+      category    : CH3
+      type        : boolean
+      default     : true
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Enable/disable an optimization that merges lock, op, and unlock
+        messages, for single-operation passive target epochs.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 MPIR_T_PVAR_DOUBLE_TIMER_DECL(RMA, rma_lockqueue_alloc);
 
 MPIR_T_PVAR_DOUBLE_TIMER_DECL(RMA, rma_winfence_clearlock);
diff --git a/src/mpid/ch3/src/mpid_vc.c b/src/mpid/ch3/src/mpid_vc.c
index 5640966..e35ed5d 100644
--- a/src/mpid/ch3/src/mpid_vc.c
+++ b/src/mpid/ch3/src/mpid_vc.c
@@ -22,6 +22,49 @@
 #endif
 #include <ctype.h>
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+cvars:
+    - name        : MPIR_CVAR_CH3_NOLOCAL
+      category    : CH3
+      alt-env     : MPIR_CVAR_CH3_NO_LOCAL
+      type        : boolean
+      default     : false
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        If true, force all processes to operate as though all processes
+        are located on another node.  For example, this disables shared
+        memory communication hierarchical collectives.
+
+    - name        : MPIR_CVAR_CH3_ODD_EVEN_CLIQUES
+      category    : CH3
+      alt-env     : MPIR_CVAR_CH3_EVEN_ODD_CLIQUES
+      type        : boolean
+      default     : false
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        If true, odd procs on a node are seen as local to each other, and even
+        procs on a node are seen as local to each other.  Used for debugging on
+        a single machine.
+
+    - name        : MPIR_CVAR_CH3_EAGER_MAX_MSG_SIZE
+      category    : CH3
+      type        : int
+      default     : 131072
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        This cvar controls the message size at which CH3 switches
+        from eager to rendezvous mode.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
 
 /*S
  * MPIDI_VCRT - virtual connection reference table
diff --git a/src/nameserv/file/file_nameserv.c b/src/nameserv/file/file_nameserv.c
index 3483dbc..2dc94b7 100644
--- a/src/nameserv/file/file_nameserv.c
+++ b/src/nameserv/file/file_nameserv.c
@@ -19,6 +19,31 @@
 #endif
 #include <errno.h>
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : PROCESS_MANAGER
+      description : cvars that control the client-side process manager code
+
+cvars:
+    - name        : MPIR_CVAR_NAMESERV_FILE_PUBDIR
+      category    : PROCESS_MANAGER
+      alt-env     : MPIR_CVAR_NAMEPUB_DIR
+      type        : string
+      default     : NULL
+      class       : none
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        Sets the directory to use for MPI service publishing in the
+        file nameserv implementation.  Allows the user to override
+        where the publish and lookup information is placed for
+        connect/accept based applications.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 /* For writing the name/service pair */
 /* style: allow:fprintf:1 sig:0 */   
 
diff --git a/src/util/mem/handlemem.c b/src/util/mem/handlemem.c
index f565487..500ae8b 100644
--- a/src/util/mem/handlemem.c
+++ b/src/util/mem/handlemem.c
@@ -4,6 +4,33 @@
  *      See COPYRIGHT in top-level directory.
  */
 
+/*
+=== BEGIN_MPI_T_CVAR_INFO_BLOCK ===
+
+categories:
+    - name        : MEMORY
+      description : affects memory allocation and usage, including MPI object handles
+
+cvars:
+    - name        : MPIR_CVAR_ABORT_ON_LEAKED_HANDLES
+      category    : MEMORY
+      type        : boolean
+      default     : false
+      class       : device
+      verbosity   : MPI_T_VERBOSITY_USER_BASIC
+      scope       : MPI_T_SCOPE_ALL_EQ
+      description : >-
+        If true, MPI will call MPI_Abort at MPI_Finalize if any MPI object
+        handles have been leaked.  For example, if MPI_Comm_dup is called
+        without calling a corresponding MPI_Comm_free.  For uninteresting
+        reasons, enabling this option may prevent all known object leaks from
+        being reported.  MPICH must have been configure with
+        "--enable-g=handlealloc" or better in order for this functionality to
+        work.
+
+=== END_MPI_T_CVAR_INFO_BLOCK ===
+*/
+
 #include "mpiimpl.h"
 #include <stdio.h>
 

http://git.mpich.org/mpich.git/commitdiff/6f0cdcc8b744cbe955b3bcb9964cbfebddebbaf9

commit 6f0cdcc8b744cbe955b3bcb9964cbfebddebbaf9
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Wed Dec 18 16:59:20 2013 -0600

    Revert commented out code, to make a cvar work
    
    MPIR_CVAR_PROCTABLE_PRINT related code was originally commented out.
    Revert the code so that MPIR_CVAR_PROCTABLE_PRINT does what it means.
    
    Signed-off-by: Pavan Balaji <balaji at mcs.anl.gov>

diff --git a/src/mpi/debugger/dbginit.c b/src/mpi/debugger/dbginit.c
index 788ceea..e1cad65 100644
--- a/src/mpi/debugger/dbginit.c
+++ b/src/mpi/debugger/dbginit.c
@@ -206,7 +206,6 @@ void MPIR_WaitForDebugger( void )
 	}
 
 	MPIR_proctable_size               = size;
-#if 0
 	/* Debugging hook */
 	if (MPIR_CVAR_PROCTABLE_PRINT) {
 	    for (i=0; i<maxsize; i++) {
@@ -215,7 +214,6 @@ void MPIR_WaitForDebugger( void )
 	    }
 	    fflush( stdout );
 	}
-#endif
 	MPIR_Add_finalize( MPIR_FreeProctable, MPIR_proctable, 0 );
     }
     else {

http://git.mpich.org/mpich.git/commitdiff/f43e6fe33beaf1eb94295621feabbebaf7d2566e

commit f43e6fe33beaf1eb94295621feabbebaf7d2566e
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Wed Dec 18 16:55:25 2013 -0600

    Fix a wrong cvar name
    
    Added prefix MPIR_CVAR_ to GATHERV_INTER_SSEND_MIN_PROCS
    
    Signed-off-by: Pavan Balaji <balaji at mcs.anl.gov>

diff --git a/src/mpi/coll/gatherv.c b/src/mpi/coll/gatherv.c
index 8801e03..c99b492 100644
--- a/src/mpi/coll/gatherv.c
+++ b/src/mpi/coll/gatherv.c
@@ -145,7 +145,7 @@ int MPIR_Gatherv (
             if (min_procs == -1)
                 min_procs = comm_size + 1; /* Disable ssend */
             else if (min_procs == 0) /* backwards compatibility, use default value */
-                MPIR_CVAR_GET_DEFAULT_INT(GATHERV_INTER_SSEND_MIN_PROCS,&min_procs);
+                MPIR_CVAR_GET_DEFAULT_INT(MPIR_CVAR_GATHERV_INTER_SSEND_MIN_PROCS,&min_procs);
 
             if (comm_size >= min_procs) {
                 mpi_errno = MPIC_Ssend(sendbuf, sendcount, sendtype, root,

http://git.mpich.org/mpich.git/commitdiff/d96b1df370e308cbbceaa524cae7232e2c582226

commit d96b1df370e308cbbceaa524cae7232e2c582226
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Wed Dec 18 16:42:48 2013 -0600

    Implement extractcvars, which extracts cvar info.
    
    The script extractcvars extracts cvar info from C source files.
    
    Signed-off-by: Pavan Balaji <balaji at mcs.anl.gov>

diff --git a/autogen.sh b/autogen.sh
index 97b84cb..c2f52e1 100755
--- a/autogen.sh
+++ b/autogen.sh
@@ -144,7 +144,7 @@ echo "done"
 # Default choices
 do_bindings=yes
 do_geterrmsgs=yes
-do_getparms=yes
+do_getcvars=yes
 do_f77=yes
 do_f77tof90=yes
 do_build_configure=yes
@@ -841,13 +841,13 @@ fi
 echo "done"
 
 # new parameter code
-echo_n "Generating parameter handling code... "
-if test -x maint/gencvars -a "$do_getparms" = "yes" ; then
-    if ./maint/gencvars ; then
+echo_n "Extracting control variables (cvar) ... "
+if test -x maint/extractcvars -a "$do_getcvars" = "yes" ; then
+    if ./maint/extractcvars --dirs="`cat maint/cvardirs`"; then
         echo "done"
     else
         echo "failed"
-        error "unable to generate parameter handling code"
+        error "unable to extract control variables"
         exit 1
     fi
 else
diff --git a/maint/Makefile.mk b/maint/Makefile.mk
index d44777d..d274836 100644
--- a/maint/Makefile.mk
+++ b/maint/Makefile.mk
@@ -25,7 +25,7 @@ dist_noinst_SCRIPTS +=                \
     maint/gcovmerge.in                \
     maint/getcoverage.in              \
     maint/gen_subcfg_m4               \
-    maint/gencvars                   \
+    maint/extractcvars                   \
     maint/genstates.in                \
     maint/getcoverage.in              \
     maint/local_perl/lib/YAML/Tiny.pm \
@@ -42,6 +42,7 @@ dist_noinst_DATA +=                        \
     maint/Version.base.m4                  \
     maint/docnotes                         \
     maint/errmsgdirs                       \
+    maint/cvardirs                         \
     maint/gccimpgen.cpp                    \
     maint/impgen.vcproj                    \
     maint/local_perl/README                \
diff --git a/maint/cvardirs b/maint/cvardirs
new file mode 100644
index 0000000..04a2a67
--- /dev/null
+++ b/maint/cvardirs
@@ -0,0 +1 @@
+src/mpi src/mpi_t src/nameserv src/util src/binding src/include src/mpid src/pmi src/armci src/mutex
diff --git a/maint/extractcvars b/maint/extractcvars
index 7da93bd..f721123 100755
--- a/maint/extractcvars
+++ b/maint/extractcvars
@@ -4,26 +4,18 @@
 #     See COPYRIGHT in top-level directory.
 #
 
-# script TODO:
-# - generate initialization function to read vals from env vars
-# - deal with string escaping in generated C strings
-# - sort/collate cvars by name/category
+# Parse C or header files to search for MPI_T control variable
+# and category info, then output the info in source code form.
 
 use strict;
 use warnings;
-
-# help perl find the YAML parsing module
-use lib 'maint/local_perl/lib';
-
-use YAML::Tiny qw();
 use File::Basename qw(basename);
 use Data::Dumper;
 use Getopt::Long;
 
-# I'm pretty sure this is a standard lib module across all perl5
-# installs, but we can work around this easily if that doesn't turn out
-# to be true. [goodell@ 2010-04-26]
-use Digest::MD5 qw();
+# Help perl find the YAML parsing module
+use lib './maint/local_perl/lib';
+use YAML::Tiny qw();
 
 # To format README file
 use Text::Wrap;
@@ -33,99 +25,125 @@ $Text::Wrap::unexpand = 0; # disable hard tabs in output
 
 # set true to enable debug output
 my $debug = 0;
+my @cvars = ();
+my @categories=();
+my $yaml = YAML::Tiny->new();
+my @dirs = ();
+my @cfiles = ();
+my %skipfiles = ();
 
 # namespace prefix for function names
 my $fn_ns = "MPIR_T_cvar";
-
 # namespace prefix for variable and type names
 my $ns = "MPIR_CVAR";
-# an alternative namespace used for environment variables, unused if set
-# to ""
+# an alternative namespace used for environment variables, unused if set to ""
 my $alt_ns = "MPIR_PARAM";
-
 # deprecated prefix for backward compatibility
 my $dep_ns = "MPICH";
 
-# cvar description file
-my $cvar_file = "src/util/cvar/cvars.yml";
-
-# output source files
+# Default :output source files
 my $header_file = "src/include/mpich_cvars.h";
 my $c_file      = "src/util/cvar/mpich_cvars.c";
 my $readme_file = "README.envvar";
 
-GetOptions(
-    "help!"       => \&print_usage_and_exit,
-    "debug!"      => \$debug,
-    "namespace=s" => \$ns,
-    "alt-namespace=s" => \$alt_ns,
-    "param-file"  => \$cvar_file,
-    "header=s"    => \$header_file,
-    "c-file=s"    => \$c_file,
-    "readme-file=s" => \$readme_file,
-) or die "unable to parse options, stopped";
-
-sub print_usage_and_exit {
+sub Usage {
     print <<EOT;
+
 Usage: $0 [OPTIONS]
 
 Supported options:
-
-    --help            - this output
-    --debug           - enable some debugging output
-    --namespace=STR   - use STR as variable/type prefix in generated code
-    --param-file=FILE - use FILE as input describing cvars
+    --help              - this output (optional)
+    --debug             - enable some debugging output (optional)
+    --namespace=STR     - use STR as variable/type prefix in generated code (optional, default=$ns)
+    --alt-namespace=STR - use STR as alternaive variable/type prefix in generated code (optional, default=$alt_ns)
+    --header=STR        - specify the header file name (optional, default=$header_file)
+    --c-file=STR        - specify the C file name (optional, default=$c_file)
+    --readme-file=STR   - specify the readme file name (optional, default=$readme_file)
+    --dirs=STR          - recursively parse C or header files under the directories as specified
+    --skip=STR          - skip parsing files as specified (optional)
 
 EOT
     exit 1;
 }
 
-my $run_timestamp = localtime;
-my $uc_ns = uc($ns);
+# Step 1: Process options
+my $dirline;
+my $skipline = "";
+GetOptions(
+    "help!"           => \&Usage,
+    "debug!"          => \$debug,
+    "namespace=s"     => \$ns,
+    "alt-namespace=s" => \$alt_ns,
+    "header=s"        => \$header_file,
+    "c-file=s"        => \$c_file,
+    "readme-file=s"   => \$readme_file,
+    "dirs=s"          => \$dirline,
+    "skips=s"         => \$skipline
+) or Usage();
 
-########################################################################
-# read the config file and turn it into a perl hash/array object
+Usage unless $dirline;
 
-# NOTE: if multiple configuration files are supported in the future,
-# this is the place that should be modified to read them all in and
-# merge them into a single consistent configuration object
+print "dirline = $dirline\n" if $debug;
+ at dirs = split(/[:,;\s]+/, $dirline);
 
-my $yaml = YAML::Tiny->new();
-my $cvars = ($yaml->read($cvar_file))->[0]; # [0] is for the first document
-print Dumper($cvars)."\n" if $debug;
-die "not a HASH, stopped" unless ref($cvars) eq "HASH";
+my @skips = split(/[:,;\s]+/, $skipline);
+%skipfiles = map {$_ => 1} @skips;
+
+# Step 2: Search all cfiles and put them in @cfiles.
+foreach my $dir (@dirs) {
+    ExpandDir($dir);
+}
+
+# Step 3: Parse each cfile and put results in  @cvars and @categories.
+foreach my $cfile (@cfiles) {
+    ProcessFile($cfile);
+}
 
-########################################################################
-# validate the config file
+# Step 4: Preprocess cvars:
+# *) Make sure that all categories referenced by cvars actually exist
+# *) Strip out the prefix of their name (normally, MPIR_CVAR)
+die "missing 'cvars', stopped" unless (@cvars);
+my %cat_hash = map {$_->{name} => 1} @categories;
 
-# only simple checks for now, just make sure that all categories
-# referenced by cvars actually exist
-my %cat_hash = (map { ($_->{name} => 1) } @{$cvars->{categories}});
-foreach my $p (@{$cvars->{cvars}}) {
+foreach my $p (@cvars) {
     unless (exists $cat_hash{$p->{category}}) {
-        warn "category '".$p->{category}."' referenced by '".$p->{name}."' was not found";
+        warn "Category '".$p->{category}."' referenced by '".$p->{name}."' was not found";
+    }
+    $p->{name} =~ s/${ns}_//;
+    if (exists $p->{'alt-env'}) {
+        my @alts = split(/[:,;\s]+/, $p->{'alt-env'});
+        foreach my $elmt (@alts) {
+            $elmt =~ s/${ns}_//;
+        }
+        $p->{'alt-env'} = [@alts];
     }
 }
 
-########################################################################
-# setup output files
-open(CVAR_HDR,    '>', $header_file);
-open(CVAR_C,      '>', $c_file);
-open(CVAR_README, '>', $readme_file);
+# Step 5: Output cvars and categories
+print "Categories include: \n".Dumper(@categories) if $debug;
+print "Cvars include :\n".Dumper(@cvars)."\n" if $debug;
 
-my $hdr_guard = header_to_incl_guard($header_file);
-my $cvar_file_md5 = md5sum($cvar_file);
+my $run_timestamp = localtime;
+my $uc_ns = uc($ns);
+
+# Setup output files
+open(OUTPUT_H,      '>', $header_file);
+open(OUTPUT_C,      '>', $c_file);
+open(OUTPUT_README, '>', $readme_file);
 
-print CVAR_HDR <<EOT;
+#===============================================================
+# Step 5.1: Dump the header file.
+my $hdr_guard = Header2InclGuard($header_file);
+print OUTPUT_H <<EOT;
 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
 /*
  *  (C) 2011 by Argonne National Laboratory.
  *      See COPYRIGHT in top-level directory.
  */
-/* automatically generated
+
+/* Automatically generated
  *   by:   $0
  *   on:   $run_timestamp
- *   from: $cvar_file (md5sum $cvar_file_md5)
  *
  * DO NOT EDIT!!!
  */
@@ -135,9 +153,35 @@ print CVAR_HDR <<EOT;
 
 #include "mpitimpl.h" /* for MPIR_T_cvar_range_value_t */
 
+/* Initializes cvar values from the environment */
+int ${fn_ns}_init(void);
+int ${fn_ns}_finalize(void);
+
+/* Extern declarations for each cvar
+ * (definitions in $c_file) */
+
+EOT
+
+foreach my $p (@cvars) {
+    printf OUTPUT_H "/* declared in $p->{location} */\n";
+    printf OUTPUT_H "extern %s ${uc_ns}_%s;\n", Type2Ctype($p->{type}), $p->{name};
+}
+
+print OUTPUT_H <<EOT;
+
+/* TODO: this should be defined elsewhere */
+#define ${ns}_assert MPIU_Assert
+
+/* Arbitrary, simplifies interaction with external interfaces like MPI_T_ */
+#define ${uc_ns}_MAX_STRLEN (4096)
+
+#endif /* $hdr_guard */
 EOT
+close(OUTPUT_H);
 
-print CVAR_C <<EOT;
+#===============================================================
+# Step 5.2: Dump the C file.
+print OUTPUT_C <<EOT;
 /* -*- Mode: C; c-basic-offset:4 ; indent-tabs-mode:nil ; -*- */
 /*
  *  (C) 2011 by Argonne National Laboratory.
@@ -146,71 +190,38 @@ print CVAR_C <<EOT;
 /* automatically generated
  *   by:   $0
  *   at:   $run_timestamp
- *   from: $cvar_file (md5sum $cvar_file_md5)
  *
  * DO NOT EDIT!!!
  */
 
 #include "mpiimpl.h"
 
+/* Actual storage for cvars */
 EOT
-
-print CVAR_README <<EOT;
-(C) 2011 by Argonne National Laboratory.
-    See COPYRIGHT in top-level directory.
-
-This file lists the various environment variables available to change the
-behavior of the MPICH library.  These are intended to be used by advanced
-users.
----------------------------------------------------------------------------
-
-EOT
-
-########################################################################
-# now the actual cvars
-die "missing 'cvars', stopped" unless exists $cvars->{cvars};
-
-print CVAR_HDR <<EOT;
-/* initializes cvar values from the environment */
-int ${fn_ns}_init(void);
-int ${fn_ns}_finalize(void);
-
-/* extern declarations for each cvar
- * (definitions in $c_file) */
-EOT
-
-# XXX DJG TODO collate and separate by category
-foreach my $p (@{$cvars->{cvars}}) {
-    printf CVAR_HDR "extern %s ${uc_ns}_%s;\n",
-        type2ctype($p->{type}), $p->{name};
-}
-
-print CVAR_C "/* actual storage for cvars */\n";
-
-foreach my $p (@{$cvars->{cvars}}) {
-    my $default;
-    if ($p->{type} eq "string") {
-        # handle strings specially to avoid various const issues
-        $default = fmt_default($p->{name}, undef, "NULL", $p->{type});
-    }
-    else {
-        $default = fmt_default($p->{name}, $p->{default}, $p->{defaultliteral}, $p->{type});
+# Output the definitions
+foreach my $p (@cvars) {
+    my $default = FmtDefault($p->{name}, $p->{default}, $p->{type});
+
+    if ($p->{class} eq 'device') {
+        printf OUTPUT_C "#if defined MPID_%s\n", $p->{name};
+        printf OUTPUT_C "%s ${uc_ns}_%s = MPID_%s;\n", Type2Ctype($p->{type}), $p->{name},
+                       $p->{name};
+        printf OUTPUT_C "#else\n";
     }
 
-    if ($p->{class} eq "device") {
-	printf CVAR_C "#if defined MPID_%s\n", $p->{name};
-	printf CVAR_C "%s ${uc_ns}_%s = MPID_%s;\n", type2ctype($p->{type}), $p->{name},
-	               $p->{name};
-	printf CVAR_C "#else\n";
+    if ($p->{type} eq 'string') {
+        printf OUTPUT_C "%s ${uc_ns}_%s = (char*)%s;\n", Type2Ctype($p->{type}), $p->{name}, $default;
+    } else {
+        printf OUTPUT_C "%s ${uc_ns}_%s = %s;\n", Type2Ctype($p->{type}), $p->{name}, $default;
     }
-    printf CVAR_C "%s ${uc_ns}_%s = %s;\n", type2ctype($p->{type}), $p->{name}, $default;
-    if ($p->{class} eq "device") {
-	printf CVAR_C "#endif /* MPID_%s */\n\n", $p->{name};
+
+    if ($p->{class} eq 'device') {
+        printf OUTPUT_C "#endif /* MPID_%s */\n\n", $p->{name};
     }
 }
 
-# FIXME the mpi_errno bit is MPICH-specific
-print CVAR_C <<EOT;
+# Generate the init function.
+print OUTPUT_C <<EOT;
 
 #undef FUNCNAME
 #define FUNCNAME ${fn_ns}_init
@@ -231,62 +242,58 @@ int ${fn_ns}_init(void)
 
 EOT
 
-foreach my $p (@{$cvars->{cvars}}) {
-    my $count = 1;
+# Register categories
+foreach my $cat (@categories) {
+    my $desc = $cat->{description};
+    $desc =~ s/"/\\"/g;
+    printf OUTPUT_C qq(    /* declared in $cat->{location} */\n);
+    printf OUTPUT_C qq(    MPIR_T_cat_add_desc(%s\n%s);\n\n),
+        qq("$cat->{name}",),
+        qq(        "$desc");
+}
+
+# Register and init cvars
+foreach my $p (@cvars) {
+    my $count;
     my $mpi_dtype;
+    my $dftval;
+
+    # Set count and default value of the car
     if ($p->{type} eq 'string') {
         $mpi_dtype = "MPI_CHAR";
-        $count = "MPIR_CVAR_MAX_STRLEN";
-        my $str_val = fmt_default($p->{name}, $p->{default}, $p->{defaultliteral}, $p->{type});
-        printf CVAR_C qq(    defaultval.str = (char *)%s;\n), $str_val;
+        $count = "${uc_ns}_MAX_STRLEN";
+        $dftval = FmtDefault($p->{name}, $p->{default}, $p->{type});
+        printf OUTPUT_C qq(    defaultval.str = (char *)%s;\n), $dftval;
     }
     elsif ($p->{type} eq 'int' or $p->{type} eq 'boolean') {
         $mpi_dtype = "MPI_INT";
         $count = 1;
-        my $int_val = fmt_default($p->{name}, $p->{default}, $p->{defaultliteral}, $p->{type});
-        printf CVAR_C qq(    defaultval.d = %s;\n), $int_val;
-    }
-    elsif ($p->{type} eq 'unsigned') {
-        $mpi_dtype = "MPI_UNSINGED";
-        $count = 1;
-        my $double_val = fmt_default($p->{name}, $p->{default}, $p->{defaultliteral}, $p->{type});
-        printf CVAR_C qq(    defaultval.u = %s;\n), $double_val;
-    }
-    elsif ($p->{type} eq 'unsigned long') {
-        $mpi_dtype = "MPI_DOUBLE";
-        $count = 1;
-        my $double_val = fmt_default($p->{name}, $p->{default}, $p->{defaultliteral}, $p->{type});
-        printf CVAR_C qq(    defaultval.ul = %s;\n), $double_val;
-    }
-    elsif ($p->{type} eq 'unsigned long long') {
-        $mpi_dtype = "MPI_DOUBLE";
-        $count = 1;
-        my $double_val = fmt_default($p->{name}, $p->{default}, $p->{defaultliteral}, $p->{type});
-        printf CVAR_C qq(    defaultval.ull = %s;\n), $double_val;
+        $dftval = FmtDefault($p->{name}, $p->{default}, $p->{type});
+        printf OUTPUT_C qq(    defaultval.d = %s;\n), $dftval;
     }
     elsif ($p->{type} eq 'double') {
         $mpi_dtype = "MPI_DOUBLE";
         $count = 1;
-        my $double_val = fmt_default($p->{name}, $p->{default}, $p->{defaultliteral}, $p->{type});
-        printf CVAR_C qq(    defaultval.d = %s;\n), $double_val;
+        $dftval = FmtDefault($p->{name}, $p->{default}, $p->{type});
+        printf OUTPUT_C qq(    defaultval.d = %s;\n), $dftval;
     }
     elsif ($p->{type} eq 'range') {
         $mpi_dtype = "MPI_INT";
         $count = 2;
-        my $range_val = fmt_default($p->{name}, $p->{default}, $p->{defaultliteral}, $p->{type});
-        printf CVAR_C qq(    {\n);
-        printf CVAR_C qq(        MPIR_T_cvar_range_value_t tmp = %s;\n), $range_val;
-        printf CVAR_C qq(        defaultval.range = tmp;\n);
-        printf CVAR_C qq(    }\n);
+        $dftval = FmtDefault($p->{name}, $p->{default}, $p->{type});
+        printf OUTPUT_C qq(    {\n);
+        printf OUTPUT_C qq(        MPIR_T_cvar_range_value_t tmp = %s;\n), $dftval;
+        printf OUTPUT_C qq(        defaultval.range = tmp;\n);
+        printf OUTPUT_C qq(    }\n);
     }
     else {
         die "unknown type $p->{type}, stopped";
     }
 
+    # Register the cvar
     my $desc = $p->{description};
     $desc =~ s/"/\\"/g;
-
-    printf CVAR_C qq(    MPIR_T_CVAR_REGISTER_STATIC(\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s);\n),
+    printf OUTPUT_C qq(    MPIR_T_CVAR_REGISTER_STATIC(\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s\n%s);\n),
         qq(        $mpi_dtype,),
         qq(        ${uc_ns}_$p->{name}, /* name */),
         qq(        &${uc_ns}_$p->{name}, /* address */),
@@ -298,17 +305,17 @@ foreach my $p (@{$cvars->{cvars}}) {
         qq(        "$desc");
 
     if ($p->{type} eq 'string') {
-print CVAR_C <<EOT;
+print OUTPUT_C <<EOT;
     ${uc_ns}_GET_DEFAULT_STRING(${uc_ns}_$p->{name}, &tmp_str);
 EOT
     }
 
-    my $env_fn = type_to_env_fn($p->{type});
+    # Get the env variable value.
+    my $env_fn = Type2EnvFn($p->{type});
     my @env_names = ();
     my $var_name = "${uc_ns}_" . $p->{name};
 
-    # process extra envs first so the primary always wins
-    push @env_names, @{$p->{'abs-alt-env'}} if $p->{'abs-alt-env'};
+    # Process extra envs first so the primary always wins
     push @env_names, map { "${dep_ns}_$_" } @{$p->{'alt-env'}};
     push @env_names, map { "${alt_ns}_$_" } @{$p->{'alt-env'}};
     push @env_names, map { "${uc_ns}_$_" } @{$p->{'alt-env'}};
@@ -319,26 +326,26 @@ EOT
     foreach my $env_name (@env_names) {
         # assumes rc is defined
         if ($p->{type} eq 'range') {
-            print CVAR_C <<EOT;
+print OUTPUT_C <<EOT;
     rc = MPL_env2${env_fn}("$env_name", &($var_name.low), &($var_name.high));
     MPIU_ERR_CHKANDJUMP1((-1 == rc),mpi_errno,MPI_ERR_OTHER,"**envvarparse","**envvarparse %s","$env_name");
 EOT
         }
         elsif ($p->{type} eq 'string') {
-            print CVAR_C <<EOT;
+print OUTPUT_C <<EOT;
     rc = MPL_env2${env_fn}("$env_name", &tmp_str);
     MPIU_ERR_CHKANDJUMP1((-1 == rc),mpi_errno,MPI_ERR_OTHER,"**envvarparse","**envvarparse %s","$env_name");
 EOT
         }
         else {
-            print CVAR_C <<EOT;
+print OUTPUT_C <<EOT;
     rc = MPL_env2${env_fn}("$env_name", &($var_name));
     MPIU_ERR_CHKANDJUMP1((-1 == rc),mpi_errno,MPI_ERR_OTHER,"**envvarparse","**envvarparse %s","$env_name");
 EOT
         }
     }
     if ($p->{type} eq 'string') {
-        print CVAR_C <<EOT;
+print OUTPUT_C <<EOT;
     if (tmp_str != NULL) {
         ${var_name} = MPIU_Strdup(tmp_str);
         ${ns}_assert(${var_name});
@@ -352,18 +359,10 @@ EOT
     }
 EOT
     }
-    print CVAR_C "\n";
+    print OUTPUT_C "\n";
 }
 
-foreach my $cat (@{$cvars->{categories}}) {
-    my $desc = $cat->{description};
-    $desc =~ s/"/\\"/g;
-    printf CVAR_C qq(    MPIR_T_cat_add_desc(%s\n%s);\n\n),
-        qq("$cat->{name}",),
-        qq(        "$desc");
-}
-
-print CVAR_C <<EOT;
+print OUTPUT_C <<EOT;
 fn_exit:
     return mpi_errno;
 fn_fail:
@@ -372,19 +371,19 @@ fn_fail:
 
 EOT
 
-print CVAR_C <<EOT;
+print OUTPUT_C <<EOT;
 int ${fn_ns}_finalize(void)
 {
     int mpi_errno = MPI_SUCCESS;
 
 EOT
 
-foreach my $p (@{$cvars->{cvars}}) {
+foreach my $p (@cvars) {
     my $var_name = "${uc_ns}_" . $p->{name};
 
-    if ($p->{type} eq "string") {
-        # need to cleanup after whatever was strduped by the init routine
-print CVAR_C <<EOT;
+    if ($p->{type} eq 'string') {
+        # Need to cleanup after whatever was strduped by the init routine
+print OUTPUT_C <<EOT;
     if (${var_name} != NULL) {
         MPIU_Free(${var_name});
         ${var_name} = NULL;
@@ -394,8 +393,7 @@ EOT
     }
 }
 
-
-print CVAR_C <<EOT;
+print OUTPUT_C <<EOT;
 fn_exit:
     return mpi_errno;
 fn_fail:
@@ -403,8 +401,27 @@ fn_fail:
 }
 
 EOT
+close(OUTPUT_C);
+
+#===============================================================
+#Step 5.3 Dump the readme file
+print OUTPUT_README <<EOT;
+(C) 2011 by Argonne National Laboratory.
+    See COPYRIGHT in top-level directory.
+
+Automatically generated
+  by:   $0
+  at:   $run_timestamp
+DO NOT EDIT!!!
 
-foreach my $p (@{$cvars->{cvars}}) {
+This file lists the various environment variables available to change the
+behavior of the MPICH library.  These are intended to be used by advanced
+users.
+---------------------------------------------------------------------------
+
+EOT
+
+foreach my $p (@cvars) {
     my @env_names = ();
     my $first;
     my $alt;
@@ -416,64 +433,32 @@ foreach my $p (@{$cvars->{cvars}}) {
     push @env_names, map { "${uc_ns}_$_" } @{$p->{'alt-env'}};
     push @env_names, map { "${alt_ns}_$_" } @{$p->{'alt-env'}};
     push @env_names, map { "${dep_ns}_$_" } @{$p->{'alt-env'}};
-    push @env_names, @{$p->{'abs-alt-env'}} if $p->{'abs-alt-env'};
 
-    print CVAR_README "${uc_ns}_$p->{name}\n";
+    print OUTPUT_README "${uc_ns}_$p->{name}\n";
 
     $first = 1;
     foreach $alt (@env_names) {
         if ($first) {
-            print CVAR_README "    Aliases: $alt\n";
+            print OUTPUT_README "    Aliases: $alt\n";
         } else {
-            print CVAR_README "             $alt\n";
+            print OUTPUT_README "             $alt\n";
         }
         $first = 0;
     }
 
-    print CVAR_README wrap("    Description: ", "        ", $p->{description} . "\n");
-    $default = fmt_default($p->{name}, $p->{default}, $p->{defaultliteral}, $p->{type});
-    print CVAR_README "    Default: $default\n";
-    print CVAR_README "\n";
+    print OUTPUT_README wrap("    Description: ", "        ", $p->{description} . "\n");
+    $default = FmtDefault($p->{name}, $p->{default}, $p->{type});
+    print OUTPUT_README "    Default: $default\n";
+    print OUTPUT_README "\n";
 }
 
+close(OUTPUT_README);
 
-########################################################################
-# clean up
-
-close(CVAR_C);
-
-print CVAR_HDR <<EOT;
-
-/* TODO: this should be defined elsewhere */
-#define ${ns}_assert MPIU_Assert
-
-/* arbitrary, simplifies interaction with external interfaces like MPI_T_ */
-#define ${uc_ns}_MAX_STRLEN (4096)
-
-/* helper macros for safely getting the default value of a cvar */
-EOT
-
-print CVAR_HDR <<EOT;
-#endif /* $hdr_guard */
-EOT
-close(CVAR_HDR);
-
-print CVAR_README <<EOT;
----------------------------------------------------------------------------
+#===============================================================
+# Helper subroutines used in this script
 
-Automatically generated
-  by:   $0
-  at:   $run_timestamp
-  from: $cvar_file (md5sum $cvar_file_md5)
-
-EOT
-close(CVAR_README);
-
-########################################################################
-# helper subroutines
-
-# transform a cvar type to a C-language type
-sub type2ctype {
+# Transform a cvar type to a C-language type
+sub Type2Ctype {
     my $type = shift;
     my %typemap = (
         'int'     => 'int',
@@ -486,25 +471,18 @@ sub type2ctype {
     return $typemap{$type};
 }
 
-# transform a default value into a C value
-sub fmt_default {
+# Transform a default value into a C value
+sub FmtDefault {
     my $name = shift;
     my $val = shift;
-    my $literalval = shift;
     my $type = shift;
 
-    if (defined($literalval)) {
-        die "Both \"default\" and \"defaultliteral\" fields were specified for cvar \"$name\", stopped" if defined($val);
-        return qq($literalval);
-    }
-
-    die "Exactly one of \"default\" or \"defaultliteral\" fields must be specified for cvar \"$name\", stopped" unless defined($val);
-
-    if ($type eq "string") {
+    if ($type eq 'string') {
         $val =~ s/"/\\"/g;
-        return qq("$val");
+        if ($val eq 'NULL' or $val eq 'null') { return "NULL"; }
+        else { return qq("$val"); }
     }
-    elsif ($type eq "boolean") {
+    elsif ($type eq 'boolean') {
         if    ($val =~ m/^(0|f(alse)?|no?)$/i)   { return qq(0); }
         elsif ($val =~ m/^(1|t(rue)?|y(es)?)$/i) { return qq(1); }
         else {
@@ -512,11 +490,10 @@ sub fmt_default {
             return qq(0); # fail-false
         }
     }
-    elsif ($type eq "range") {
+    elsif ($type eq 'range') {
         if ($val !~ "-?[0-9]+:-?[0-9]+") {
             die "Unable to parse range value '$val', stopped";
         }
-
         $val =~ s/:/,/;
         return qq({$val});
     }
@@ -525,8 +502,8 @@ sub fmt_default {
     }
 }
 
-# turns foo_BAR-baz.h into FOO_BAR_BAZ_H_INCLUDED
-sub header_to_incl_guard {
+# turns /path/foo_BAR-baz.h into FOO_BAR_BAZ_H_INCLUDED
+sub Header2InclGuard {
     my $header_file = shift;
     my $guard = basename($header_file);
     $guard =~ tr/a-z\-./A-Z__/;
@@ -535,19 +512,7 @@ sub header_to_incl_guard {
     return $guard;
 }
 
-sub md5sum {
-    my $file = shift;
-    my $md5 = Digest::MD5->new();
-
-    open FILE, '<', $file;
-    binmode(FILE);
-    $md5->addfile(*FILE);
-    close FILE;
-
-    return $md5->hexdigest;
-}
-
-sub type_to_env_fn {
+sub Type2EnvFn {
     my $type = shift;
     my %typemap = (
         'int' =>  'int',
@@ -561,3 +526,84 @@ sub type_to_env_fn {
     return $typemap{$type};
 }
 
+# Parse a file, search the MPI_T_CVAR_INFO_BLOCK if any.
+# Distill cvars and categories from the block.
+# Push the results to back of @cvars and @categories respectively.
+sub ProcessFile {
+    my $cfile = $_[0];
+    my $cvar_info_block = undef;
+    my $in_cvar_info_block = 0;
+
+    #print "Processing file $cfile\n" if $debug;
+    open my $CFILE_HANDLE, "< $cfile" or die "Error: open file $cfile -- $!\n";
+    while (<$CFILE_HANDLE>) {
+        if (/END_MPI_T_CVAR_INFO_BLOCK/) {
+            last;
+        } elsif ($in_cvar_info_block) {
+            $cvar_info_block .= $_;
+        } elsif (/BEGIN_MPI_T_CVAR_INFO_BLOCK/) {
+            $in_cvar_info_block = 1;
+            print "Found MPI_T_CVAR_INFO_BLOCK in $cfile\n" if $debug;
+        }
+    }
+    close $CFILE_HANDLE;
+
+    # Do some checking to ensure a correct cvar info block, also
+    # add file locations to help users' debugging.
+    if ($cvar_info_block) {
+        my $info = ($yaml->read_string($cvar_info_block))->[0];
+        if (exists $info->{cvars}) {
+            # Remember location where the cvar is defined. Put that into
+            # comments of the generated *.h file so that users know where
+            # to look when meeting compilation errors.
+            foreach my $cvar (@{$info->{cvars}}) {
+                $cvar->{location} = $cfile;
+                die "ERROR: cvar has no name in $cfile\n" unless exists $cvar->{name};
+                die "ERROR: cvar $cvar->{name} has no type in $cfile\n" unless exists $cvar->{type};
+                die "ERROR: cvar $cvar->{name} has no verbosity in $cfile\n" unless exists $cvar->{verbosity};
+                die "ERROR: cvar $cvar->{name} has no scope in $cfile\n" unless exists $cvar->{scope};
+                die "ERROR: cvar $cvar->{name} has no class in $cfile\n" unless exists $cvar->{class};
+                die "ERROR: cvar $cvar->{name} has no description in $cfile\n" unless exists $cvar->{description};
+            }
+            push (@cvars, @{$info->{cvars}});
+        }
+
+        if (exists $info->{categories}) {
+            # Do the same trick to categories
+            foreach my $cat (@{$info->{categories}}) {
+                $cat->{location} = $cfile;
+                die "ERROR: category has no name in $cfile\n" unless exists $cat->{name};
+                die "ERROR: category $cat->{name} has no description in $cfile\n"
+                    unless exists $cat->{description};
+            }
+            push (@categories, @{$info->{categories}});
+        }
+    }
+}
+
+# Search cfiles recursively in the directory passed in.
+# Push file names along with their paths to back of @cfiles.
+sub ExpandDir {
+    my $dir = $_[0];
+    my @subdirs = ();
+    my $DIR_HANDLE;
+    opendir $DIR_HANDLE, "$dir" or die "Error: open directory $dir -- $!\n";
+    while (readdir $DIR_HANDLE) {
+        if (/^\./) {
+            next;
+        } elsif (-d "$dir/$_") {
+            $subdirs[$#subdirs + 1] = "$dir/$_";
+        } elsif (/(.*\.[Cchi])(pp){0,1}$/) {
+            if (!defined($skipfiles{"$dir/$_"}))
+            {
+                $cfiles[$#cfiles + 1] = "$dir/$_";
+            }
+        }
+    }
+    closedir $DIR_HANDLE;
+
+    # Recursively search subdirs
+    foreach $dir (@subdirs) {
+        ExpandDir($dir);
+    }
+}
diff --git a/src/include/Makefile.mk b/src/include/Makefile.mk
index 6aa9bf2..12f8098 100644
--- a/src/include/Makefile.mk
+++ b/src/include/Makefile.mk
@@ -66,5 +66,5 @@ noinst_HEADERS +=                   \
     src/include/oputil.h            \
     src/include/mpiinfo.h
 
-src/include/mpich_cvars.h: src/util/cvar/cvars.yml
-	$(top_srcdir)/maint/gencvars
+src/include/mpich_cvars.h:
+	$(top_srcdir)/maint/extractcvars --dirs="`cat $(top_srcdir)/maint/cvardirs`"
diff --git a/src/util/cvar/Makefile.mk b/src/util/cvar/Makefile.mk
index bd27c56..fa1543f 100644
--- a/src/util/cvar/Makefile.mk
+++ b/src/util/cvar/Makefile.mk
@@ -8,10 +8,8 @@
 lib_lib at MPILIBNAME@_la_SOURCES +=   \
     src/util/cvar/mpich_cvars.c
 
-dist_noinst_DATA += src/util/cvar/cvars.yml
-
 if MAINTAINER_MODE
 # normally built by autogen.sh, but this rebuild rule is here
-$(top_srcdir)/src/util/cvar/mpich_cvars.c: $(top_srcdir)/src/util/cvar/cvars.yml $(top_srcdir)/maint/gencvars
-	( cd $(top_srcdir) && ./maint/gencvars )
+$(top_srcdir)/src/util/cvar/mpich_cvars.c: $(top_srcdir)/maint/extractcvars
+	( cd $(top_srcdir) && ./maint/extractcvars --dirs="`cat ./maint/cvardirs`")
 endif MAINTAINER_MODE

http://git.mpich.org/mpich.git/commitdiff/6239007c3a9c415f5ebfc566788f3ca5eb6dd34a

commit 6239007c3a9c415f5ebfc566788f3ca5eb6dd34a
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Wed Dec 18 16:34:31 2013 -0600

    Rename script gencvars to extractcvars
    
    Signed-off-by: Pavan Balaji <balaji at mcs.anl.gov>

diff --git a/maint/gencvars b/maint/extractcvars
similarity index 100%
rename from maint/gencvars
rename to maint/extractcvars

http://git.mpich.org/mpich.git/commitdiff/c10aaa185e46c42968dbbaed77925f75e820cc80

commit c10aaa185e46c42968dbbaed77925f75e820cc80
Author: Junchao Zhang <jczhang at mcs.anl.gov>
Date:   Mon Nov 11 19:00:07 2013 -0600

    Delete cvars.yml since it will be split.
    
    Signed-off-by: Pavan Balaji <balaji at mcs.anl.gov>

diff --git a/src/util/cvar/cvars.yml b/src/util/cvar/cvars.yml
deleted file mode 100644
index 3d0301d..0000000
--- a/src/util/cvar/cvars.yml
+++ /dev/null
@@ -1,770 +0,0 @@
---- #YAML:1.0
-# This is a YAML formatted file with '#'-style comments.  This file
-# *must* be parseable by the YAML::Tiny perl module.  So don't use
-# the inline list or map forms and don't try to use any really fancy
-# features like tagging or anchors.
-#
-# It is used to generate cvar-handling code for MPICH.
-# See the maint/gencvars script for more information.
-#
-# The only tricky bit is that long reflowed text (such as a description)
-# should use ">-" to both fold newlines and remove the trailing newline.
-#
-# Listing "FOO" as a cvar name will cause two environment variables
-# to be examined by default: MPIR_CVAR_FOO and MPICH_FOO, with the
-# MPIR_PARAM value having priority.
-#
-# Each cvar has a class associated with it.  The following
-# classes are defined: "device", and "none".  Setting it to "device"
-# will allow the device to override the default value.
-
-categories:
-    - name        : COLLECTIVE
-      description : cvars that control collective communication behavior
-    - name        : COMMUNICATOR
-      description : cvars that control communicator construction and operation
-    - name        : PT2PT
-      description : cvars that control point-to-point communication behavior
-    - name        : RMA
-      description : cvars that control RMA communicatin behavior
-    - name        : INTRANODE
-      description : intranode communication cvars
-    - name        : DEVELOPER
-      description : useful for developers working on MPICH itself
-    - name        : MEMORY
-      description : affects memory allocation and usage, including MPI object handles
-    - name        : ERROR_HANDLING
-      description : cvars that control error handling behavior (stack traces, aborts, etc)
-    - name        : DEBUGGER
-      description : cvars relevant to the "MPIR" debugger interface
-    - name        : CHECKPOINTING
-      description : cvars relevant to checkpointing
-    - name        : FAULT_TOLERANCE
-      description : cvars that control fault tolerance behavior
-    - name        : THREADS
-      description : multi-threading cvars
-    - name        : CH3
-      description : cvars that control behavior of ch3
-    - name        : NEMESIS
-      description : "cvars that control behavior of the ch3:nemesis channel"
-    - name        : SOCKETS
-      description : control socket cvars
-    - name        : PROCESS_MANAGER
-      description : cvars that control the client-side process manager code
-
-cvars:
-    ##############################################################
-    # collective cvars
-    - category    : COLLECTIVE
-      name        : ALLTOALL_SHORT_MSG_SIZE
-      type        : int
-      default     : 256
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        the short message algorithm will be used if the per-destination
-        message size (sendcount*size(sendtype)) is <= this value
-
-    - category    : COLLECTIVE
-      name        : ALLTOALL_MEDIUM_MSG_SIZE
-      type        : int
-      default     : 32768
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        the medium message algorithm will be used if the per-destination
-        message size (sendcount*size(sendtype)) is <= this value and
-        larger than ALLTOALL_SHORT_MSG_SIZE
-
-    - category    : COLLECTIVE
-      name        : ALLTOALL_THROTTLE
-      type        : int
-      default     : 32
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        max no. of irecvs/isends posted at a time in some alltoall
-        algorithms. Setting it to 0 causes all irecvs/isends to be
-        posted at once.
-
-    - category    : COLLECTIVE
-      name        : REDSCAT_COMMUTATIVE_LONG_MSG_SIZE
-      type        : int
-      default     : 524288
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        the long message algorithm will be used if the operation is commutative
-        and the send buffer size is >= this value (in bytes)
-
-    - category    : COLLECTIVE
-      name        : BCAST_MIN_PROCS
-      type        : int
-      default     : 8
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        the minimum number of processes in a communicator to use a non-binomial
-        broadcast algorithm
-
-    - category    : COLLECTIVE
-      name        : BCAST_SHORT_MSG_SIZE
-      type        : int
-      default     : 12288
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        the short message algorithm will be used if the send buffer size is <
-        this value (in bytes)
-
-    - category    : COLLECTIVE
-      name        : BCAST_LONG_MSG_SIZE
-      type        : int
-      default     : 524288
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        the long message algorithm will be used if the send buffer size is >=
-        this value (in bytes)
-
-    - category    : COLLECTIVE
-      name        : ALLGATHER_SHORT_MSG_SIZE
-      type        : int
-      default     : 81920
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        For MPI_Allgather and MPI_Allgatherv, the short message algorithm will
-        be used if the send buffer size is < this value (in bytes).
-
-    - category    : COLLECTIVE
-      name        : ALLGATHER_LONG_MSG_SIZE
-      type        : int
-      default     : 524288
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        For MPI_Allgather and MPI_Allgatherv, the long message algorithm will be
-        used if the send buffer size is >= this value (in bytes)
-
-    - category    : COLLECTIVE
-      name        : REDUCE_SHORT_MSG_SIZE
-      type        : int
-      default     : 2048
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        the short message algorithm will be used if the send buffer size is <=
-        this value (in bytes)
-
-    - category    : COLLECTIVE
-      name        : ALLREDUCE_SHORT_MSG_SIZE
-      type        : int
-      default     : 2048
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        the short message algorithm will be used if the send buffer size is <=
-        this value (in bytes)
-
-    - category    : COLLECTIVE
-      name        : GATHER_VSMALL_MSG_SIZE
-      type        : int
-      default     : 1024
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        use a temporary buffer for intracommunicator MPI_Gather if the send
-        buffer size is < this value (in bytes)
-
-    - category    : COLLECTIVE
-      name        : GATHER_INTER_SHORT_MSG_SIZE
-      type        : int
-      default     : 2048
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        use the short message algorithm for intercommunicator MPI_Gather if the
-        send buffer size is < this value (in bytes)
-
-    - category    : COLLECTIVE
-      name        : GATHERV_INTER_SSEND_MIN_PROCS
-      type        : int
-      default     : 32
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Use Ssend (synchronous send) for intercommunicator MPI_Gatherv if the
-        "group B" size is >= this value.  Specifying "-1" always avoids using
-        Ssend.  For backwards compatibility, specifying "0" uses the default
-        value.
-
-    - category    : COLLECTIVE
-      name        : SCATTER_INTER_SHORT_MSG_SIZE
-      type        : int
-      default     : 2048
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        use the short message algorithm for intercommunicator MPI_Scatter if the
-        send buffer size is < this value (in bytes)
-
-    - category    : COLLECTIVE
-      name        : ALLGATHERV_PIPELINE_MSG_SIZE
-      type        : int
-      default     : 32768
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        The smallest message size that will be used for the pipelined, large-message,
-        ring algorithm in the MPI_Allgatherv implementation.
-
-    - category    : COLLECTIVE
-      name        : ENABLE_SMP_COLLECTIVES
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Enable SMP aware collective communication.
-
-    - category    : COLLECTIVE
-      name        : ENABLE_SMP_BARRIER
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Enable SMP aware barrier.
-
-    - category    : COLLECTIVE
-      name        : ENABLE_SMP_BCAST
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Enable SMP aware broadcast.
-
-    - category    : COLLECTIVE
-      name        : MAX_SMP_BCAST_MSG_SIZE
-      type        : int
-      default     : 0
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Maximum message size for which SMP-aware broadcast is used.  A
-        value of '0' uses SMP-aware broadcast for all message sizes.
-
-    - category    : COLLECTIVE
-      name        : ENABLE_SMP_REDUCE
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Enable SMP aware reduce.
-
-    - category    : COLLECTIVE
-      name        : MAX_SMP_REDUCE_MSG_SIZE
-      type        : int
-      default     : 0
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Maximum message size for which SMP-aware reduce is used.  A
-        value of '0' uses SMP-aware reduce for all message sizes.
-
-    - category    : COLLECTIVE
-      name        : ENABLE_SMP_ALLREDUCE
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Enable SMP aware allreduce.
-
-    - category    : COLLECTIVE
-      name        : MAX_SMP_ALLREDUCE_MSG_SIZE
-      type        : int
-      default     : 0
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Maximum message size for which SMP-aware allreduce is used.  A
-        value of '0' uses SMP-aware allreduce for all message sizes.
-
-    ##############################################################
-    # communicator cvars
-    - category    : COMMUNICATOR
-      name        : COMM_SPLIT_USE_QSORT
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Use qsort(3) in the implementation of MPI_Comm_split instead of bubble sort.
-
-  ##############################################################
-    # debugging cvars
-    - category    : DEBUGGER
-      name        : DEBUG_HOLD
-      type        : boolean
-      default     : false
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If true, causes processes to wait in MPI_Init and
-        MPI_Initthread for a debugger to be attached.  Once the
-        debugger has attached, the variable 'hold' should be set to 0
-        in order to allow the process to continue (e.g., in gdb, "set
-        hold=0").
-
-    - category    : DEBUGGER
-      name        : PROCTABLE_SIZE
-      type        : int
-      default     : 64
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Size of the "MPIR" debugger interface proctable (process table).
-
-    - category    : DEBUGGER
-      name        : PROCTABLE_PRINT
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If true, dump the proctable entries at MPIR_WaitForDebugger-time.
-        (currently compile-time disabled by "#if 0")
-
-  ##############################################################
-    # fault-tolerance cvars
-    - category    : FAULT_TOLERANCE
-      name        : ENABLE_COLL_FT_RET
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        DEPRECATED! Will be removed in MPICH-3.2
-        Collectives called on a communicator with a failed process
-        should not hang, however the result of the operation may be
-        invalid even though the function returns MPI_SUCCESS.  This
-        option enables an experimental feature that will return an error
-        if the result of the collective is invalid.
-
-  ##############################################################
-    # memory cvars
-    - category    : MEMORY
-      name        : ABORT_ON_LEAKED_HANDLES
-      type        : boolean
-      default     : false
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If true, MPI will call MPI_Abort at MPI_Finalize if any MPI object
-        handles have been leaked.  For example, if MPI_Comm_dup is called
-        without calling a corresponding MPI_Comm_free.  For uninteresting
-        reasons, enabling this option may prevent all known object leaks from
-        being reported.  MPICH must have been configure with
-        "--enable-g=handlealloc" or better in order for this functionality to
-        work.
-
-  ############################
-    # threads cvars
-    - category    : THREADS
-      name        : CTXID_EAGER_SIZE
-      type        : int
-      default     : 2
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        The MPIR_CVAR_CTXID_EAGER_SIZE environment variable allows you to
-        specify how many words in the context ID mask will be set aside
-        for the eager allocation protocol.  If the application is running
-        out of context IDs, reducing this value may help.
-
-    - category    : THREADS
-      name        : ASYNC_PROGRESS
-      type        : boolean
-      default     : false
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If set to true, MPICH will initiate an additional thread to
-        make asynchronous progress on all communication operations
-        including point-to-point, collective, one-sided operations and
-        I/O.  Setting this variable will automatically increase the
-        thread-safety level to MPI_THREAD_MULTIPLE.  While this
-        improves the progress semantics, it might cause a small amount
-        of performance overhead for regular MPI operations.  The user
-        is encouraged to leave one or more hardware threads vacant in
-        order to prevent contention between the application threads
-        and the progress thread(s).  The impact of oversubscription is
-        highly system dependent but may be substantial in some cases,
-        hence this recommendation.
-
-    - category    : THREADS
-      name        : DEFAULT_THREAD_LEVEL
-      type        : string
-      default     : "MPI_THREAD_SINGLE"
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Sets the default thread level to use when using MPI_INIT.
-
-    ##############################################################
-    # other MPI-level cvars
-    - category    : DEVELOPER
-      name        : MEMDUMP
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_MPIDEV_DETAIL
-      scope       : MPI_T_SCOPE_LOCAL
-      description : >-
-        If true, list any memory that was allocated by MPICH and that
-        remains allocated when MPI_Finalize completes.
-
-    - category    : ERROR_HANDLING
-      name        : ERROR_CHECKING
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If true, perform checks for errors, typically to verify valid inputs
-        to MPI routines.  Only effective when MPICH is configured with
-        --enable-error-checking=runtime .
-
-    - category    : ERROR_HANDLING
-      name        : PRINT_ERROR_STACK
-      type        : boolean
-      default     : true
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If true, print an error stack trace at error handling time.
-
-    - category    : ERROR_HANDLING
-      name        : CHOP_ERROR_STACK
-      type        : int
-      default     : 0
-      class       : device
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If >0, truncate error stack output lines this many characters
-        wide.  If 0, do not truncate, and if <0 use a sensible default.
-
-    ##############################################################
-    # ch3 cvars
-    - category    : CH3
-      name        : CH3_RMA_ACC_IMMED
-      type        : boolean
-      default     : true
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Use the immediate accumulate optimization
-
-    - category    : CH3
-      name        : CH3_RMA_NREQUEST_THRESHOLD
-      type        : int
-      default     : 4000
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Threshold at which the RMA implementation attempts to complete requests
-        while completing RMA operations and while using the lazy synchonization
-        approach.  Change this value if programs fail because they run out of
-        requests or other internal resources
-
-    - category    : CH3
-      name        : CH3_RMA_NREQUEST_NEW_THRESHOLD
-      type        : int
-      default     : 128
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Threshold for the number of new requests since the last attempt to
-        complete pending requests.  Higher values can increase performance,
-        but may run the risk of exceeding the available number of requests
-        or other internal resources.
-
-    - category    : CH3
-      name        : CH3_RMA_LOCK_IMMED
-      type        : boolean
-      default     : false
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Issue a request for the passive target RMA lock immediately.  Default
-        behavior is to defer the lock request until the call to MPI_Win_unlock.
-
-    - category    : CH3
-      name        : CH3_RMA_MERGE_LOCK_OP_UNLOCK
-      type        : boolean
-      default     : true
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Enable/disable an optimization that merges lock, op, and unlock
-        messages, for single-operation passive target epochs.
-
-    - category    : CH3
-      name        : CH3_NOLOCAL
-      alt-env     :
-                    - CH3_NO_LOCAL
-      type        : boolean
-      default     : false
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If true, force all processes to operate as though all processes
-        are located on another node.  For example, this disables shared
-        memory communication hierarchical collectives.
-
-    - category    : CH3
-      name        : CH3_ODD_EVEN_CLIQUES
-      alt-env     :
-                    - CH3_EVEN_ODD_CLIQUES
-      type        : boolean
-      default     : false
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If true, odd procs on a node are seen as local to each other, and even
-        procs on a node are seen as local to each other.  Used for debugging on
-        a single machine.
-
-    - category    : CH3
-      name        : CH3_INTERFACE_HOSTNAME
-      alt-env     :
-                    - INTERFACE_HOSTNAME
-      type        : string
-      defaultliteral : NULL
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If non-NULL, this cvar specifies the IP address that
-        other processes should use when connecting to this process.
-        This cvar is mutually exclusive with the
-        MPIR_CVAR_CH3_NETWORK_IFACE cvar and it is an error to set them
-        both.
-
-    - category    : CH3
-      name        : CH3_EAGER_MAX_MSG_SIZE
-      type        : int
-      default     : 131072
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        This cvar controls the message size at which CH3 switches
-        from eager to rendezvous mode.
-
-    - category    : CH3
-      name        : CH3_PORT_RANGE
-      alt-env     :
-                    - PORTRANGE
-                    - PORT_RANGE
-      type        : range
-      default     : "0:0"
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        The MPIR_CVAR_CH3_PORT_RANGE environment variable allows you to
-        specify the range of TCP ports to be used by the process
-        manager and the MPICH library. The format of this variable is
-        <low>:<high>.  To specify any available port, use 0:0.
-
-    ##############################################################
-    # nemesis cvars
-    - category    : NEMESIS
-      name        : NEMESIS_POLLS_BEFORE_YIELD
-      type        : int
-      default     : 1000
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        When MPICH is in a busy waiting loop, it will periodically
-        call a function to yield the processor.  This cvar sets
-        the number of loops before the yield function is called.  A
-        value of 0 disables yielding.
-
-    - category    : NEMESIS
-      name        : NEMESIS_LMT_DMA_THRESHOLD
-      type        : int
-      default     : 2097152
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Messages larger than this size will use the "dma" (knem)
-        intranode LMT implementation, if it is enabled and available.
-
-    - category    : NEMESIS
-      name        : NEMESIS_NETMOD
-      type        : string
-      default     : ""
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If non-empty, this cvar specifies which network module
-        should be used for communication.
-
-    - category    : NEMESIS
-      name        : NEMESIS_SHM_EAGER_MAX_SZ
-      type        : int
-      default     : -1
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        This cvar controls the message size at which Nemesis
-        switches from eager to rendezvous mode for shared memory.
-        If this cvar is set to -1, then Nemesis will choose
-        an appropriate value.
-
-    - category    : NEMESIS
-      name        : NEMESIS_SHM_READY_EAGER_MAX_SZ
-      type        : int
-      default     : -2
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        This cvar controls the message size at which Nemesis
-        switches from eager to rendezvous mode for ready-send
-        messages.  If this cvar is set to -1, then ready messages
-        will always be sent eagerly.  If this cvar is set to -2,
-        then Nemesis will choose an appropriate value.
-
-    - category    : NEMESIS
-      name        : NEMESIS_ENABLE_CKPOINT
-      type        : boolean
-      default     : false
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If true, enables checkpointing support and returns an error if
-        checkpointing library cannot be initialized.
-
-    ##############################################################
-    # nemesis TCP cvars
-    - category    : NEMESIS
-      name        : NEMESIS_TCP_NETWORK_IFACE
-      alt-env     :
-                    - NETWORK_IFACE
-      type        : string
-      defaultliteral : NULL
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If non-NULL, this cvar specifies which pseudo-ethernet
-        interface the tcp netmod should use (e.g., "eth1", "ib0").
-        Note, this is a Linux-specific cvar.
-        This cvar is mutually exclusive with the
-        MPIR_CVAR_CH3_INTERFACE_HOSTNAME cvar and it is an error to set
-        them both.
-
-    - category    : NEMESIS
-      name        : NEMESIS_TCP_HOST_LOOKUP_RETRIES
-      type        : int
-      default     : 10
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        This cvar controls the number of times to retry the
-        gethostbyname() function before giving up.
-
-    ##############################################################
-    # nemesis portals cvars
-    - category    : NEMESIS
-      name        : NEMESIS_PORTALS_COMM_OVERRIDES
-      type        : boolean
-      default     : true
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        If set to false, communication override functionality will be
-        disabled for netmods that provide the override feature.
-        # Note the netmod must implement this functionality by not
-        # setting the comm_ops table in any VC.
-
-    ##############################################################
-    # process manager cvars
-    - category    : PROCESS_MANAGER
-      name        : NAMESERV_FILE_PUBDIR
-      alt-env     :
-                    - NAMEPUB_DIR
-      type        : string
-      defaultliteral : NULL
-      class       : none
-      verbosity   : MPI_T_VERBOSITY_USER_BASIC
-      scope       : MPI_T_SCOPE_ALL_EQ
-      description : >-
-        Sets the directory to use for MPI service publishing in the
-        file nameserv implementation.  Allows the user to override
-        where the publish and lookup information is placed for
-        connect/accept based applications.
-
-...
-
-# Local Variables:
-# mode: conf-colon
-# indent-tabs-mode: nil
-# End:

-----------------------------------------------------------------------

Summary of changes:
 autogen.sh                                         |   10 +-
 maint/Makefile.mk                                  |    3 +-
 maint/{errmsgdirs => cvardirs}                     |    0
 maint/extractcvars                                 |  609 ++++++++++++++++
 maint/gencvars                                     |  563 --------------
 src/include/Makefile.mk                            |    4 +-
 src/include/mpiutil.h                              |   20 +
 src/mpi/coll/allgather.c                           |   29 +
 src/mpi/coll/allgatherv.c                          |   18 +
 src/mpi/coll/allreduce.c                           |   49 ++
 src/mpi/coll/alltoall.c                            |   46 ++
 src/mpi/coll/barrier.c                             |   16 +
 src/mpi/coll/bcast.c                               |   86 +++
 src/mpi/coll/gather.c                              |   29 +
 src/mpi/coll/gatherv.c                             |   22 +-
 src/mpi/coll/helper_fns.c                          |   26 +
 src/mpi/coll/red_scat.c                            |   18 +
 src/mpi/coll/reduce.c                              |   40 +
 src/mpi/coll/scatter.c                             |   18 +
 src/mpi/comm/comm_split.c                          |   21 +
 src/mpi/comm/commutil.c                            |   21 +
 src/mpi/debugger/dbginit.c                         |   29 +-
 src/mpi/errhan/errutil.c                           |   32 +
 src/mpi/init/finalize.c                            |   22 +
 src/mpi/init/init.c                                |   41 +
 src/mpi/init/initthread.c                          |   37 +
 .../ch3/channels/nemesis/netmod/tcp/tcp_init.c     |   63 ++
 src/mpid/ch3/channels/nemesis/src/mpid_nem_ckpt.c  |   17 +
 src/mpid/ch3/channels/nemesis/src/mpid_nem_init.c  |   38 +
 .../ch3/channels/nemesis/src/mpid_nem_lmt_dma.c    |   18 +
 .../ch3/channels/nemesis/src/mpid_nem_network.c    |   18 +
 src/mpid/ch3/src/ch3u_rma_sync.c                   |   69 ++
 src/mpid/ch3/src/mpid_vc.c                         |   43 ++
 src/nameserv/file/file_nameserv.c                  |   25 +
 src/util/cvar/Makefile.mk                          |    6 +-
 src/util/cvar/cvars.yml                            |  770 --------------------
 src/util/mem/handlemem.c                           |   27 +
 37 files changed, 1555 insertions(+), 1348 deletions(-)
 copy maint/{errmsgdirs => cvardirs} (100%)
 create mode 100755 maint/extractcvars
 delete mode 100755 maint/gencvars
 delete mode 100644 src/util/cvar/cvars.yml


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list