[mpich-commits] [mpich] MPICH primary repository branch, master, updated. v3.2a2-92-g64f6075

Service Account noreply at mpich.org
Tue Jan 6 14:03:35 CST 2015


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  64f60754dc48835e8f049e623f6aebf699d44f7a (commit)
       via  cca5a3996d7077e93648a467406fce7c1bacdc28 (commit)
       via  05b3e06fdc94021fac82ff3abe35c7a2fb17d274 (commit)
       via  ef2465bc5201630f41f3c1d230aa01bc73e0e3dc (commit)
       via  b6323b0f69290069329ee278c1cf7b4f257460dc (commit)
      from  b32189fc43f52312625648e9c1638d12a82b2bce (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/64f60754dc48835e8f049e623f6aebf699d44f7a

commit 64f60754dc48835e8f049e623f6aebf699d44f7a
Author: William Gropp <wgropp at illinois.edu>
Date:   Thu Dec 18 10:41:11 2014 -0600

    Add timelimit option
    
    Adds a way to pass a timelimit argument to the run command, as long
    as the timelimit is in seconds.  This is enough for some of the MPICH
    versions of mpiexec and for recent versions of the Cray aprun command.
    
    Signed-off-by: Wesley Bland <wbland at anl.gov>

diff --git a/test/mpi/runtests.in b/test/mpi/runtests.in
index 3edc028..a6d05f3 100644
--- a/test/mpi/runtests.in
+++ b/test/mpi/runtests.in
@@ -49,6 +49,9 @@ $mpiexec = "@MPIEXEC@";    # Name of mpiexec program (including path, if necessa
 # "-ppn %d"
 $ppnArg  = "";
 $ppnMax  = -1;
+# timelimitArg is the argument to use to mpiexec to set the timelimit
+# in seconds.  The format is "string%d", e.g., "-t %d" for Cray aprun
+$timelimitArg="";
 #
 $testIsStrict = "@MPI_IS_STRICT@";
 $MPIhasMPIX   = "@MPI_HAS_MPIX@";
@@ -160,6 +163,9 @@ if (defined($ENV{'MPITEST_PPNARG'})) {
 if (defined($ENV{'MPITEST_PPNMAX'})) {
     $ppnMax = $ENV{'MPITEST_PPNMAX'};
 }
+if (defined($ENV{'MPITEST_TIMELIMITARG'})) {
+    $timelimitArg = $ENV{'MPITEST_TIMELIMITARG'};
+}
 
 #---------------------------------------------------------------------------
 # Process arguments and override any defaults
@@ -174,6 +180,7 @@ foreach $_ (@ARGV) {
     elsif (/--?maxnp=(\d+)/) { $np_max = $1; }
     elsif (/--?ppn=(\d+)/)  { $ppnMax = $1; }
     elsif (/--?ppnarg=(.*)/) { $ppnArg = $1; }
+    elsif (/--?timelimitarg=(.*)/) { $timelimitArg = $1; }
     elsif (/--?tests=(.*)/) { $listfiles = $1; }
     elsif (/--?srcdir=(.*)/) { $srcdir = $1; }
     elsif (/--?verbose/) { $verbose = 1; }
@@ -245,6 +252,7 @@ foreach $_ (@ARGV) {
 	print STDERR "runtests [-tests=testfile] [-np=nprocesses] \
         [-maxnp=max-nprocesses] [-srcdir=location-of-tests] \
         [-ppn=max-proc-per-node] [-ppnarg=string] \
+        [-timelimitarg=string] \
         [-xmlfile=filename ] [-tapfile=filename ] \
         [-junitfile=filename ] [-noxmlclose] \
         [-verbose] [-showprogress] [-debug] [-batch]\n";
@@ -689,6 +697,13 @@ sub RunMPIProgram {
 	$extraArgs .= " " . $ppnargs;
     }
 
+    # Handle the timelimit option.
+    if ($timelimitArg ne "" && $timeout> 0) {
+        $tlargs = "";
+	$tlargs = $timelimitArg;
+	$tlargs =~ s/\%d/$timeout/;
+	$extraArgs .= " " . $tlargs;
+    }
 
     # Run the optional setup routine. For example, the timeout tests could
     # be set to a shorter timeout.
@@ -831,6 +846,15 @@ sub AddMPIProgram {
 	$extraArgs .= " " . $ppnargs;
     }
 
+    # Handle the timelimit option.
+    if ($timelimitArg ne "" && $timeout> 0) {
+        $tlargs = "";
+	$tlargs = $timelimitArg;
+	$tlargs =~ s/\%d/$timeout/;
+	$extraArgs .= " " . $tlargs;
+    }
+
+
     print STDOUT "Env includes $progEnv\n" if $verbose;
     print STDOUT "$mpiexec $np_arg $np $extraArgs $program_wrapper ./$programname $progArgs\n" if $verbose;
     print STDOUT "." if $showProgress;

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

commit cca5a3996d7077e93648a467406fce7c1bacdc28
Author: William Gropp <wgropp at illinois.edu>
Date:   Thu Dec 11 11:51:05 2014 -0800

    Correct testsuite dist target support
    
    Signed-off-by: Wesley Bland <wbland at anl.gov>

diff --git a/test/mpi/ckpoint/Makefile.am b/test/mpi/ckpoint/Makefile.am
index 456e04d..d897d14 100644
--- a/test/mpi/ckpoint/Makefile.am
+++ b/test/mpi/ckpoint/Makefile.am
@@ -7,6 +7,8 @@
 
 include $(top_srcdir)/Makefile.mtest
 
+EXTRA_DIST = testlist
+
 ## for all programs that are just built from the single corresponding source
 ## file, we don't need per-target _SOURCES rules, automake will infer them
 ## correctly
diff --git a/test/mpi/cxx/topo/Makefile.am b/test/mpi/cxx/topo/Makefile.am
index 7df4fd8..da38cda 100644
--- a/test/mpi/cxx/topo/Makefile.am
+++ b/test/mpi/cxx/topo/Makefile.am
@@ -7,7 +7,7 @@
 
 include $(top_srcdir)/Makefile_cxx.mtest
 
-EXTRA_DIST = testlist distgraphcxx.cxx
+EXTRA_DIST = testlist.in distgraphcxx.cxx
 
 # avoid having to write many "foo_SOURCES = foo.cxx" lines because
 # automake is too limited to figure this out for itself
diff --git a/test/mpi/datatype/Makefile.am b/test/mpi/datatype/Makefile.am
index 2840393..ee6d9c1 100644
--- a/test/mpi/datatype/Makefile.am
+++ b/test/mpi/datatype/Makefile.am
@@ -7,7 +7,7 @@
 
 include $(top_srcdir)/Makefile.mtest
 
-EXTRA_DIST = testlist
+EXTRA_DIST = testlist.in
 
 ## For some reason, these tests were missing from both the simplemakefile and
 ## the testlist.  Leaving them disabled for now.
diff --git a/test/mpi/errors/Makefile.am b/test/mpi/errors/Makefile.am
index 760e420..8500b36 100644
--- a/test/mpi/errors/Makefile.am
+++ b/test/mpi/errors/Makefile.am
@@ -7,6 +7,8 @@
 
 include $(top_srcdir)/Makefile.mtest
 
+EXTRA_DIST = testlist.in
+
 # FIXME should "datatype" be included in this list?  It was not in the
 # simplemake version for some reason and is also missing from the testlist
 # file
diff --git a/test/mpi/errors/f77/Makefile.am b/test/mpi/errors/f77/Makefile.am
index 1cb612a..39cca6c 100644
--- a/test/mpi/errors/f77/Makefile.am
+++ b/test/mpi/errors/f77/Makefile.am
@@ -7,7 +7,7 @@
 
 include $(top_srcdir)/Makefile_f77.mtest
 
-EXTRA_DIST = testlist
+EXTRA_DIST = testlist.in
 
 SUBDIRS = @iodir@
 DIST_SUBDIRS = io
diff --git a/test/mpi/errors/f90/Makefile.am b/test/mpi/errors/f90/Makefile.am
index 6824021..ab3aeed 100644
--- a/test/mpi/errors/f90/Makefile.am
+++ b/test/mpi/errors/f90/Makefile.am
@@ -7,7 +7,7 @@
 
 include $(top_srcdir)/Makefile_f90.mtest
 
-EXTRA_DIST = testlist
+EXTRA_DIST = testlist.in
 
 SUBDIRS = @iodir@
 DIST_SUBDIRS = io
diff --git a/test/mpi/f08/Makefile.am b/test/mpi/f08/Makefile.am
index 64d0fc8..40e7366 100644
--- a/test/mpi/f08/Makefile.am
+++ b/test/mpi/f08/Makefile.am
@@ -7,5 +7,7 @@
 
 include $(top_srcdir)/Makefile_f08.mtest
 
+EXTRA_DIST = testlist
+
 SUBDIRS = attr coll comm datatype ext info init io misc profile pt2pt rma spawn subarray timer topo
-DIST_SUBDIRS = $(SUBDIRS)
+DIST_SUBDIRS = $(SUBDIRS) util
diff --git a/test/mpi/f08/coll/Makefile.am b/test/mpi/f08/coll/Makefile.am
index 46ac1a1..1b7d0b1 100644
--- a/test/mpi/f08/coll/Makefile.am
+++ b/test/mpi/f08/coll/Makefile.am
@@ -7,6 +7,8 @@
 
 include $(top_srcdir)/Makefile_f08.mtest
 
+EXTRA_DIST = testlist
+
 # avoid having to write many "foo_SOURCES = foo.f90" lines
 AM_DEFAULT_SOURCE_EXT = .f90
 
diff --git a/test/mpi/f08/datatype/Makefile.am b/test/mpi/f08/datatype/Makefile.am
index 2de5301..8ab9147 100644
--- a/test/mpi/f08/datatype/Makefile.am
+++ b/test/mpi/f08/datatype/Makefile.am
@@ -9,6 +9,8 @@
 
 include $(top_srcdir)/Makefile_f08.mtest
 
+EXTRA_DIST = testlist
+
 # avoid having to write many "foo_SOURCES = foo.f90" lines
 AM_DEFAULT_SOURCE_EXT = .f90
 
diff --git a/test/mpi/f08/ext/Makefile.am b/test/mpi/f08/ext/Makefile.am
index 426f9ed..7beb9bd 100644
--- a/test/mpi/f08/ext/Makefile.am
+++ b/test/mpi/f08/ext/Makefile.am
@@ -7,7 +7,7 @@
 
 include $(top_srcdir)/Makefile_f08.mtest
 
-EXTRA_DIST = testlist.in
+EXTRA_DIST = testlist
 
 # allocmemf is an "extra" program because it requires a Fortran extension
 EXTRA_PROGRAMS = allocmemf90
diff --git a/test/mpi/f08/pt2pt/Makefile.am b/test/mpi/f08/pt2pt/Makefile.am
index 4df3e41..eb0e5dc 100644
--- a/test/mpi/f08/pt2pt/Makefile.am
+++ b/test/mpi/f08/pt2pt/Makefile.am
@@ -7,6 +7,8 @@
 
 include $(top_srcdir)/Makefile_f08.mtest
 
+EXTRA_DIST = testlist
+
 # avoid having to write many "foo_SOURCES = foo.f90" lines
 AM_DEFAULT_SOURCE_EXT = .f90
 
diff --git a/test/mpi/f08/rma/Makefile.am b/test/mpi/f08/rma/Makefile.am
index 4c7a3eb..7b3e440 100644
--- a/test/mpi/f08/rma/Makefile.am
+++ b/test/mpi/f08/rma/Makefile.am
@@ -9,7 +9,7 @@
 
 include $(top_srcdir)/Makefile_f08.mtest
 
-EXTRA_DIST = testlist
+EXTRA_DIST = testlist.in
 
 # avoid having to write many "foo_SOURCES = foo.f90" lines
 AM_DEFAULT_SOURCE_EXT = .f90
diff --git a/test/mpi/f77/rma/Makefile.am b/test/mpi/f77/rma/Makefile.am
index 06acf65..491ea21 100644
--- a/test/mpi/f77/rma/Makefile.am
+++ b/test/mpi/f77/rma/Makefile.am
@@ -7,7 +7,7 @@
 
 include $(top_srcdir)/Makefile_f77.mtest
 
-EXTRA_DIST = testlist
+EXTRA_DIST = testlist.in
 
 # avoid having to write many "foo_SOURCES = foo.f" lines
 AM_DEFAULT_SOURCE_EXT = .f
diff --git a/test/mpi/f77/spawn/Makefile.am b/test/mpi/f77/spawn/Makefile.am
index 30f0302..36e6119 100644
--- a/test/mpi/f77/spawn/Makefile.am
+++ b/test/mpi/f77/spawn/Makefile.am
@@ -7,7 +7,7 @@
 
 include $(top_srcdir)/Makefile_f77.mtest
 
-EXTRA_DIST = testlist
+EXTRA_DIST = testlist.in
 
 # avoid having to write many "foo_SOURCES = foo.f" lines
 AM_DEFAULT_SOURCE_EXT = .f
diff --git a/test/mpi/f90/misc/Makefile.am b/test/mpi/f90/misc/Makefile.am
index 6d87255..600378f 100644
--- a/test/mpi/f90/misc/Makefile.am
+++ b/test/mpi/f90/misc/Makefile.am
@@ -9,6 +9,8 @@ include $(top_srcdir)/Makefile_f90.mtest
 
 EXTRA_DIST = testlist
 
+EXTRA_DIST += testlist.ap
+
 noinst_PROGRAMS = sizeof2
 sizeof2_SOURCES = sizeof2.f90
 
diff --git a/test/mpi/ft/Makefile.am b/test/mpi/ft/Makefile.am
index 6440f30..3aa31ed 100644
--- a/test/mpi/ft/Makefile.am
+++ b/test/mpi/ft/Makefile.am
@@ -7,6 +7,8 @@
 
 include $(top_srcdir)/Makefile.mtest
 
+EXTRA_DIST = testlist
+
 ## for all programs that are just built from the single corresponding source
 ## file, we don't need per-target _SOURCES rules, automake will infer them
 ## correctly
diff --git a/test/mpi/io/Makefile.am b/test/mpi/io/Makefile.am
index f1932cd..abbfce5 100644
--- a/test/mpi/io/Makefile.am
+++ b/test/mpi/io/Makefile.am
@@ -7,7 +7,7 @@
 
 include $(top_srcdir)/Makefile.mtest
 
-EXTRA_DIST = testlist
+EXTRA_DIST = testlist.in
 
 ## for all programs that are just built from the single corresponding source
 ## file, we don't need per-target _SOURCES rules, automake will infer them
diff --git a/test/mpi/rma/Makefile.am b/test/mpi/rma/Makefile.am
index 1312d11..e2a3eb3 100644
--- a/test/mpi/rma/Makefile.am
+++ b/test/mpi/rma/Makefile.am
@@ -7,7 +7,7 @@
 
 include $(top_srcdir)/Makefile.mtest
 
-EXTRA_DIST = testlist
+EXTRA_DIST = testlist.in
 
 ## for all programs that are just built from the single corresponding source
 ## file, we don't need per-target _SOURCES rules, automake will infer them
diff --git a/test/mpi/util/Makefile.am b/test/mpi/util/Makefile.am
index 9f33fdd..a31cc70 100644
--- a/test/mpi/util/Makefile.am
+++ b/test/mpi/util/Makefile.am
@@ -2,6 +2,7 @@
 AM_CPPFLAGS = -I${srcdir}/../include -I../include
 
 mtest.$(OBJEXT): mtest.c
+mtest_datatype.$(OBJEXT): mtest_datatype.c mtest_datatype.h
 dtypes.$(OBJEXT): dtypes.c
 nbc_pmpi_adapter.$(OBJEXT): nbc_pmpi_adapter.c
 all-local: mtest.$(OBJEXT) dtypes.$(OBJEXT) nbc_pmpi_adapter.$(OBJEXT)
@@ -10,5 +11,9 @@ EXTRA_PROGRAMS = mtestcheck dtypes
 mtestcheck_SOURCES = mtestcheck.c mtest.c
 
 # exploiting the NBC PMPI adapter is still very much a manual process...
-EXTRA_DIST = nbc_pmpi_adapter.c
+# mtest_datatype.c and mtest_datatype_gen.c also needed
+# FIXME: mtest_datatype.h belongs with the other include files, in
+# ../include
+EXTRA_DIST = nbc_pmpi_adapter.c mtest_datatype.c mtest_datatype.h \
+	mtest_datatype_gen.c
 

http://git.mpich.org/mpich.git/commitdiff/05b3e06fdc94021fac82ff3abe35c7a2fb17d274

commit 05b3e06fdc94021fac82ff3abe35c7a2fb17d274
Author: William Gropp <wgropp at illinois.edu>
Date:   Thu Dec 11 11:50:31 2014 -0800

    Update test suite README
    
    Signed-off-by: Wesley Bland <wbland at anl.gov>

diff --git a/test/mpi/README b/test/mpi/README
index 7b81d59..fa8baaf 100644
--- a/test/mpi/README
+++ b/test/mpi/README
@@ -1,7 +1,7 @@
 MPICH Test Suite
 
 This test suite is a *supplement* to other test suites, including the
-original MPICH testsuite, the Intel testsuite, and the IBM MPI test suite 
+original MPICH testsuite, the Intel testsuite, and the IBM MPI test suite
 (or test suites derived from that test, including the MPI C++ tests).
 
 Building the Test Suite
@@ -12,7 +12,7 @@ automatically.  In some cases, it will need some help.  For example:
 For IBM MPI, where the compilation commands are not mpicc and mpif77 etc.:
 
 ./configure CC=xlc MPICC=mpcc F77=xlf MPIF77=mpxlf CXX=xlC \
-                       MPICXX="mpCC -cpp" F90=xlf90 MPIF90=mpxlf90 \
+                       MPICXX="mpCC -cpp" FC=xlf90 MPIFC=mpxlf90 \
 		       --disable-spawn \
 		       --enable-strictmpi
 
@@ -82,13 +82,25 @@ to checktests:
 
 cd btest && ../checktests --ignorebogus
 
+See "More control over running tests" to see how to control how many
+processes per node on used.  For example, on a Cray XE-6, this command
+line to runtests can be used:
+
+  runtests -batch -tests=testlist -ppnarg="-N %d" -ppn=2 -showprogress \
+           -mpiexec=aprun
+
+This runs at most 2 processes per node.  Note that this can take a long
+time to execute because it builds all of the executables required for the
+tests (over 800 of them!).  The "-showprogress" flag lets you know that
+something is happening, but is not necessary.
+
 Controlling the Tests that are Run
 ==================================
-The tests are actually built and run by the script "runtests".  This script 
+The tests are actually built and run by the script "runtests".  This script
 can be given a file that contains a list of the tests to run.  This file has
 two primary types of entries:
 
-    directories:  Enter directory and look for the file "testlist".  
+    directories:  Enter directory and look for the file "testlist".
                   Recursively run the contents of that file
     program names: Build and run that program
 
@@ -153,3 +165,41 @@ resultTest=proc : This is used to change the way in which the success or
                   in fact handled.
 
 
+More control over running tests
+===============================
+
+You can provide a "processes per node" argument to the run command (typically
+mpiexec) with either options to "runtests" or environment variables.
+The two values are
+
+-ppnarg=string or MPITEST_PPNARG
+   The string used to specify the number of processes per node.  The number
+   of processes to use will be substituted for the %d in the string.  For
+   example,
+
+   export MPITEST_PPNARG="-ppn %d"
+
+-ppn=n or MPITEST_PPNMAX
+   The maximum number of processes per node.  For example
+
+   runtests ... -ppn=2
+
+   This allows the runtests script to ensure that the value of the
+   processes per node argument does not exceed the total number of processes;
+   some run commands (e.g., aprun on Cray) require that the number of
+   processes per node be no greater than the total number of processes.
+
+Note that for most systems it will be important to run the tests
+multiple times, using this option to ensure that the tests that
+involve more than one process are run each of the following cases:
+1) Multiple MPI processes per chip (likely using shared memory to
+communicate between processes)
+2) MPI processes on separate chips within the same node (also likely
+using shared memory between processes, but may use a different
+approach to handle the NUMA nature of this case)
+3) MPI processes on separate nodes (likely using the best available
+interconnect).
+Note, this depends on the nature of the MPI implementation; these
+options make it easier to run the necessary cases.  If you run only
+the first case, which is often the default case, you may not
+effectively test the MPI implementation.

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

commit ef2465bc5201630f41f3c1d230aa01bc73e0e3dc
Author: William Gropp <wgropp at illinois.edu>
Date:   Thu Dec 11 11:50:00 2014 -0800

    Add support for procs-per-node to testsuite runs
    
    Signed-off-by: Wesley Bland <wbland at anl.gov>

diff --git a/test/mpi/runtests.in b/test/mpi/runtests.in
index ba8dd6a..3edc028 100644
--- a/test/mpi/runtests.in
+++ b/test/mpi/runtests.in
@@ -44,6 +44,12 @@ use File::Copy qw(move);
 $MPIMajorVersion = "@MPI_VERSION@";
 $MPIMinorVersion = "@MPI_SUBVERSION@";
 $mpiexec = "@MPIEXEC@";    # Name of mpiexec program (including path, if necessary)
+# ppnMax is the maximum number of processes per node.  -1 means ignore.
+# ppnArg is the argument to use to mpiexec - format is "string%d"; e.g.,
+# "-ppn %d"
+$ppnArg  = "";
+$ppnMax  = -1;
+#
 $testIsStrict = "@MPI_IS_STRICT@";
 $MPIhasMPIX   = "@MPI_HAS_MPIX@";
 $runxfail     = "@RUN_XFAIL@";
@@ -147,6 +153,13 @@ if (defined($ENV{'MPITEST_BATCH'})) {
 if (defined($ENV{'MPITEST_BATCHDIR'})) {
     $batrundir = $ENV{'MPITEST_BATCHDIR'};
 }
+# PPN support
+if (defined($ENV{'MPITEST_PPNARG'})) {
+    $ppnArg = $ENV{'MPITEST_PPNARG'};
+}
+if (defined($ENV{'MPITEST_PPNMAX'})) {
+    $ppnMax = $ENV{'MPITEST_PPNMAX'};
+}
 
 #---------------------------------------------------------------------------
 # Process arguments and override any defaults
@@ -157,8 +170,10 @@ foreach $_ (@ARGV) {
 	# we don't want to bother to try and find it.
 	$mpiexec = $1; 
     }
-    elsif (/--?np=(.*)/)   { $np_default = $1; }
-    elsif (/--?maxnp=(.*)/) { $np_max = $1; }
+    elsif (/--?np=(\d+)/)   { $np_default = $1; }
+    elsif (/--?maxnp=(\d+)/) { $np_max = $1; }
+    elsif (/--?ppn=(\d+)/)  { $ppnMax = $1; }
+    elsif (/--?ppnarg=(.*)/) { $ppnArg = $1; }
     elsif (/--?tests=(.*)/) { $listfiles = $1; }
     elsif (/--?srcdir=(.*)/) { $srcdir = $1; }
     elsif (/--?verbose/) { $verbose = 1; }
@@ -229,6 +244,7 @@ foreach $_ (@ARGV) {
 	print STDERR "Unrecognized argument $_\n";
 	print STDERR "runtests [-tests=testfile] [-np=nprocesses] \
         [-maxnp=max-nprocesses] [-srcdir=location-of-tests] \
+        [-ppn=max-proc-per-node] [-ppnarg=string] \
         [-xmlfile=filename ] [-tapfile=filename ] \
         [-junitfile=filename ] [-noxmlclose] \
         [-verbose] [-showprogress] [-debug] [-batch]\n";
@@ -648,6 +664,7 @@ sub RunMPIProgram {
     my $found_error   = 0;
     my $found_noerror = 0;
     my $inline = "";
+    my $extraArgs = "";
 
     &RunPreMsg( $programname, $np, $curdir );
 
@@ -659,14 +676,27 @@ sub RunMPIProgram {
 	$timeout = $timeLimit;
     }
     $ENV{"MPIEXEC_TIMEOUT"} = $timeout;
-    
+
+    # Handle the ppn (processes per node) option.
+    $ppnargs = "";
+    if ($ppnArg ne "" && $ppnMax > 0) {
+	$ppnargs = $ppnArg;
+	$nn = $ppnMax;
+	# Some systems require setting the number of processes per node
+	# no greater than the total number of processes (e.g., aprun on Cray)
+	if ($nn > $np) { $nn = $np; }
+	$ppnargs =~ s/\%d/$nn/;
+	$extraArgs .= " " . $ppnargs;
+    }
+
+
     # Run the optional setup routine. For example, the timeout tests could
     # be set to a shorter timeout.
     if ($InitForTest ne "") {
 	&$InitForTest();
     }
     print STDOUT "Env includes $progEnv\n" if $verbose;
-    print STDOUT "$mpiexec $np_arg $np $program_wrapper ./$programname $progArgs\n" if $verbose;
+    print STDOUT "$mpiexec $np_arg $np $extraArgs $mpiexecArgs $program_wrapper ./$programname $progArgs\n" if $verbose;
     print STDOUT "." if $showProgress;
     # Save and restore the environment if necessary before running mpiexec.
     if ($progEnv ne "") {
@@ -680,7 +710,7 @@ sub RunMPIProgram {
 	    }
 	}
     }
-    open ( MPIOUT, "$mpiexec $np_arg $np $mpiexecArgs $program_wrapper ./$programname $progArgs 2>&1 |" ) ||
+    open ( MPIOUT, "$mpiexec $np_arg $np $extraArgs $mpiexecArgs $program_wrapper ./$programname $progArgs 2>&1 |" ) ||
 	die "Could not run ./$programname\n";
     if ($progEnv ne "") {
 	%ENV = %saveEnv;
@@ -691,7 +721,7 @@ sub RunMPIProgram {
     }
     else {
 	if ($verbose) {
-	    $inline = "$mpiexec $np_arg $np $program_wrapper ./$programname\n";
+	    $inline = "$mpiexec $np_arg $np $extraArgs $mpiexecArgs $program_wrapper ./$programname\n";
 	}
 	else {
 	    $inline = "";
@@ -789,6 +819,18 @@ sub AddMPIProgram {
 	$extraArgs .= $timeoutArg
     }
 
+    # Handle the ppn (processes per node) option.
+    $ppnargs = "";
+    if ($ppnArg ne "" && $ppnMax > 0) {
+	$ppnargs = $ppnArg;
+	$nn = $ppnMax;
+	# Some systems require setting the number of processes per node
+	# no greater than the total number of processes (e.g., aprun on Cray)
+	if ($nn > $np) { $nn = $np; }
+	$ppnargs =~ s/\%d/$nn/;
+	$extraArgs .= " " . $ppnargs;
+    }
+
     print STDOUT "Env includes $progEnv\n" if $verbose;
     print STDOUT "$mpiexec $np_arg $np $extraArgs $program_wrapper ./$programname $progArgs\n" if $verbose;
     print STDOUT "." if $showProgress;

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

commit b6323b0f69290069329ee278c1cf7b4f257460dc
Author: William Gropp <wgropp at illinois.edu>
Date:   Wed Dec 10 14:42:51 2014 -0800

    Check for endif in f77tof90 to avoid false warning
    
    Signed-off-by: Wesley Bland <wbland at anl.gov>

diff --git a/maint/f77tof90.in b/maint/f77tof90.in
index b6ecccc..340b047 100644
--- a/maint/f77tof90.in
+++ b/maint/f77tof90.in
@@ -332,7 +332,7 @@ sub ConvertMakefile {
         if (not m/^\s*#/) {
             while (m/\b(\w+f)\b/g) {
                 my $word = $1;
-                next if $word eq "if" or $word eq "rf"; # filter out some noise
+                next if $word eq "if" or $word eq "rf" or $word eq "endif"; # filter out some noise
                 if (-e "$indir/${word}.f" or
                     0 == system(qq(grep 'TESTDEFN filename="${word}\\.f"' '$indir/ioharness.defn' >/dev/null 2>&1)))
                 {

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

Summary of changes:
 maint/f77tof90.in                 |    2 +-
 test/mpi/README                   |   58 +++++++++++++++++++++++++--
 test/mpi/ckpoint/Makefile.am      |    2 +
 test/mpi/cxx/topo/Makefile.am     |    2 +-
 test/mpi/datatype/Makefile.am     |    2 +-
 test/mpi/errors/Makefile.am       |    2 +
 test/mpi/errors/f77/Makefile.am   |    2 +-
 test/mpi/errors/f90/Makefile.am   |    2 +-
 test/mpi/f08/Makefile.am          |    4 +-
 test/mpi/f08/coll/Makefile.am     |    2 +
 test/mpi/f08/datatype/Makefile.am |    2 +
 test/mpi/f08/ext/Makefile.am      |    2 +-
 test/mpi/f08/pt2pt/Makefile.am    |    2 +
 test/mpi/f08/rma/Makefile.am      |    2 +-
 test/mpi/f77/rma/Makefile.am      |    2 +-
 test/mpi/f77/spawn/Makefile.am    |    2 +-
 test/mpi/f90/misc/Makefile.am     |    2 +
 test/mpi/ft/Makefile.am           |    2 +
 test/mpi/io/Makefile.am           |    2 +-
 test/mpi/rma/Makefile.am          |    2 +-
 test/mpi/runtests.in              |   78 ++++++++++++++++++++++++++++++++++---
 test/mpi/util/Makefile.am         |    7 +++-
 22 files changed, 160 insertions(+), 23 deletions(-)


hooks/post-receive
-- 
MPICH primary repository


More information about the commits mailing list