On Fri, 14 Sep 2012, Cody Permann wrote:

Well, it turns out that this issue is rather difficult to find, but
super easy to replicate!  I'm using introduction_ex1 to locate the
problem.  Right now we can't even read a nemesis mesh with the
current head in pure libMesh code.  In optimized mode - it may hang
your machine as it gobbles up an insane amount of memory very
quickly, in debug mode.  It trips this assert:
Assertion `par_max_node_id == mesh.max_node_id()' failed.

So here's a sad thing: I've been putting off replicating this for a
month, partly because I've been so swamped, but partly because
distributed mesh failures are always so hard to investigate.

This one was not.  Sorry I didn't get to it right away.

The attached three-line change ends both the dbg-mode assertion
failures and the opt-mode segfaults for me with both the test meshes
you sent, and I think it's the solution to another ParallelMesh bug
that I'd been struggling to find.  Thanks for the nice test cases!

I wasn't able to replicate any "gobbles up an insane amount of memory"
behavior, though.  Try it with your full test suite?  There were two
separate bugs at work here, so I wouldn't swear there isn't a third
still hiding.
---
Roy
Index: src/mesh/nemesis_io.C
===================================================================
--- src/mesh/nemesis_io.C       (revision 6191)
+++ src/mesh/nemesis_io.C       (working copy)
@@ -1137,6 +1137,7 @@
 
   // For ParallelMesh, it seems that _is_serial is true by default.  A hack to
   // make the Mesh think it's parallel might be to call:
+  mesh.update_post_partitioning();
   mesh.delete_remote_elements();
 
   // And if that didn't work, then we're actually reading into a
Index: src/parallel/parallel_node.C
===================================================================
--- src/parallel/parallel_node.C        (revision 6191)
+++ src/parallel/parallel_node.C        (working copy)
@@ -192,6 +192,8 @@
           libmesh_assert_equal_to ((*node)(i), *ints_as_Real);
           in += ints_per_Real;
         }
+#else
+      in += LIBMESH_DIM * ints_per_Real;
 #endif // !NDEBUG
 
       if (!node->has_dofs())
------------------------------------------------------------------------------
Everyone hates slow websites. So do we.
Make your web apps faster with AppDynamics
Download AppDynamics Lite for free today:
http://p.sf.net/sfu/appdyn_sfd2d_oct
_______________________________________________
Libmesh-devel mailing list
Libmesh-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/libmesh-devel

Reply via email to