These are chat archives for elemental/chat

23rd
Aug 2016
Jack Poulson
@poulson
Aug 23 2016 00:49
I added some detailed comments
For the most part, LGTM
Ryan H. Lewis
@rhl-
Aug 23 2016 01:53
Thanks. I believe they are addressed now
Ryan H. Lewis
@rhl-
Aug 23 2016 02:17
@poulson: ping
Jack Poulson
@poulson
Aug 23 2016 02:17
merged
Ryan H. Lewis
@rhl-
Aug 23 2016 02:17
I see ...
:)
Ok, I want to propose now another change
i'm working it out for the moment on a branch
but, we should assuredly make a release and then merge it
Jack Poulson
@poulson
Aug 23 2016 02:17
btw, I agree with adding something like clang-tidy
Ryan H. Lewis
@rhl-
Aug 23 2016 02:18
yeah
I want to get rid of camel case
and go to snake case
I'm working on a script to do it
Jack Poulson
@poulson
Aug 23 2016 02:18
that breaks every person who uses the library's code...
Ryan H. Lewis
@rhl-
Aug 23 2016 02:18
(unless they apply this script)
Jack Poulson
@poulson
Aug 23 2016 02:18
that needs to have a very serious up-front warning
Ryan H. Lewis
@rhl-
Aug 23 2016 02:19
I agree, needs to be done carefully
I'm also doing this via a script
Jack Poulson
@poulson
Aug 23 2016 02:20
I would suggest waiting for such a change since it is low-hanging fruit and is troublesome for many people
it would be better to round other corners first
Jed Brown
@jedbrown
Aug 23 2016 02:20
@rhl- How can you guarantee that your script won't change occurrences of the same type/method names that don't actually refer to elemental types within their code? It seems to me that the script needs to have a full C++ parse. Are you writing it with clang?
Ryan H. Lewis
@rhl-
Aug 23 2016 02:21
@jedbrown: hi. to be clear, I am writing a script for elemental
not that I am ignoring our users
Jack Poulson
@poulson
Aug 23 2016 02:21
the issue is what people who use Elemental are supposed to do
Jed Brown
@jedbrown
Aug 23 2016 02:21
Sure, but if you change all the names, it breaks all user code.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:22
I understand :)
Jack Poulson
@poulson
Aug 23 2016 02:22
e.g., the poor libskylark developers who have already dealt with fifteen million API changes
e.g., @iff
Ryan H. Lewis
@rhl-
Aug 23 2016 02:22
I want to be able to "make the change"
Jed Brown
@jedbrown
Aug 23 2016 02:22
(I personally don't see the point in such a purely cosmetic change.)
Ryan H. Lewis
@rhl-
Aug 23 2016 02:22
whether we do it is another issue
Jack Poulson
@poulson
Aug 23 2016 02:23
plenty of serious C++ projects use CamelCase
Qt being the popular public example
if I had it all to do over again, I would have used snake_case, but I'm not sure now is the time to make the change
Ryan H. Lewis
@rhl-
Aug 23 2016 02:24
So, everyone calm down.
Jed Brown
@jedbrown
Aug 23 2016 02:24
;-)
Ryan H. Lewis
@rhl-
Aug 23 2016 02:24
I am interested in evolving Elemental into a model c++ library. In particular, there is something called the c++ core guidelines
and yes, they are guidelines, not rules
Jed Brown
@jedbrown
Aug 23 2016 02:25
Nothing like a cosmetic proposal to bring out the bikeshedders like me. :-o
Jack Poulson
@poulson
Aug 23 2016 02:25
:relaxed:
decreasing build times is definitely not a bikeshed issue
Ryan H. Lewis
@rhl-
Aug 23 2016 02:25
Here are the core guidelines: http://isocpp.github.io/CppCoreGuidelines/
Jack Poulson
@poulson
Aug 23 2016 02:25
an, IMO, a 10x more important issue for adoption
as are release packages
and better docs
I'm interested in moving from camel to snake long term
but, I think its worth investing now, in what is involved to do it.
Jed Brown
@jedbrown
Aug 23 2016 02:27
Does Jack being at Google suggest some preference toward CamelCase? https://google.github.io/styleguide/cppguide.html
Anyway, I agree with Jack that almost anything else would add more value to the project.
Jack Poulson
@poulson
Aug 23 2016 02:27
I forgot their style guide was public
I was trying to strongly hint that Serious C++ Projects used CamelCase
Ryan H. Lewis
@rhl-
Aug 23 2016 02:28
Eh.
Eh.
Jack Poulson
@poulson
Aug 23 2016 02:28
and by that, I mean that at least one, not that all serious projects do
Ryan H. Lewis
@rhl-
Aug 23 2016 02:28
This is not a google software project.
Jack Poulson
@poulson
Aug 23 2016 02:28
completely agreed
Ryan H. Lewis
@rhl-
Aug 23 2016 02:29
C++ has a set of core guidelines
I think we should try and have alignment
that doesn't mean we do everything in it
Jed Brown
@jedbrown
Aug 23 2016 02:29
Well, Bjarne and Herb have some personal preferences that they wrote up. It's by no means a consensus.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:30
Ok, this is enough of this conversation
Jack Poulson
@poulson
Aug 23 2016 02:30
This message was deleted
Ryan H. Lewis
@rhl-
Aug 23 2016 02:30
My statements are very pragmatic
Jack Poulson
@poulson
Aug 23 2016 02:31
I don't disagree with you, but the primary complaint I get from users in the wild is that they are sick and tired of API changes
Ryan H. Lewis
@rhl-
Aug 23 2016 02:31
@poulson: yeah, so, lets do this and get it over with
Jed Brown
@jedbrown
Aug 23 2016 02:31
I've heard that before. ;-)
Ryan H. Lewis
@rhl-
Aug 23 2016 02:32
@jedbrown: so, getting back to more relevant conversations. I have profiled the build
I have a good sense of where the challenges are
We could really use some help there
Jack Poulson
@poulson
Aug 23 2016 02:32
I am at a good point for sinking serious time into this
Jed Brown
@jedbrown
Aug 23 2016 02:32
(It wouldn't be hard for PETSc to change, but there will be a huge outcry from users if you make that change.)
moving on: do you have quantitative evidence of the separate files slowing the build?
Ryan H. Lewis
@rhl-
Aug 23 2016 02:33
its not so much separate files
@jedbrown: if you want to try and get a docker image with https://github.com/mikael-s-persson/templight plugged into a clang compiler
Jed Brown
@jedbrown
Aug 23 2016 02:33
Is the code structured such that all dependent files need to include the impl.hpp?
I.e., nobody can get away with only including decl.hpp?
Ryan H. Lewis
@rhl-
Aug 23 2016 02:34
it would be very beneficial to further profiling.
@jedbrown so including Foo.hpp includes both the decl and the impl
I agree that including just the decl is useful
but, not really
Jed Brown
@jedbrown
Aug 23 2016 02:35
And does Elemental (internally) always include Foo.hpp?
Ryan H. Lewis
@rhl-
Aug 23 2016 02:35
because you need to instantiate times
types*
Jack Poulson
@poulson
Aug 23 2016 02:35
@jedbrown The partially implemented strategy is to leverage extern template's so that users only need to instantiate template functions with non-standard types (where non-standard means not float, double, DoubleDouble, QuadDouble, Quad, BigFloat, or their complex extensions)
Jed Brown
@jedbrown
Aug 23 2016 02:35
Or can it sometimes include only decl.h?
Ryan H. Lewis
@rhl-
Aug 23 2016 02:35
@jedbrown I recommend you look at the code.
Jack Poulson
@poulson
Aug 23 2016 02:35
so, yes, the implementations are currently included, but extern template (where it has been propagated) should guarantee that the function need not be compiled
Ryan H. Lewis
@rhl-
Aug 23 2016 02:36
there is lots of #include <All of El>
Jed Brown
@jedbrown
Aug 23 2016 02:36
@poulson Isn't that a relatively independent issue?
Ryan H. Lewis
@rhl-
Aug 23 2016 02:36
I think @poulson is onto what the real issue is
i think the 'extern templates' don't do what we think they do
Jack Poulson
@poulson
Aug 23 2016 02:36
@rhl- Do you mean Jed is onto the real issue?
Ryan H. Lewis
@rhl-
Aug 23 2016 02:37
No you do
Jack Poulson
@poulson
Aug 23 2016 02:37
because I would agree that the current header refactoring is ad-hoc on its best day
Ryan H. Lewis
@rhl-
Aug 23 2016 02:37
No i meant what I said
Jed Brown
@jedbrown
Aug 23 2016 02:37
So public PETSc headers don't use templates at all, but we found that there were quite a number of places where we only needed type declarations. So we got an improvement by splitting headers.
Jack Poulson
@poulson
Aug 23 2016 02:37
I would be all for following the strategy boost suggests if that has shown to be scalable
Ryan H. Lewis
@rhl-
Aug 23 2016 02:37
My belief (without evidence thusfar) is that the extern template stuff is causing all the problem
Jack Poulson
@poulson
Aug 23 2016 02:38
the build was insanely slow even before the extern templates...
things got slow when I started instantiating everything in every build
Jed Brown
@jedbrown
Aug 23 2016 02:38
I'm not familiar with Boost's use of extern templates, but they make heavy use of split headers specifically to reduce compilation time.
Jack Poulson
@poulson
Aug 23 2016 02:38
and when I forced a rebuild after every git commit due to writing the git revision into a config header
@jedbrown That's what I meant
Ryan H. Lewis
@rhl-
Aug 23 2016 02:39
what do you mean by split headers?
Jed Brown
@jedbrown
Aug 23 2016 02:39
Many/most of their internal inclusions are only the _fwd.hpp files. But I don't know how that interacts with extern template.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:39
like decl/impl ?
Jed Brown
@jedbrown
Aug 23 2016 02:39
@rhl- Yes, exactly.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:39
yeah, but you don't need split headers necessarily
but, yeah
Jack Poulson
@poulson
Aug 23 2016 02:39
so the key is for us to stop forcing the impl.hpp to always be included then
Ryan H. Lewis
@rhl-
Aug 23 2016 02:39
thats a way to do to this sure
that is what 'include-what-you-use' does
Jed Brown
@jedbrown
Aug 23 2016 02:39
It's spelled *_fwd.hpp in boost.
Jack Poulson
@poulson
Aug 23 2016 02:40
I would be all for changing from decl.hpp to fwd.hpp if that is the usual convention since it should effect zero user programs
Ryan H. Lewis
@rhl-
Aug 23 2016 02:40
you can build a complete "header only thing" and then just have a separate fwd.hpp
then you can use the header only thing, when you want
and then a fwd thing when its convienent
Jack Poulson
@poulson
Aug 23 2016 02:41
header only doesn't jive very well with python and C interfaces
Jed Brown
@jedbrown
Aug 23 2016 02:41
It's entirely possible for the interfaces to be such that in practice, you always need the whole thing. In which case reducing the dependencies would involve deeper refactoring (that may or may not be worthwhile).
@rhl- If I have the context right, normally the "header only thing" includes the fwd.hpp.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:42
@jedbrown : indeed
but it doesn't truly matter whether it does or doesnt
Jed Brown
@jedbrown
Aug 23 2016 02:42
*types.h, *decl.h, and *fwd.h (or .hpp) are all pretty common. Boost just happen to choose *_fwd.hpp.
Jack Poulson
@poulson
Aug 23 2016 02:42
okay, we should stick with decl.hpp then
Ryan H. Lewis
@rhl-
Aug 23 2016 02:43
I think we should use a profiler
like templight
and then confirm that there isn't other issues
like when you think you are including just one thing, you end up including all of El.
Jed Brown
@jedbrown
Aug 23 2016 02:44
@rhl- The point of including decl.h is that it lets the compiler check consistency (and avoid possibly code duplication).
Ryan H. Lewis
@rhl-
Aug 23 2016 02:44
I understand
Jed Brown
@jedbrown
Aug 23 2016 02:44
IIRC, we used the -MMD dependencies to draw those graphs for PETSc.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:45
If you look at how boost does things. Impl does not look like what Impl looks like in elemental
its just a full header only thing
and then they have separate declarations
what is -MMD
Jed Brown
@jedbrown
Aug 23 2016 02:46
gcc and similar compute dependencies for makefiles.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:46
not following
Jed Brown
@jedbrown
Aug 23 2016 02:47
gcc -MMD outputs the dependencies for a compilation unit in a format that can be included by a makefile. It makes it easy to check if there are cross-module dependencies getting pulled in (i.e., something that ought to be unnecessary).
There are many ways to compute these things, but if you conceptually know that component A should not depend on the implementation of component B (for example) then any exceptions are something to look at.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:48
I was trying to do this with clang
clang for example has a half decent profiler
Jack Poulson
@poulson
Aug 23 2016 02:48
FWIW, templight looks promising and I'm in the process of building it
Ryan H. Lewis
@rhl-
Aug 23 2016 02:49
@poulson: I got 99% there and something didn't work
(maybe I shouldnt have said that)
Jack Poulson
@poulson
Aug 23 2016 02:49
we'll see if that happens to me too
Ryan H. Lewis
@rhl-
Aug 23 2016 02:49
@poulson: can you do it in a docker container
that way you can share it, if it works.
Jack Poulson
@poulson
Aug 23 2016 02:49
I don't trust performance optimizations in docker quite so much, but maybe I should
Jed Brown
@jedbrown
Aug 23 2016 02:49
clang and several other compilers implement -MMD and almost every compiler has something equivalent. It's not a profiler, but it does tell you what would need to be recompiled for any given change.
Jack Poulson
@poulson
Aug 23 2016 02:50
I'll try to look into -MMD too
Jed Brown
@jedbrown
Aug 23 2016 02:50
I should use docker more often.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:50
@poulson: not so interested in optimization here, the results should be the same in both
Jack Poulson
@poulson
Aug 23 2016 02:51
LLVM takes a little while to build even outside of a VM...
Ryan H. Lewis
@rhl-
Aug 23 2016 02:51
haha oh yeah, that
docker is not a vm
Jed Brown
@jedbrown
Aug 23 2016 02:51
@poulson It's normally used with plain makefiles to maintain dependencies for a correct build.
Ryan H. Lewis
@rhl-
Aug 23 2016 02:52
docker containers are lxc..
Jack Poulson
@poulson
Aug 23 2016 02:52
OK, sorry...
Ryan H. Lewis
@rhl-
Aug 23 2016 02:53
@poulson: hm? i'm just saying that the code executes essentially as if it is a process on the system, there is negligible performance differences as far as I can tell
Jack Poulson
@poulson
Aug 23 2016 02:53
OK
Ryan H. Lewis
@rhl-
Aug 23 2016 02:53
anyways
Jack Poulson
@poulson
Aug 23 2016 02:57
building templight
by the way, Jed, I noticed that LLVM/Clang uses your favorite build system
Ryan H. Lewis
@rhl-
Aug 23 2016 03:01
what is that?
Jack Poulson
@poulson
Aug 23 2016 03:02
CMake
Ryan H. Lewis
@rhl-
Aug 23 2016 03:02
@jedbrown must be a bikeshedder because he has a favorite build system.
Jack Poulson
@poulson
Aug 23 2016 03:02
Basically every interaction I have with the PETSc devs involves me being told CMake sucks
Ryan H. Lewis
@rhl-
Aug 23 2016 03:02
my favorite one is the one that gets out of my way the fastests
Jed Brown
@jedbrown
Aug 23 2016 03:03
We love you, Jack.
Ryan H. Lewis
@rhl-
Aug 23 2016 03:03
what does PETSc use?
Jack Poulson
@poulson
Aug 23 2016 03:03
given that one of PETSc's significant contributions is turning a pile of broken scientific abandonware into a consistently buildable project, I think they deserve to care
PETSc uses Matt Knepley in script form
Ryan H. Lewis
@rhl-
Aug 23 2016 03:04
haha
Jed Brown
@jedbrown
Aug 23 2016 03:04
@rhl- PETSc used CMake for a while, but experienced lots of reports of crashes and brokenness (some of which we reproduced and reported to CMake, but that doesn't help the user). We switched to GNU Make for the build and have been very happy. Faster and much simpler with no weird breakage.
Ryan H. Lewis
@rhl-
Aug 23 2016 03:05
Was this some time ago?
Most big projects use it now
Jack Poulson
@poulson
Aug 23 2016 03:05
the configure part is homegrown though
Jed Brown
@jedbrown
Aug 23 2016 03:05
Configure has been a Python ball of spaghetti and cat piss for over 10 years.
It does the job, but is not something I would recommend for any new project. There is a lot of working around bugs in arcane environments.
I'd say many big projects use it. We never moved configure to CMake, only the build. (And even that was optional.)
Jack Poulson
@poulson
Aug 23 2016 03:07
the lack of nested dependency management is what is my biggest complaint by far
ExternalProject_Add is half-broken
Ryan H. Lewis
@rhl-
Aug 23 2016 03:07
@poulson: yeah, cmake falls over there
Jed Brown
@jedbrown
Aug 23 2016 03:08
The unforgivable bugs were prior to cmake-3.0, but I still think it's pretty gross.
Ryan H. Lewis
@rhl-
Aug 23 2016 03:08
CMake is pretty decent though
sure has hell beats autotools
Jack Poulson
@poulson
Aug 23 2016 03:09
the hairiest part of Elemental is the place after the ScaLAPACK ExternalProject_Add, which internally might call an OpenBLAS ExternalProject_Add, where the extern projects have not yet had their configures run but I have to intuit the outputs
Jed Brown
@jedbrown
Aug 23 2016 03:09
CMake's "language" is second only to m4 on my repulsiveness ranking.
Ryan H. Lewis
@rhl-
Aug 23 2016 03:09
amen
lol
same with any build system though
I'm really hoping more attention to this stuff happens
Jed Brown
@jedbrown
Aug 23 2016 03:10
Also, PETSc can build a lot of optional dependent packages, usually on batch systems, each with disparate build systems (including "edit the makefile").
CMake's recommendation seems to be to maintain a CMake build system for all such packages, which is really a maintenance disaster and you can't report errors upstream that way.
Ryan H. Lewis
@rhl-
Aug 23 2016 03:11
CMake doesnt really have a robust solution (or any solution) to dependencies
it clearly falls over
Jed Brown
@jedbrown
Aug 23 2016 03:11
Also, CMake does a pretty bad job with batch systems. (Platform files requires expert knowledge and people always get it wrong.)
Ryan H. Lewis
@rhl-
Aug 23 2016 03:12
The reason why dependencies are a nightmare though is not so much CMake as it is C/C++ in general
C++ having nonstandard, non platform specific ABI, and not having a module system, is at the root cause of a lot of these issues.
Jed Brown
@jedbrown
Aug 23 2016 03:13
Anyway, PETSc uses this Python monstrosity that does some clever things that I don't know how to reproduce in any other system, but not something that independent projects should adopt. But I don't have a recommendation for a usable configure system that does dependencies and batch environments well.
Ryan H. Lewis
@rhl-
Aug 23 2016 03:13
@poulson: how is it going with templight?
Jed Brown
@jedbrown
Aug 23 2016 03:13
Yes, lack of a module system is definitely an issue. pkg-config is only a partial solution, as is libtool .la files.
Ryan H. Lewis
@rhl-
Aug 23 2016 03:14
yeah, none of those things really help
Jack Poulson
@poulson
Aug 23 2016 03:14
@rhl- Still building LLVM/Clang...
Ryan H. Lewis
@rhl-
Aug 23 2016 03:14
I mean like C++ Modules
Jed Brown
@jedbrown
Aug 23 2016 03:14
It is silly, however, that CMake still can't do find_package(TIFF) with static libraries.
Ryan H. Lewis
@rhl-
Aug 23 2016 03:14
what do you mean?
Jed Brown
@jedbrown
Aug 23 2016 03:15
Meh, not restricted to C++. Same problem for C and Fortran, etc. And we often have mixed-language projects.
libtiff has optional dependencies on any subset of libjpeg, libpng, and libz (IIRC).
Last I checked, the FindTIFF.cmake module just assumes shared libraries.
pkg-config and libtool .la files list the "private" dependencies so such things can be linked.
Anyway, this problem was brought up on the mailing list sometime around 2009 and nobody cared that there was not even a best practices if you need to link static libraries.
Jed Brown
@jedbrown
Aug 23 2016 03:20
I mention TIFF only because I'd seen it used as an example of how to write a Find*.cmake module. If we're lucky, the HPC vendors will continue improving support for shared libraries so that this problem affects fewer users.
Ryan H. Lewis
@rhl-
Aug 23 2016 03:20
i've been looking at libskylark
Ryan H. Lewis
@rhl-
Aug 23 2016 03:36
@poulson: still compiling?
Jack Poulson
@poulson
Aug 23 2016 03:36
28%...
Ryan H. Lewis
@rhl-
Aug 23 2016 03:37
jeez
yeah, i remember now this took hours
Jack Poulson
@poulson
Aug 23 2016 03:37
half of my laptop is always churning on lattice reduction though
Ryan H. Lewis
@rhl-
Aug 23 2016 03:37
why are you doing lattice reductions again?
just for fun>?
Jack Poulson
@poulson
Aug 23 2016 03:37
in for a penny, in for a pound
Ryan H. Lewis
@rhl-
Aug 23 2016 03:38
what?
oh
like
sunken cost
thats hilarious.
Jack Poulson
@poulson
Aug 23 2016 03:38
I wanted to see if I could break the record for the 146 sized lattice on my laptop even though everyone else is using 1000 core clusters for half a year
Ryan H. Lewis
@rhl-
Aug 23 2016 03:38
right right
Jack Poulson
@poulson
Aug 23 2016 03:39
since I started this problem (in December!) the 147 lattice has been broken
Ryan H. Lewis
@rhl-
Aug 23 2016 03:39
oh no!
Jack Poulson
@poulson
Aug 23 2016 03:39
but it's worth seeing if I can get a better score on the 146
Ryan H. Lewis
@rhl-
Aug 23 2016 03:39
is your goal now 146
or 148
Jack Poulson
@poulson
Aug 23 2016 03:39
a shorter vector in th 146 lattice
Ryan H. Lewis
@rhl-
Aug 23 2016 03:40
is 146 referring to number of basis vectors, or dimension?
Jack Poulson
@poulson
Aug 23 2016 03:40
it is a 146 x 146 matrix
Ryan H. Lewis
@rhl-
Aug 23 2016 03:40
Ah, I see.
Jack Poulson
@poulson
Aug 23 2016 03:40
with an identity at the top and a very large botom row
Ryan H. Lewis
@rhl-
Aug 23 2016 03:41
thats the output or input?
Jack Poulson
@poulson
Aug 23 2016 03:41
input
that is the transpose of what I referred to
Ryan H. Lewis
@rhl-
Aug 23 2016 03:41
got it
odd, cant find my add_tsvd branch
@poulson: didn't I share that with you a while back
ah, found it.
Jack Poulson
@poulson
Aug 23 2016 03:46
I have record of you mentioning it but don't see the link
Ryan H. Lewis
@rhl-
Aug 23 2016 03:46
add_tsvd
im just going to open a tracking PR now
Jack Poulson
@poulson
Aug 23 2016 03:49
good idea
Ryan H. Lewis
@rhl-
Aug 23 2016 03:50
The test looks good
need to clean it up
Jack Poulson
@poulson
Aug 23 2016 03:51
let me know when it's ready for review
Ryan H. Lewis
@rhl-
Aug 23 2016 03:51
I think you and I were working on the actual algorithm
im not sure what state its in
Jack Poulson
@poulson
Aug 23 2016 03:52
probably not quite ready to be a PR then...
Ryan H. Lewis
@rhl-
Aug 23 2016 03:52
I am a fan of auto travis builds.
Jack Poulson
@poulson
Aug 23 2016 03:53
do you not get that in your fork?
Ryan H. Lewis
@rhl-
Aug 23 2016 03:53
it doesn't seem so
Jack Poulson
@poulson
Aug 23 2016 03:53
it's super easy to add
Ryan H. Lewis
@rhl-
Aug 23 2016 03:53
well, i'll close the PR
but, you might just want to give me your commentary anyways
Jack Poulson
@poulson
Aug 23 2016 03:53
OK
Ryan H. Lewis
@rhl-
Aug 23 2016 03:54
I certainly don't remember what we were doing its been a long while.
Jack Poulson
@poulson
Aug 23 2016 03:54
I just think it's useful to separate forks from PR's because having abandoned PR's looks bad for the project
also, it makes it unclear whether it is review ready or not
Ryan H. Lewis
@rhl-
Aug 23 2016 03:55
yeah, however, the UI is super nice.
i closed it, and the old Primefield one
Jack Poulson
@poulson
Aug 23 2016 03:55
now for the Conda one :wink:
Ryan H. Lewis
@rhl-
Aug 23 2016 03:56
I can close it (or we could merge it..)
Jack Poulson
@poulson
Aug 23 2016 03:56
j/k
I'll give it another month or two
Ryan H. Lewis
@rhl-
Aug 23 2016 03:56
I think we should just merge it
whats the damage?
if someone wants to use it, then they can come fix it up
Jack Poulson
@poulson
Aug 23 2016 03:56
that it completely does not work except on that specific machine?
Ryan H. Lewis
@rhl-
Aug 23 2016 03:56
oh, pfft
lol
Jack Poulson
@poulson
Aug 23 2016 03:57
there are literally hard-coded paths
Ryan H. Lewis
@rhl-
Aug 23 2016 03:57
is that thing even necessary?
Jack Poulson
@poulson
Aug 23 2016 03:57
Conda support would be useful
Ryan H. Lewis
@rhl-
Aug 23 2016 03:57
no sorry
Jack Poulson
@poulson
Aug 23 2016 03:57
packaging in general is one of the main pain points for the library
Ryan H. Lewis
@rhl-
Aug 23 2016 03:57
i mean the patch
@poulson: we have RPMs now :)
Jack Poulson
@poulson
Aug 23 2016 03:57
I don't know
Ryan H. Lewis
@rhl-
Aug 23 2016 03:57
you can install then
Jack Poulson
@poulson
Aug 23 2016 03:57
I need to install a VM so that I can test them
I also need to not completely forget I set up Jenkins on the linode
Ryan H. Lewis
@rhl-
Aug 23 2016 03:58
dnf copr enable rhl/elemental && dnf install elemental-openmpi elemental-mpich
on anything besides fedora 24
including RHEL and Centos
5
Jack Poulson
@poulson
Aug 23 2016 03:58
but not Debian :-)
though alien might be useful
Ryan H. Lewis
@rhl-
Aug 23 2016 03:59
yeah, well, i thought iff was doing that
Jack Poulson
@poulson
Aug 23 2016 03:59
any guesses as to whether this would give a hacky Debian install? https://help.ubuntu.com/community/RPM/AlienHowto
Ryan H. Lewis
@rhl-
Aug 23 2016 04:00
i dont recommend alien
Jack Poulson
@poulson
Aug 23 2016 04:00
OK
nobody does
Ryan H. Lewis
@rhl-
Aug 23 2016 04:00
I recommend writing whatever the equivalent of a spec file is
and I bet its pretty easy to just sortve follow the existing spec now
someone wrote a deb package for CTL for me once
looking for it now
Jack Poulson
@poulson
Aug 23 2016 04:01
I think someone contributed a debian package for El at one point
I am embarrassed I don't remember where it is
This message was deleted
Ryan H. Lewis
@rhl-
Aug 23 2016 04:02
I dont see the files
Jack Poulson
@poulson
Aug 23 2016 04:02
nvm, that wasn't it
Ryan H. Lewis
@rhl-
Aug 23 2016 04:04
I believe I can just push add_tsvd to Elemental as a branch now
erm the Elemental copy of elemental
then I can get travis builds
Jack Poulson
@poulson
Aug 23 2016 04:05
works for me
it's more clear what it's status is this way
Ryan H. Lewis
@rhl-
Aug 23 2016 04:06
$ git push origin add_tsvd
fatal: remote error:
You can't push to git://github.com/elemental/Elemental.git
Use https://github.com/elemental/Elemental.git
is that for real?
Jack Poulson
@poulson
Aug 23 2016 04:06
yep
not sure why
Ryan H. Lewis
@rhl-
Aug 23 2016 04:06
y?
Jack Poulson
@poulson
Aug 23 2016 04:06
don't know
by the way, I recommend turning on two-factor auth.
Ryan H. Lewis
@rhl-
Aug 23 2016 04:07
eghhh
ill consider it
Jack Poulson
@poulson
Aug 23 2016 04:08
every major organization uses it for a reason
Ryan H. Lewis
@rhl-
Aug 23 2016 04:08
I know
that Https thing is BS
i dont have permission to push to El directly.
Jack Poulson
@poulson
Aug 23 2016 04:11
I can't either
do you mean you can't push through https?
Ryan H. Lewis
@rhl-
Aug 23 2016 04:12
when I use HTTPS it is asking for login in
Jack Poulson
@poulson
Aug 23 2016 04:12
same here
Ryan H. Lewis
@rhl-
Aug 23 2016 04:12
info*
this is nonsense, the git protocol works just fine
Jack Poulson
@poulson
Aug 23 2016 04:12
take it up with GitHub?
you can set up an ssh key as well I think
Ryan H. Lewis
@rhl-
Aug 23 2016 04:12
hm? I can do this on my own repo
Jack Poulson
@poulson
Aug 23 2016 04:13
oh, weird
let me look through the setting
Ryan H. Lewis
@rhl-
Aug 23 2016 04:13
also, you should setup Elemental as a protected branch
erm master
Jack Poulson
@poulson
Aug 23 2016 04:14
the https thing might have something to do with it being under an org rather than a user
Ryan H. Lewis
@rhl-
Aug 23 2016 04:14
when I said git protocol
i meant SSH
Jack Poulson
@poulson
Aug 23 2016 04:15
my guess is that you cloned using the https address: https://help.github.com/articles/why-is-git-always-asking-for-my-password/
Ryan H. Lewis
@rhl-
Aug 23 2016 04:15
oh
I see
nvm
Jack Poulson
@poulson
Aug 23 2016 04:15
you need to clone through the git address to have git commit privledges
Ryan H. Lewis
@rhl-
Aug 23 2016 04:15
when I said git protocol I meant git
and I needed to switch it to the ssh protocol
and now it works
Jack Poulson
@poulson
Aug 23 2016 04:15
:+1:
Ryan H. Lewis
@rhl-
Aug 23 2016 05:04
@poulson btw I spoke with Julio, the stanford student who was contributed to Boost.MPI in the past. He did mention that Boost requires each of its projects to have at least one maintainer. That doesn't mean they actively contribute, but, someone is supposed to respond to PR's
not sure why that one for Cart Create is just out there
but, its not necessarily dead, just sleeping
Jack Poulson
@poulson
Aug 23 2016 05:47
OK
by the way, it looks like there is some neat development going on in skylark recently
Jack Poulson
@poulson
Aug 23 2016 13:46
a user from the Julich supercomputing center in Germany has reported a crash in the D&C EVD
Yves Ineichen
@iff
Aug 23 2016 15:00
@poulson my first experiments wrt to a deb package:
diff --git a/CMakeLists.txt b/CMakeLists.txt
index dfac693..d4d33a7 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -16,7 +16,8 @@ cmake_minimum_required(VERSION 2.8.12)

 project(Elemental C CXX)
 set(EL_VERSION_MAJOR 0)
