## Where communities thrive

• Join over 1.5M+ people
• Join over 100K+ communities
• Free without limits
##### Activity
• Jul 25 14:53
PierreMarchand20 closed #255
• Apr 09 01:34
tldahlgren commented #254
• May 02 2020 14:21
ernstbrunr51 commented #278
• Apr 29 2020 20:49
yurivict opened #278
• Apr 24 2020 18:55
ernstbrunr51 closed #277
• Apr 24 2020 18:55
ernstbrunr51 commented #277
• Apr 24 2020 18:04
poulson commented #277
• Apr 24 2020 10:34
ernstbrunr51 opened #277
• May 14 2019 01:33
poulson closed #276
• May 14 2019 01:33
poulson commented #276
• May 14 2019 01:30

poulson on master

• May 14 2019 01:24

poulson on master

• May 10 2019 21:37
jedbrown commented #276
• May 10 2019 21:25
poulson commented #276
• May 10 2019 21:21
jedbrown commented #276
• May 10 2019 17:08
poulson commented #276
• May 10 2019 17:03
tesch1 opened #276
• Apr 10 2019 13:18
JM1 commented #275
• Apr 10 2019 13:16
JM1 synchronize #275
• Apr 10 2019 08:56
JM1 opened #275
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.
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
Ryan H. Lewis
@rhl-
Jeff Hammond
@jeffhammond
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
the story Koenig tells in his blog post on Dr. Dobbs gives that away
but I am surprised no preference is given to the current namespace
Jack Poulson
@poulson
Apparently sudo is generally required for the configure, make, and make install stages of CMake now
Recent versions of CMake's ExternalProject_Add create directories in the install folder during the configure stage
Jeff Hammond
@jeffhammond
as if i needed another reason to hate cmake.
so cmake no longer works if you don't have elevated privileges?
and if someone manages to create malware inside of cmake tests, does that make cmake a virus?
Jack Poulson
@poulson
you only need elevated privileges in the configure or make stages if make install would have required the same privileges
so the privilege issue only applies if the user selected an installation location that required said privileges
but I honestly completely agree that rickety code that no one ever reads would be a great place to slip in something devious