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