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
Jack Poulson
@poulson
I plan on working on the Hessenberg QR this weekend
happy to meet in person but that is what I think is my highest priority
Ryan H. Lewis
@rhl-
makes sense
Jack Poulson
@poulson
reproduced a crash in the sparse-direct least squares
will rerun in Debug mode to try to reproduce
Jack Poulson
@poulson
apparently it was just an std::bad_alloc
also, I have committed a step towards addressing the performance of ApplyPackedReflectors when there are only a few right-hand sides: elemental/Elemental@85572b9
Jeff Hammond
@jeffhammond

There should be a T-shirt or similar with this on it :-)

something in the middle of my preference to add functionality forever and your desire to release every day is likely the right compromise

Ryan H. Lewis
@rhl-
@poulson: thanks for doing that. I'm looking into writing BFGS in El. Is it possible to use the existing Reflectors to store arbitrary rank 1 updates to the identity?
Jack Poulson
@poulson
why use the reflection abstraction instead of using a product of tall-skinny dense matrices applied via a Gemm?
Ryan H. Lewis
@rhl-
Let me think about how to do that
Ryan H. Lewis
@rhl-
I'm not immediately seeing how you can use a Gemm here
Ryan H. Lewis
@rhl-
I guess if you think of Bk = B{k-1} + U_k + S_k then Bk*v = [ B{k-1} | U_k | S_k ]v is a Gemv
But each U_k and S_k are rank one
Ryan H. Lewis
@rhl-
But you need to apply the inverse
Ryan H. Lewis
@rhl-
@poulson: seeing IPM based BPDN using about 1000x the resources of ADMM.
Jack Poulson
@poulson
the sparse IPM BPDN should be much faster than the dense ADMM...
not that it is a fair comparison
but it's also not fair to compare the two without also looking at the achieved accuracy
Ryan H. Lewis
@rhl-
we have a dense matrix
does that mean that IPM BPDN is trying to create some kind of sparse matrix from our dense one? That would be horrible..
Jack Poulson
@poulson
no, it is creating a larger dense matrix for the KKT system
Ryan H. Lewis
@rhl-
Ah that makes sense.
Should ADMM have decent accuracy?
Jack Poulson
@poulson
its convergence is eventually linear, but it tends to have a preasymptotic convergence to a couple of digits of accuracy pretty quickly
so the answer depends upon how many digits of accuracy you want
and how many iterations you perform
but I would default to published papers on this
Jeff Hammond
@jeffhammond
how do i disable EL_HAVE_QUAD? i cannot find in README.
nevermind
Jack Poulson
@poulson
it seems you found the answer elsewhere
I broke the build overzealously committing a fix for the Intel compilation issue
a fix is imminent (t-minus less than five minutes)
Ryan H. Lewis
@rhl-
Hey, quick question. If you have an El::DistMatrix attached to a mutable buffer, and any other distmatrix. can you do operator= safely without a resize happening?
Jack Poulson
@poulson
the best way to guarantee that beyond having the size right already is to create a view and assign to the view
e.g., auto AView = A(ALL,ALL); AView = B;
views cannot be resized
at least not larger
they can't reallocate
Ryan H. Lewis
@rhl-
the trouble we were seeing is that calls to A = B or El::Copy(B,A); or something is that these calls seem to mess with the memory underlying A, even with A is attached to something of the appropriate size.
But, i'll try the view thing.
Jack Poulson
@poulson
that would only happen if A and B have different sizes
I would recommend putting together a Minimum Working Example if you think otherwise
Ryan H. Lewis
@rhl-
Ok.
Jack Poulson
@poulson
Riddle me this, what is wrong with this code?!?
#include <iostream>
#include <sstream>

namespace foo {

struct Rectangle { double height, width; };
std::ostream& operator<<(std::ostream& os, const Rectangle& a) { return os; }

inline void BuildStream(std::ostringstream& os) {  }

template<typename T, typename... Args>
inline void BuildStream
(std::ostringstream& os, const T& item, const Args& ...args) {
 os << item;
 BuildStream(os, args...);
}

} // namespace foo

namespace bar {

using Rectangle = foo::Rectangle;

inline void BuildStream(std::ostringstream& os) { }

template<typename T, typename... Args>
inline void BuildStream
(std::ostringstream& os, const T& item, const Args& ...args) {
 os << item;
 BuildStream(os, args...);
}

} // namespace bar

int main(int argc, char* argv[]) {
 std::ostringstream os;
 bar::BuildStream(os, 1, 2);
 bar::BuildStream(os, bar::Rectangle(), bar::Rectangle());
 return 0;
}
Jack Poulson
@poulson
This is due to two issues (one offline and one in libskylark) being reported claiming that there was a mistake in Elemental's namespacing. Both issues seem to be caused by argument-dependent lookup not being widely appreciated.
Ryan H. Lewis
@rhl-
Wow.
Jack Poulson
@poulson
yes, ADL seems to be somewhat of a hack