test system ignores nprocs unless MPI is found

Issue #1601 closed
Roland Haas created an issue

the test system script RunTestUtils.pl checks if the configuration is MPI enabled by looking into some build files (see function ParseExtras and its use of file $config/bindings/Configuration/Capabilities/cctki_MPI.h).

However in line 549

  if ($have_mpi)
  {
    $config_data->{'NPROCS'} =
      &defprompt('  Enter number of processors ($nprocs)', $nprocs);
  }
  else
  {
      print "No MPI available\n";
      if ($nprocs > 1)
      {
          die("Cannot run on $nprocs processes without an MPI implementation\n");
      }
  }

it only sets $config_data->{NPROCS} if MPI was found and leaves it undefined otherwise. This seems to confuse later parts of the script which try to decide which tests to run and one gets eg

  Summary for configuration sim

    Time                     -> Mon Apr 28 21:35:38 PDT 2014
    Host                     -> nid27637
    Processes                ->
    User                     -> rhaas

    Total available tests    -> 287
    Unrunnable tests         -> 133
    Runnable tests           -> 154
    Total number of thorns   -> 209
    Number of tested thorns  -> 52
    Number of tests passed   -> 149
    Number passed only to
               set tolerance -> 95
    Number failed            -> 5

and

  Tests missed for different number of processors required:

    checkpointML-EE in AHFinderDirect
      (EinsteinAnalysis/AHFinderDirect/test/checkpointML-EE.par)
      Requires 1 processors

    test_cc_o5 in CarpetProlongateTest
      (CarpetExtra/CarpetProlongateTest/test/test_cc_o5.par)
      Requires 2 processors

I suggest setting congif_data->{NPROCS} to 1 if no MPI is found.

Note that this really only happens if one manages to compile without MPI (which implies no Carpet) or (as in my case) uses simfactory (with 1 process) but has rsync filter rules that prevent it from copying all of configs/sim to the simulation base dir.

Keyword:

Comments (4)

  1. Log in to comment