]> https://gitweb.dealii.org/ - dealii.git/commitdiff
Workaround OpenMPI problem in mpi_exceptions 3736/head
authorDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Thu, 5 Jan 2017 17:10:03 +0000 (18:10 +0100)
committerDaniel Arndt <daniel.arndt@iwr.uni-heidelberg.de>
Thu, 5 Jan 2017 23:20:47 +0000 (00:20 +0100)
source/base/exceptions.cc
tests/base/mpi_exceptions.mpirun=1.output
tests/base/mpi_exceptions.mpirun=1.output.mpich
tests/base/mpi_exceptions.mpirun=1.output.mpich3-2 [new file with mode: 0644]
tests/base/mpi_exceptions.mpirun=1.output.openmpi1-6-5 [new file with mode: 0644]

index 7f32809772b703ff75c5448d6f437d5a13b37de8..3a795cbb6b2df405f457b702e3c21d0e525b467b 100644 (file)
@@ -357,18 +357,24 @@ namespace StandardExceptions
     error_name[0] = '\0';
     int resulting_length = MPI_MAX_ERROR_STRING;
 
-    // get the string name of the error code by first converting it to an error
-    // class.
-    int error_class = 0;
-    int ierr = MPI_Error_class (error_code, &error_class);
-
-    // Check the output of the error printing functions. If either MPI function
-    // fails we should just print a less descriptive message.
-    bool error_name_known = ierr == MPI_SUCCESS;
-    if (error_name_known)
+    bool error_name_known = false;
+    // workaround for Open MPI 1.6.5 not accepting
+    // MPI_ERR_LASTCODE in MPI_Error_class
+    if (error_code < MPI_ERR_LASTCODE)
       {
-        ierr = MPI_Error_string (error_class, error_name, &resulting_length);
-        error_name_known = error_name_known && (ierr == MPI_SUCCESS);
+        // get the string name of the error code by first converting it to an
+        // error class.
+        int error_class = 0;
+        int ierr = MPI_Error_class (error_code, &error_class);
+        error_name_known = (ierr == MPI_SUCCESS);
+
+        // Check the output of the error printing functions. If either MPI
+        // function fails we should just print a less descriptive message.
+        if (error_name_known)
+          {
+            ierr = MPI_Error_string (error_class, error_name, &resulting_length);
+            error_name_known = error_name_known && (ierr == MPI_SUCCESS);
+          }
       }
 
     out << "deal.II encountered an error while calling an MPI function."
index dcd5592654e361efe4645adc70950c045957b28c..aecd6bbaaa26113d41cd6d056ba99a0915c1596e 100644 (file)
@@ -57,5 +57,5 @@ The description of the error provided by MPI is "MPI_ERR_INTERN: internal error"
 The numerical value of the original error code is 17.
 DEAL::
 deal.II encountered an error while calling an MPI function.
-The description of the error provided by MPI is "MPI_ERR_UNKNOWN: unknown error".
+This error code is not equal to any of the standard MPI error codes.
 The numerical value of the original error code is 92.
index 8da187c17038a0885dd4ce38b791da8e22d6066c..9b369cabaad62191a3ebd057ed14364e90f79970 100644 (file)
@@ -2,60 +2,60 @@
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid buffer pointer".
-The numerical value of the original error code was 1.
+The numerical value of the original error code is 1.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid count".
-The numerical value of the original error code was 2.
+The numerical value of the original error code is 2.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid datatype".
-The numerical value of the original error code was 3.
+The numerical value of the original error code is 3.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid tag".
-The numerical value of the original error code was 4.
+The numerical value of the original error code is 4.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid communicator".
-The numerical value of the original error code was 5.
+The numerical value of the original error code is 5.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid rank".
-The numerical value of the original error code was 6.
+The numerical value of the original error code is 6.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid MPI_Request".
-The numerical value of the original error code was 19.
+The numerical value of the original error code is 19.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid root".
-The numerical value of the original error code was 7.
+The numerical value of the original error code is 7.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid group".
-The numerical value of the original error code was 8.
+The numerical value of the original error code is 8.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid MPI_Op".
-The numerical value of the original error code was 9.
+The numerical value of the original error code is 9.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Invalid topology".
-The numerical value of the original error code was 10.
+The numerical value of the original error code is 10.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Unknown error.  Please file a bug report.".
-The numerical value of the original error code was 13.
+The numerical value of the original error code is 13.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Other MPI error".
-The numerical value of the original error code was 15.
+The numerical value of the original error code is 15.
 DEAL::
 deal.II encountered an error while calling an MPI function.
 The description of the error provided by MPI is "Internal MPI error!".
