Where communities thrive


  • Join over 1.5M+ people
  • Join over 100K+ communities
  • Free without limits
  • Create your own community
People
Activity
  • May 14 01:33
    poulson closed #276
  • May 14 01:33
    poulson commented #276
  • May 14 01:30

    poulson on master

    Update README.md (compare)

  • May 14 01:24

    poulson on master

    added logo (compare)

  • May 10 21:37
    jedbrown commented #276
  • May 10 21:25
    poulson commented #276
  • May 10 21:21
    jedbrown commented #276
  • May 10 17:08
    poulson commented #276
  • May 10 17:03
    tesch1 opened #276
  • Apr 10 13:18
    JM1 commented #275
  • Apr 10 13:16
    JM1 synchronize #275
  • Apr 10 08:56
    JM1 opened #275
  • Mar 06 03:47
    Raviteja1996 closed #274
  • Mar 05 05:46
    Raviteja1996 opened #274
  • Feb 11 21:53
    BenBrock commented #228
  • Feb 11 21:52
    BenBrock commented #228
  • Feb 11 21:51
    poulson commented #228
  • Feb 11 21:50
    poulson commented #228
  • Feb 11 21:45
    BenBrock commented #228
  • Jan 23 23:57
    adambaskerville commented #273
Aidan Dang
@AidanGG
Hi Jack, thanks for merging my PR. I've got some issues with COMPACT_SVD. In https://github.com/elemental/Elemental/blob/master/src/lapack_like/spectral/SVD.cpp#L75, the default tol is used to cull 'low enough but not necessarily zero' singular values. Is this the intended behaviour? Lines 277, 469, 771 and 1126 of src/lapack_like/spectral/BidiagSVD.cpp seem to contradict this, and do not make use of the APosterioriThreshold function.
Aidan Dang
@AidanGG
Also, would you know what I can do if an SVD does not converge? I am trying to build with ScaLAPACK to see if I have problems there, but I'm running into issues building with ScaLAPACK and 64-bit ints.
Ryan H. Lewis
@rhl-
@poulson ^^
Aidan Dang
@AidanGG
After a bit of experimentation, I have found that the convergence issues only occur when I run with a certain number of MPI processes. More specifically, I have a 4x6 matrix on the default 4 process grid which fails to converge for SVD.
Ryan H. Lewis
@rhl-
@aidan is it possible for you to add some unit tests to certify your case ?
Aidan Dang
@AidanGG
Sure, I'll try to write one soonish.
Ryan H. Lewis
@rhl-
Thanks :)
Jack Poulson
@poulson
@AidanGG Sorry, I hadn't checked this gitter in a while for temporary reasons. The COMPACT_SVD is indeed meant to have that behavior: the finite-precision reduction to bidiagonal form introduces a perturbation of magnitude similar to eps || A ||_2 max(m,n), and so one should ignore singular values below this amount.
any cases of SVD not converging should be a bug: do you have a reproducing example?
there are several SVD algorithms (e.g., Divide and Conquer and QR), so it is unlikely that multiple of them are not converging for the same matrix
and you are correct that ScaLAPACK does not support 64-bit integers (and the problem is in the library itself, not Elemental)
I've been working on getting the LP solvers to work on all of the http://www.netlib.org/lp/data/ examples using a symmetric-indefinite solver and hadn't been checking in as much as I should have
Ryan H. Lewis
@rhl-
@poulson ping?
Is there any reason why we can’t further generalize elastic net to penalize l1||Gx||_1 + l2||Gx||_2 for a square matrix G.
or even two matrices G,H (where in my case G=H)
Ryan H. Lewis
@rhl-
to make it simple, i’m thinking of G and H as diagonal matrices.
Looking at the EN code, it looks like I need to just patch up the corresponding bits of the objective function
Ryan H. Lewis
@rhl-
If I change it to: l_1 ||Gx|| + l_2||Hx|| then I need to stick H on the upper two entries of the diagonal of Q in your EN function, and then (assuming G = diag(g)) stick the entries of g in where the first two array of ones are..
and H can be an arbitrary matrix. Not sure how to do the same thing for G here.. but, I don’t need it.
Jack Poulson
@poulson
There's no reason that wouldn't be possible, but it wouldn't be "Elastic Net" anymore
it's still a QP
Ryan H. Lewis
@rhl-
@poulson was thinking of doing elastic net with a regularizer. E.g. in ||Ax-b|| making ||(AP^{-1})Px-b|| then saying z = Px
Aidan Dang
@AidanGG
Hi all, I've got an example of a matrix that's giving me problems, as a .bin file from El::Write. It's about 63MB. What's the easiest way for me to send it?
Jack Poulson
@poulson
is there a website you can post it to and link to?
Aidan Dang
@AidanGG
I'll chuck it on my google drive
Jack Poulson
@poulson
is there any context for this matrix?
Aidan Dang
@AidanGG
It was generated as part of a tensor network calculation
Jack Poulson
@poulson
was it an intermediate step in an alternating algorithm?
Aidan Dang
@AidanGG
I'm using the svd to cut a matrix into two, then using the svd to cut one of those, and so on
Jack Poulson
@poulson
OK
Aidan Dang
@AidanGG
I'm fairly certain the matrix I have doesn't have any undefineds/NaNs
Jack Poulson
@poulson
it would be good to see if Octave can safely compute the SVD of that matrix as well
my guess is that it would take about 10 minutes
Aidan Dang
@AidanGG
I think scalapack does
Jack Poulson
@poulson
assuming roughly a 3 thousand by 3 thousand matrix
ScaLAPACK uses the QR algorithm
have you tested Elemental's QR algorithm on it?
Aidan Dang
@AidanGG
is that through bidiagSVDctrl.useQR?
Jack Poulson
@poulson
yes, that is the best way
Aidan Dang
@AidanGG
Ok, it still doesn't work
Jack Poulson
@poulson
what is the error/exception?
Aidan Dang
@AidanGG
Did not converge all singular values
Jack Poulson
@poulson
one can increase the maximum number of iterations to see if it was almost converging
Aidan Dang
@AidanGG
Is that qrCtrl.maxIterPerVal?
Jack Poulson
@poulson
bidiagSVDCtrl.qrCtrl.maxIterPerVal = 20 could be tried
yes
Also, did you verify that ScaLAPACK returned with INFO=0?
Aidan Dang
@AidanGG
Oh, I haven't, but the final results were sensible, so I assumed it was ok
Jack Poulson
@poulson
I would recommend checking for the sake of consistency, as it could very well be that there is one small troublesome singular value