These are chat archives for elemental/chat

26th
Feb 2017
Aidan Dang
@AidanGG
Feb 26 2017 02:30
This is with the progress from process 2: https://gist.github.com/AidanGG/52bbb48bbdb4b44e01965b2c55bd27ec
I will try recompiling in a bit.
Aidan Dang
@AidanGG
Feb 26 2017 02:40
And yep, everything is fine when I ran it with just one process.
Jack Poulson
@poulson
Feb 26 2017 04:09
thank you for sharing this
it looks like an infinite loop due to the 'Stepped out of bounds' fallback logic
the fact that the estimated interval is so small might have something to do with it
Jack Poulson
@poulson
Feb 26 2017 04:53
Would you mind dropping the following into src/lapack_like/spectral/ and recompiling and rerunning? https://drive.google.com/file/d/0BwW19GX-tgqHOUFzeXAzZ3k5elU/view?usp=sharing
I added extra output which should give away what the problem you're experiencing that I can't seem to reproduce here is
Jack Poulson
@poulson
Feb 26 2017 06:01
wow, it is a 3x3 subproblem
the failure is within a rank-one update to a 3x3 diagonal matrix that is nearly all zeros
(see the bottom of the file)
it is a rather strange update
around line 232 you can see what's going wrong
the true solution is at the very right side of the interval (the square-root of rho=0.96 is 0.979796)
Jack Poulson
@poulson
Feb 26 2017 06:06
and each of the secular updates seem to want to place the solution just to the right of this value
so the fall back is to put the solution halfway between the last point and the right boundary instead (which perhaps doesn't make sense and should be more aggressive)
but somehow this bisection isn't converging and is getting stuck at a distance of 1.15729e-15 from the right boundary
this should be due to the floating-point error in calculating the update rule
Aidan Dang
@AidanGG
Feb 26 2017 06:13
So is this something that is unfortunately tied to my platform/version of GCC?
Jack Poulson
@poulson
Feb 26 2017 06:14
kind of
it is a very rare floating-point corner case
I am putting together a fix
you may notice a "we part ways with LAPACK here comment" that signals what might need to change:-p
I was trying to do something fancy and it seems to be able to backfire in very rare cases
essentially in the case of computing the largest singular value of the update, it is dangerous to try to keep track of an explicit interval for the solution
so one should just not do so
Aidan Dang
@AidanGG
Feb 26 2017 06:19
If I wanted to read up on the full algorithm, what papers should I look for? I'm just not familiar with the numerics since I'm primarily a physics person.
Jack Poulson
@poulson
Feb 26 2017 06:20
don't feel obliged to look into it, but R.C. Li has a nice LAPACK working note on it that I reference in said source
Aidan Dang
@AidanGG
Feb 26 2017 06:21
Great, I'll take a look when I have some spare time.
Jack Poulson
@poulson
Feb 26 2017 07:04
I just committed changesets into master which should hopefully fix your issue
Aidan Dang
@AidanGG
Feb 26 2017 09:23
Great, everything is fixed on my end.
Jack Poulson
@poulson
Feb 26 2017 17:37
Remote Debugging is the Best Debugging