-The numerical value of the original error code was 16.
+The numerical value of the original error code is 16.
 DEAL::
 deal.II encountered an error while calling an MPI function.
-The description of the error provided by MPI is "Unknown error class".
-The numerical value of the original error code was 1073741823.
+This error code is not equal to any of the standard MPI error codes.
+The numerical value of the original error code is 1073741823.
diff --git a/tests/base/mpi_exceptions.mpirun=1.output.mpich3-2 b/tests/base/mpi_exceptions.mpirun=1.output.mpich3-2
new file mode 100644 (file)
index 0000000..72ae609
--- /dev/null
@@ -0,0 +1,61 @@
+
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid buffer pointer".
+The numerical value of the original error code is 1.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid count".
+The numerical value of the original error code is 2.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid datatype".
+The numerical value of the original error code is 3.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid tag".
+The numerical value of the original error code is 4.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid communicator".
+The numerical value of the original error code is 5.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid rank".
+The numerical value of the original error code is 6.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Request pending due to failure".
+The numerical value of the original error code is 19.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid root".
+The numerical value of the original error code is 7.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid group".
+The numerical value of the original error code is 8.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid MPI_Op".
+The numerical value of the original error code is 9.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Invalid topology".
+The numerical value of the original error code is 10.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Unknown error.  Please file a bug report.".
+The numerical value of the original error code is 13.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Other MPI error".
+The numerical value of the original error code is 15.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "Internal MPI error!".
+The numerical value of the original error code is 16.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+This error code is not equal to any of the standard MPI error codes.
+The numerical value of the original error code is 1073741823.
diff --git a/tests/base/mpi_exceptions.mpirun=1.output.openmpi1-6-5 b/tests/base/mpi_exceptions.mpirun=1.output.openmpi1-6-5
new file mode 100644 (file)
index 0000000..0fa56b7
--- /dev/null
@@ -0,0 +1,61 @@
+
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_BUFFER: invalid buffer pointer".
+The numerical value of the original error code is 1.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_COUNT: invalid count argument".
+The numerical value of the original error code is 2.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_TYPE: invalid datatype".
+The numerical value of the original error code is 3.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_TAG: invalid tag".
+The numerical value of the original error code is 4.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_COMM: invalid communicator".
+The numerical value of the original error code is 5.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_RANK: invalid rank".
+The numerical value of the original error code is 6.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_REQUEST: invalid request".
+The numerical value of the original error code is 7.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_ROOT: invalid root".
+The numerical value of the original error code is 8.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_GROUP: invalid group".
+The numerical value of the original error code is 9.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_OP: invalid reduce operation".
+The numerical value of the original error code is 10.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_TOPOLOGY: invalid communicator topology".
+The numerical value of the original error code is 11.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_UNKNOWN: unknown error".
+The numerical value of the original error code is 14.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_OTHER: known error not in list".
+The numerical value of the original error code is 16.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+The description of the error provided by MPI is "MPI_ERR_INTERN: internal error".
+The numerical value of the original error code is 17.
+DEAL::
+deal.II encountered an error while calling an MPI function.
+This error code is not equal to any of the standard MPI error codes.
+The numerical value of the original error code is 54.

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Douglas Adams


Typeset in Trocchi and Trocchi Bold Sans Serif.