These are chat archives for elemental/chat

20th
Nov 2016
Ryan H. Lewis
@rhl-
Nov 20 2016 03:03
If you see the link above there is a way to make a team
I'm on there
But cool!
Jack Poulson
@poulson
Nov 20 2016 07:48
Ah, will add you ASAP
Jack Poulson
@poulson
Nov 20 2016 18:10
have to rebuild package since it was previously uploaded on different PPA
Ryan H. Lewis
@rhl-
Nov 20 2016 18:48
?
Jack Poulson
@poulson
Nov 20 2016 20:46
I originally tried to upload to the jack-poulson/elemental ppa but had to create a new one under the team elemental and this requires rebuilding
further, it turns out I had to upload my GPG key first, so I am rebuilding again
Ryan H. Lewis
@rhl-
Nov 20 2016 20:53
i thought the team named elemental was already taken
thats cool
Jack Poulson
@poulson
Nov 20 2016 20:53
I mean libelemental
Ryan H. Lewis
@rhl-
Nov 20 2016 20:54
It looks like the latest spec file builds green with no serious warnings or errors
Jack Poulson
@poulson
Nov 20 2016 20:54
wonderful
perhaps the homebrew should be updated after the official release
Ryan H. Lewis
@rhl-
Nov 20 2016 20:54
the reviewer is in italy, so I am assuming we will get to whatever the next step is there tomorrow.
yeah, absolutely.
I’d like to finish BFGS before the next release, if possible.
either that or we can slate TSVD and BFGS for the .88 release
Jack Poulson
@poulson
Nov 20 2016 20:56
yes, I don't think either TSVD or BFGS are mature enough yet
but they are getting there
Ryan H. Lewis
@rhl-
Nov 20 2016 20:57
TSVD is certainly not making .87 but maybe we can get an initial BFGS in there
Jack Poulson
@poulson
Nov 20 2016 20:58
it would be good to have some large scale tests as a sanity check of its robustness and performance
Ryan H. Lewis
@rhl-
Nov 20 2016 20:59
where can we run those?
Jack Poulson
@poulson
Nov 20 2016 20:59
I mean even sequential tests
Ryan H. Lewis
@rhl-
Nov 20 2016 20:59
how large is large?
Jack Poulson
@poulson
Nov 20 2016 20:59
something that takes more than a few seconds to run
testing the Aggressive Early Deflation Schur decomp. against LAPACK revealed the std::complex performance issues with GCC
Jack Poulson
@poulson
Nov 20 2016 21:06
you could compare against the MATLAB/Octave BFGS performance
Ryan H. Lewis
@rhl-
Nov 20 2016 21:30
I just implemented the line search from the paper you referenced
the only unclear bit is they say: h is differentiable at t with h′(t) > c2s.
so far I am not checking differentiability..
Jack Poulson
@poulson
Nov 20 2016 21:31
the paper states they don't explicitly check either
Ryan H. Lewis
@rhl-
Nov 20 2016 21:32
im recompiling once its done ill see how the tests do
Ryan H. Lewis
@rhl-
Nov 20 2016 22:04
@poulson I ran the line search, it is failing on a simple quadratic. In particular here is the sequence of step lengths: t: 0.5 t: 0.25 t: 0.125 t: 0.0625 t: 0.03125 t: 0.015625 t: 0.0078125 t: 0.00390625 t: 0.001953125 t: 0.0009765625 t: 0.00048828125 t: 0.000244140625 t: 0.0001220703125 t: 6.103515625e-05 t: 3.0517578125e-05 t: 1.52587890625e-05 t: 7.62939453125e-06 t: 3.814697265625e-06 t: 1.9073486328125e-06 t: 9.5367431640625e-07 t: 4.76837158203125e-07 t: 2.384185791015625e-07 t: 1.192092895507812e-07 t: 5.960464477539062e-08 t: 2.980232238769531e-08 t: 1.490116119384766e-08 t: 7.450580596923828e-09 t: 3.725290298461914e-09 t: 1.862645149230957e-09 t: 9.313225746154785e-10 t: 4.656612873077393e-10 t: 2.328306436538696e-10 t: 1.164153218269348e-10 t: 5.820766091346741e-11 t: 2.91038304567337e-11 t: 1.455191522836685e-11 t: 7.275957614183426e-12 t: 3.637978807091713e-12 t: 1.818989403545856e-12 t: 9.094947017729282e-13 t: 4.547473508864641e-13 t: 2.273736754432321e-13 t: 1.13686837721616e-13 t: 5.684341886080801e-14 t: 2.842170943040401e-14 t: 1.4210854715202e-14 t: 7.105427357601002e-15 t: 3.552713678800501e-15 t: 1.77635683940025e-15 t: 8.881784197001252e-16 t: 4.440892098500626e-16 t: 2.220446049250313e-16 t: 1.110223024625157e-16 t: 5.551115123125783e-17 t: 2.775557561562891e-17 t: 1.387778780781446e-17 t: 6.938893903907228e-18 t: 3.469446951953614e-18 t: 1.734723475976807e-18 t: 8.673617379884035e-19 t: 4.336808689942018e-19 t: 2.168404344971009e-19 t: 1.084202172485504e-19 t: 5.421010862427522e-20 t: 2.710505431213761e-20 t: 1.355252715606881e-20 t: 6.776263578034403e-21 t: 3.388131789017201e-21 t: 1.694065894508601e-21 t: 8.470329472543003e-22 t: 4.235164736271502e-22 t: 2.117582368135751e-22 t: 1.058791184067875e-22 t: 5.293955920339377e-23 t: 2.646977960169689e-23 t: 1.323488980084844e-23 t: 6.617444900424221e-24 t: 3.308722450212111e-24 t: 1.654361225106055e-24 t: 8.271806125530277e-25 t: 4.135903062765138e-25 t: 2.067951531382569e-25 t: 1.033975765691285e-25 t: 5.169878828456423e-26 t: 2.584939414228211e-26 t: 1.292469707114106e-26 t: 6.462348535570529e-27 t: 3.231174267785264e-27 t: 1.615587133892632e-27 t: 8.077935669463161e-28 t: 4.03896783473158e-28 t: 2.01948391736579e-28 t: 1.009741958682895e-28 t: 5.048709793414476e-29 t: 2.524354896707238e-29 t: 1.262177448353619e-29 t: 6.310887241768094e-30 t: 3.155443620884047e-30 t: 1.577721810442024e-30 t: 7.888609052210118e-31
Jack Poulson
@poulson
Nov 20 2016 22:05
I really don't believe that this can be anything but a bug in your implementation
Ryan H. Lewis
@rhl-
Nov 20 2016 22:10
not printed is the initial check t = 1
the only way to make t = .5 is if we divded t by 2
.. essentially the algorithm is so simple, the only way I made a mistake is if I didn’t correctly define the function h(t) = f(x+t*p) - f(x) or if s = limsup_{t->0} h(t)/t is not supposed to just be: s = h’(0).
Jack Poulson
@poulson
Nov 20 2016 22:14
have you tried reproducing the experiments from the paper?
Overton is no optimization slouch and it would be hard to believe that he would publish something that didn't even work on quadratics...
Ryan H. Lewis
@rhl-
Nov 20 2016 22:19
fair
i think its likely i did mess up one of those things
how do you do an assertion in elemental again?
Jack Poulson
@poulson
Nov 20 2016 22:19
try comparing side-by-side for each calculation for a small system with a trivial Octave implementation
if( !condition ) LogicError("Your failure message");
or RuntimeError("Your failure message");
both of which can accept an arbitrary number of arguments
or measure an invariant that should be maintained
Ryan H. Lewis
@rhl-
Nov 20 2016 22:33
Ok, I am looking at there experiments section: http://www.cs.nyu.edu/overton/software/hanso/
it seems that this is there implementation
there is at least one safegaurd in the implementation not in the paper I am reading.
Jack Poulson
@poulson
Nov 20 2016 22:36
not super surprising I guess
Ryan H. Lewis
@rhl-
Nov 20 2016 22:37
also, there is clearly something wrong with the treatment in the paper
since if you define h(t) = f(x+t*p) - f(x), then as t->0 h(t) is subtracting two numbers which are very close to each other.
especially when f is very smooth.
Jack Poulson
@poulson
Nov 20 2016 22:39
your issue is with finite differencing?
Ryan H. Lewis
@rhl-
Nov 20 2016 22:39
we only every compare h(t) < __ it could easily be avoided..
Jack Poulson
@poulson
Nov 20 2016 22:40
I would recommend making sure that you can qualitatively reproduce results before trying to improve the numerics
otherwise you won't be sure where the problem is
Ryan H. Lewis
@rhl-
Nov 20 2016 22:40
looking at his code, he doesn’t implement this as he has written it in the paper
Jack Poulson
@poulson
Nov 20 2016 22:41
again, 0% surprising
Ryan H. Lewis
@rhl-
Nov 20 2016 22:41
ok, this is I think what I am missing
Jack Poulson
@poulson
Nov 20 2016 22:41
that's why releasing code is critical
Ryan H. Lewis
@rhl-
Nov 20 2016 22:41
he gaurds both the number of bisections and expansions
based on the norm of the step
nbisectmax = max(30, round(log2(1e5*dnorm))); % allows more if ||d|| big
nexpandmax = max(10, round(log2(1e5/dnorm))); % allows more if ||d|| small
Jack Poulson
@poulson
Nov 20 2016 22:43
seems reasonable
Jack Poulson
@poulson
Nov 20 2016 23:01
also, it appears launchpad does not support anything except ubuntu (it does not support uploading packages for debian proper)
Ryan H. Lewis
@rhl-
Nov 20 2016 23:02
really?
someone build be a debian package once and put it in a ppa
Jack Poulson
@poulson
Nov 20 2016 23:03
there isn't a way to do the equivalent of dput -f ppa:libelemental/ppa/debian/jessie elemental_0.87-8_amd64.changes
Ryan H. Lewis
@rhl-
Nov 20 2016 23:03
how do you check if a number is nan? do you have a special function fo rit?
Jack Poulson
@poulson
Nov 20 2016 23:03
El::limits::IsFinite(value)
Ryan H. Lewis
@rhl-
Nov 20 2016 23:04
does that disambiguate between NaN and Infty ?
Jack Poulson
@poulson
Nov 20 2016 23:04
you could compare against El::limits::Infinity<Real>() if you like
Ryan H. Lewis
@rhl-
Nov 20 2016 23:04
can you?
Jack Poulson
@poulson
Nov 20 2016 23:05
huh?
Ryan H. Lewis
@rhl-
Nov 20 2016 23:05
i guess you can do that with infinity
Jack Poulson
@poulson
Nov 20 2016 23:05
IsFinite(value) && value != Infinity<Real>() should do it
Ryan H. Lewis
@rhl-
Nov 20 2016 23:05
but not with nan
well
wait
Jack Poulson
@poulson
Nov 20 2016 23:05
yes, NaN always returns false for every comparison
Ryan H. Lewis
@rhl-
Nov 20 2016 23:06
i mean, if value is NaN this wont work
oh wait
sorry
it will work