-set(EL_VERSION_MINOR 86-dev)
+set(EL_VERSION_MINOR 86)
+set(EL_VERSION_PATCH 0)

 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake")
 list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules")
@@ -629,6 +630,34 @@ set(CPACK_PACKAGE_VERSION_MINOR ${EL_VERSION_MINOR})
 set(CPACK_PACKAGE_DESCRIPTION_SUMMARY
   "Distributed-memory linear algebra and optimization")
 set(CPACK_PACKAGE_ICON "${CMAKE_SOURCE_DIR}/cmake/El.png")
+
+# Check the architecture (in case of debian distros)
+execute_process (
+  WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
+  COMMAND dpkg --print-architecture
+  RESULT_VARIABLE GET_DPKG_ARCH
+  OUTPUT_VARIABLE DPKG_ARCH OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+
+set(CPACK_GENERATOR "DEB")
+set(CPACK_DEBIAN_PACKAGE_MAINTAINER "Jack Poulson <p@google.com>")
+set(CPACK_DEBIAN_PACKAGE_VERSION_MAJOR ${EL_VERSION_MAJOR})
+set(CPACK_DEBIAN_PACKAGE_VERSION_MINOR ${EL_VERSION_MINOR})
+set(CPACK_DEBIAN_PACKAGE_VERSION_PATCH ${EL_VERSION_PATCH})
+set(CPACK_DEBIAN_PACKAGE_VERSION
+       "${EL_VERSION_MAJOR}.${EL_VERSION_MINOR}.${EL_VERSION_PATCH}")
+set(CPACK_SYSTEM_NAME "${DPKG_ARCH}")
+set(CPACK_DEBIAN_PACKAGE_ARCHITECTURE "${DPKG_ARCH}")
+set(CPACK_PACKAGE_FILE_NAME
+       "${CPACK_PACKAGE_NAME}_${CPACK_DEBIAN_PACKAGE_VERSION}_${CPACK_DEBIAN_PACKAGE_ARCHITECTURE}")
+
+set(CPACK_DEBIAN_PACKAGE_DEPENDS "libc6 (>= 2.3.1-6), libgcc1 (>= 1:3.4.2-12), libgomp1, libopenblas-dev, liblapack-dev, python-numpy, libmetis-dev")
+if(HAVE_OMPI)
+  set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, openmpi-bin, libopenmpi-dev")
+else()
+  set(CPACK_DEBIAN_PACKAGE_DEPENDS "${CPACK_DEBIAN_PACKAGE_DEPENDS}, mpich, libmpich-dev")
+endif()
+
 include(CPack)

 # ProjectConfig
diff --git a/cmake/configure_files/environment.py.in b/cmake/configure_files/environment.py.in
index 88ddff9..39c001f 100644
--- a/cmake/configure_files/environment.py.in
+++ b/cmake/configure_files/environment.py.in
@@ -10,7 +10,7 @@ import sys, ctypes
 import numpy as np
 from ctypes import pythonapi

-lib = ctypes.cdll.LoadLibrary("@CMAKE_INSTALL_PREFIX@/lib/@CMAKE_SHARED_LIBRARY_PREFIX@El@CMAKE_SHARED_LIBRARY_SUFFIX@")
+lib = ctypes.cdll.LoadLibrary("@CMAKE_SHARED_LIBRARY_PREFIX@El@CMAKE_SHARED_LIBRARY_SUFFIX@")

 # Environment
 # ===========
Jack Poulson
@poulson
Aug 23 2016 15:00
ah, I didn't know this could be done with CPack!
should we go ahead and merge this?
Yves Ineichen
@iff
Aug 23 2016 15:02
well there are some things missing (as I pointed out before)
Jack Poulson
@poulson
Aug 23 2016 15:03
e.g., ParMETIS?
and ScaLAPACK?
Yves Ineichen
@iff
Aug 23 2016 15:03
and I think @rhl- does not like the CPack approach (and I agree its not nice, but at least provides a fast way to package)
jep ScaLAPACK
Jack Poulson
@poulson
Aug 23 2016 15:04
having a Debian package is better than not having one
once one is generated I think the hard work has been done; translating between the equivalent of a spec file and CPack probably won't be hard
Yves Ineichen
@iff
Aug 23 2016 15:05
cmake -DCMAKE_INSTALL_PREFIX=./install -DEL_USE_64BIT_INTS=ON \
-DEL_HAVE_QUADMATH=OFF -DCMAKE_BUILD_TYPE=Release -DEL_HYBRID=ON \
-DBUILD_SHARED_LIBS=ON -DMATH_LIBS="-llapack -lopenblas -lm" \
-DINSTALL_PYTHON_PACKAGE=ON -DEL_DISABLE_VALGRIND=ON -DEL_DISABLE_PARMETIS=ON \
-DEL_DISABLE_SCALAPACK=ON -DCMAKE_RELEASE_POSTFIX="$MPI_SUFFIX" \
-DCMAKE_EXECUTABLE_SUFFIX="$MPI_SUFFIX" ../
make package -j 7
is how I build the package (working on top of commit 71fce6e65c065e0b2f993435ca7524db7f54fa6f)
(you see everything is disabled)
Jack Poulson
@poulson
Aug 23 2016 15:05
ah, thanks, having that command is extremely helpful
Yves Ineichen
@iff
Aug 23 2016 15:06
Take a look and let me know what you think should be included for a first "version"...
Jack Poulson
@poulson
Aug 23 2016 15:08
as in the Elemental release version, such as 0.85, 0.86, etc.?
Yves Ineichen
@iff
Aug 23 2016 15:09
no something that you would accept in a pull request
Jack Poulson
@poulson
Aug 23 2016 15:14
ah, thanks for clarifying
Jack Poulson
@poulson
Aug 23 2016 15:22
FYI, I narrowed the D&C bug down: elemental/Elemental#166
I have to run now but will be able to continue debugging again in about twelve hours
Ryan H. Lewis
@rhl-
Aug 23 2016 16:28
I saw, same here.