you can also tell Elemental not to worry if the singular values don't all converge
Aidan Dang
@AidanGG
those are my distmatrix.bin and test script
I've tried setting qrctrl.demandconverged to false, but I don't think that worked either
Jack Poulson
@poulson
it still complained about not converging?
I haven't tested that option explicitly but tried to set it up
I'm downloading it now
I have about ten minutes to make/drink coffee, figure this out, and run to work but can hopefully find something
Aidan Dang
@AidanGG
Please don't stress too much about it, you've been a great help.
If I set demandconverged to false, it appears to hang
Jack Poulson
@poulson
something seems to be wrong with that file:
poulson@poulson-ASUS:~/Source/Internal/Elemental/build-gcc$ ./bin/sandbox-test
terminate called after throwing an instance of 'std::runtime_error'
what():Expected file to be 8 bytes but found 63406096Aborted (core dumped)
how did you create it?
_
Aidan Dang
@AidanGG
El::Write
I'm on 64 bit ints
Jack Poulson
@poulson
ah, I wonder if that's it
also, have you checked that if you download that .bin file from your Google Drive that you can run your test program with it?
Aidan Dang
@AidanGG
I'll check it out.
Jack Poulson
@poulson
the metadata at the beginning of the file is an El::Int, and that size is variable
I think that is the problem with me trying to run with the 32-bit version
Aidan Dang
@AidanGG
I can get you a version with 32bit ints
after I get some sleep, because it's 3:30am here in Melbourne. Thanks so much for your support.
Jack Poulson
@poulson
no worries, I can build a 64-bit version and debug
get some sleep and I will fix it by tonight
Aidan Dang
@AidanGG
Hello again Jack, my issues with this matrix occur on the default 4 process grid (2x2 after my recent pull) if that is any help.
Jack Poulson
@poulson
does the problem occur on a single process?
Aidan Dang
@AidanGG
mpirun -np 1 appears to work fine, both with useQR true or false.
Aidan Dang
@AidanGG
I've checked with a modified version of the SVD test driver, and the results are good when I run on one process
Jack Poulson
@poulson
I found the problem
it is still there when there is a single process
it has to do with when to force a zero shift in the bidiagonal QR algorithm
essentially I was purposefully avoiding a check if the tolerance was only requested to be relative to the maximal singular value
but it seems the zero shift still needs to be carried out if the conditioning of the subbidiagonal is sufficiently bad
Aidan Dang
@AidanGG
I apologise, but I don't know too much about the actual details on the algorithm.
Jack Poulson
@poulson
no worries, it's something for me to fix, but thankfully it will just be a few lines
I'm just trying not to unnecessarily sacrifice more performance
Aidan Dang
@AidanGG
It will be a great help to me to get this fixed, so I can drop the Scalapack need and go to 64-bit ints.
Jack Poulson
@poulson
hopefully I can submit the fix to master in the next ten minutes and then cherrypick to the 0.87 branch