Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Branch v1.6.1 test PR #1

Closed
wants to merge 23 commits into from

Conversation

roystgnr
Copy link
Owner

@roystgnr roystgnr commented Feb 8, 2021

Trying to run our Civet tests of 1.6.1.

Not sure if I can get moosebuild to play with this PR, since the base repo is in roystgnr/libmesh and not libMesh/libmesh, but let's try things this way first before I pollute the libMesh/ branch namespace.

roystgnr and others added 23 commits November 6, 2020 17:00
It's an optimization when it's on, but whether it *should* be on can
vary from processor to processor, and it's a bug (although admittedly
not a numerically huge one) when it's off.
When the underlying type here isn't one of our or the standard library's
vector types, we don't have an index_range() overload for it.

Thanks to @jwpeterson for the fix
`Eigen::SparseMatrix::setZero` clears the entire non-zero pattern, so we have to
re-reserve after zeroing in order to not have very expensive recalls to
`Eigen::SparseMatrix::reserveInnerVectors`
Assigning to the (template typed) values in these data structures with
the (integer) zero doesn't work when the template type is not POD nor
has an overloaded assignment operator taking an int/number.  Assigning
"{}" instead works for a larger set of types, while still giving zero
values to POD.  This issue was run into when I tried to use an
eigen::Matrix<DualNumber<...>> in TypeVector.
These functions are called from the ReferenceCountedObject destructor
and move constructor, respectively, two functions which generally are
not allowed to throw. We should therefore satisfy this requirement by
catching any exceptions generated in these functions and immediately
calling std::terminate() with a simple error message instead.
Not sure why this was even compiling before, but I do know that it
wasn't giving us useful information when it used to evaluate as "true",
and it's killing me on a new system where it evaluates as "false".
We had a potential deadlock before as reported by helgrind. We would
acquire the `remote_elem_mtx` first during setup and then
`singleton_mtx`. However during destruction we acquire `singleton_mtx`
first and then `remote_elem_mtx`. This has the potential to deadlock. So
why not let the singleton code handle all the locking? Seems like
singleton code should do that kind of thing and we should leverage it in
`RemoteElem` if we are going to go through the process of inheriting
from `Singleton`. This reports helgrind clean now
I ran across this speedbump while trying out some alternate configs,
which I needed for debugging the quad-precision support additions I made
recently, which I did to help debugging the newest IGA code.

The problem has now been whipped.  We often have holes in our id
numbering in the distributed mesh case, so to index by id we need
vectors that can hold the maximum id number of an element, not just the
number of elements.

Anyone who's reading this commit message has decided to inspect not flee
the tale of the flog of the bump in our logs on the hole in the bottom
of the C.
If we run our unit tests with --re '^A' then we really want just *tests*
that start with A, not "All Tests", even though All starts with A.
There's a chance this is responsible for a valgrind warning that @fdkong
managed to trigger.
…lerances

Otherwise, we won't use custom tolerances when doing the tree search,
so we might end up doing way more linear searches than is necessary.
After updating these metrics in 60487b5, I should have also
updated the bounds. Note that Knupp does not give explicit bounds on
these metrics for a "good" quality element in his paper, but both have
an upper bound of 1, so the previous values for SKEW were just wrong.
The user will now have to opt-in to gdb backtraces instead of opting out
with `--without-gdb-command`. There are many times that I forget to
configure with `--without-gdb-command` and then I sadly wait for a
minute to get my prompt back or switch to another terminal to kill the
process. For all of MOOSE testing we run with `--no-gdb-backtrace`. In
general if I need a backtrace I will compile in debug mode and print a
backtrace. I almost never make use of the automatic backtrace output;
instead I just dislike it. There was some general support for this
change on our libmesh slack channel
@roystgnr
Copy link
Owner Author

roystgnr commented Feb 8, 2021

Nope, "Continuous integration has not been set up".

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants