hkaiser changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | stellar.cct.lsu.edu | HPX: A cure for performance impaired parallel applications | github.com/STEllAR-GROUP/hpx | Buildbot: http://rostam.cct.lsu.edu/ | Log: http://irclog.cct.lsu.edu/ | GSoC2018: https://wp.me/p4pxJf-k1
eschnett has joined #ste||ar
twwright_ has joined #ste||ar
twwright_ has quit [Quit: twwright_]
nikunj has quit [Quit: Leaving]
diehlpk has joined #ste||ar
twwright_ has joined #ste||ar
twwright_ has quit [Client Quit]
twwright_ has joined #ste||ar
twwright_ has quit [Client Quit]
diehlpk has quit [Ping timeout: 268 seconds]
hkaiser has quit [Quit: bye]
diehlpk has joined #ste||ar
K-ballo has quit [Quit: K-ballo]
rtohid has quit [Ping timeout: 240 seconds]
diehlpk has quit [Ping timeout: 276 seconds]
twwright_ has joined #ste||ar
twwright_ has quit [Quit: twwright_]
nanashi55 has quit [Ping timeout: 240 seconds]
nanashi55 has joined #ste||ar
Anushi1998 has joined #ste||ar
Anushi1998 has quit [Read error: Connection reset by peer]
david_pfander has joined #ste||ar
mcopik has joined #ste||ar
mcopik_ has joined #ste||ar
zura has joined #ste||ar
hkaiser has joined #ste||ar
mcopik_ has quit [Ping timeout: 245 seconds]
mcopik has quit [Ping timeout: 245 seconds]
mcopik has joined #ste||ar
jbjnr has quit [Ping timeout: 240 seconds]
jbjnr_ has quit [Ping timeout: 245 seconds]
K-ballo has joined #ste||ar
Chewbakka has joined #ste||ar
hkaiser has quit [Quit: bye]
<Chewbakka> Hey, is there a special and elegant construct in HPX, which has an equivalent function like "MPI_Allreduce" e.g. given the scenario one wants to calculate the dot product of two vectors, and every node needs a value from everybody in order to compute the dot product. Currently, we use a latch and register a VectorClient in order to gather all intermediate values, but we have the feeling that is not very elegant and doesn't c
zura has quit [Ping timeout: 276 seconds]
hkaiser has joined #ste||ar
eschnett has quit [Quit: eschnett]
<Chewbakka> Hey, is there a special and elegant construct in HPX, which has an equivalent function like "MPI_Allreduce" e.g. given the scenario one wants to calculate the dot product of two vectors, and every node needs a value from everybody in order to compute the dot product.
<Chewbakka> Currently, we use a latch and register a VectorClient in order to gather all intermediate values, but we have the feeling that is not very elegant and doesn't conform to HPX ( https://github.com/JeannedArk/smvm/blob/9d91f27b98b2041667a2efb332291bca9e379db9/src/Vector.cpp#L68 )
mcopik has quit [Ping timeout: 276 seconds]
zura has joined #ste||ar
<hkaiser> Chewbakka: there is no allreduce in hpx, but we have boradcast and gather - allreduce could be implemented in a similar way
<hkaiser> we also have reduce, iirc
<Chewbakka> thank you
<hkaiser> Chewbakka: contributions are most welcome
<hkaiser> we don't have allreduce mainly because nobody has felt the need to implement it ;-)
<hkaiser> yes, that's th eone
<Chewbakka> I will consider this and the GSoC sounds pretty interesting, but until such point I need to get more familiar with the framework :)
<hkaiser> Chewbakka: sure
<hkaiser> the existing facilities (reduce, gather, etc.) are built solely on top of existing hpx features
<hkaiser> no surprises there
<Chewbakka> One more question: we have this sparse-matrix-vector-multiplication application and we have the behavior that the application runs fine with --hpx:thread 1, but doesn't run properly properly without this flag or more number of threads, though we don't use any intra-node parallelism.
<hkaiser> Chewbakka: difficult to tell, sounds like a race somewhere
mcopik has joined #ste||ar
<Chewbakka> how is that possible if we do not use local concurrency?
<hkaiser> I'd assume you use hpx actions, do you?
<Chewbakka> right now, we only use a latch to sync the localities
mbremer has joined #ste||ar
<hkaiser> a latch uses actions
<hkaiser> but as said, it's difficult to tell without seeing what's going on
mcopik has quit [Ping timeout: 276 seconds]
mcopik has joined #ste||ar
daissgr has joined #ste||ar
nanashi55 has quit [Ping timeout: 264 seconds]
nanashi55 has joined #ste||ar
zura has quit [Ping timeout: 240 seconds]
rtohid has joined #ste||ar
hkaiser has quit [Quit: bye]
nikunj has joined #ste||ar
rtohid has left #ste||ar [#ste||ar]
rod_ has joined #ste||ar
mcopik has quit [Ping timeout: 265 seconds]
Chewbakka has quit [Quit: Leaving...]
eschnett has joined #ste||ar
jaafar has quit [Ping timeout: 240 seconds]
hkaiser has joined #ste||ar
galabc has joined #ste||ar
ASamir has joined #ste||ar
Samir_ has joined #ste||ar
ASamir has quit [Ping timeout: 260 seconds]
Samir_ has quit [Quit: Leaving]
daissgr has quit [Quit: WeeChat 1.4]
<heller___> libfabric over tcp works splendid now
<heller___> Did a full system run on my arm cluster today
<heller___> (128 cores)
heller___ is now known as heller
<heller> Everything worked out of the box. Pretty nice
<hkaiser> heller: even bootstrapping?
<heller> No, that was done over asio
<hkaiser> k
<heller> But that's coming soon
<heller> I know how to do it...
<heller> If one of you has interest to do some experiments there... Give me your user ID and a ssh key you use
<heller> One board has a 8 core arm a53
<heller> BTW, I've been thinking about that lazy task graph building and phylanx
<heller> Especially regarding the make_ready future overhead
<heller> When looking at the ast, don't you know how many futures at maximum you'd need?
<K-ballo> is that a briefcase?
<heller> Suitecase, yeah
<K-ballo> that's convenient
<hkaiser> heller: it might be possible to find out - what do you have in mind?
<heller> hkaiser: allocation the shared states you need in a single allocation
<heller> In general, I find these future graphs more and more appealing
<heller> Especially for combining different future types... Tons of possibilities
<hkaiser> indeed
zura has joined #ste||ar
zura has quit [Client Quit]
tianyi has joined #ste||ar
<nikunj> zao: yt?
<zao> Kind of.
<nikunj> Do you know where cmake functions for hpx are?
<nikunj> I want to add another parameter to cmake of HPX_WITH_MAIN so that cmake add extra CXX flags for it
<nikunj> diehlpk_work, thanks :)
<diehlpk_work> I think there you will find all cmake related stuff
<nikunj> diehlpk_work, I was searching there itself, but there were many files, so I thought I'd ask. I'll continue looking :)
<K-ballo> configuration options are more likely to be found in the root cmake lists file
<nikunj> I think HPX_AddCompileFlag is the one I'm looking for
<K-ballo> you'll note that no HPX_WITH option is specified there
<nikunj> hmm
<nikunj> K-ballo, a little help. I want to add HPX_WITH_MAIN option and add specific CXX flags with it (at linking time)
<K-ballo> look for uses of hpx_option(HPX_WITH_...
<K-ballo> most would be in the root CMakeLists.txt file
<nikunj> ohk. But these CXX flags are for linking time only, don't you think it should be added for HPX_AddLinkFlag in cmake directory?
<K-ballo> HPX_AddLinkFlag defines the functions that deals with adding linker flags to hpx targets
<K-ballo> they do not introduce configuration options
<nikunj> I see
<nikunj> I'll delve deeper then
<K-ballo> look for uses of hpx_option(HPX_WITH_..., particularly the ones in the root CMakeLists.txt file
<nikunj> ok thanks :)
david_pfander1 has joined #ste||ar
david_pfander has quit [Remote host closed the connection]
david_pfander1 is now known as david_pfander
galabc has quit [Quit: Leaving]
<heller> nikunj: also, I guess there's a difference between linking libhpx, any other library using hpx and an application striving to use your new technique
<heller> nikunj: as such, I propose to not make it a global option but add that functionality to hpx_setup_target
<nikunj> heller: ok
<heller> Fun fact: shared libraries are executable. Once you execute them though, they segfault because main does not exist
<nikunj> heller: I'll be placing compiled code (object file) into the lib folder to link with. My current thought process is to create a wrapper file in src folder which would then be compiled (but not linked). Then through one of the options link the .o file with the file user is working with.
<nikunj> *wrapper.cpp
<nikunj> In this example I link test.cpp with wrap_libc.o to produce the executable
<heller> Ok
<heller> Make that a static library
<heller> Which is essentially a archive of object files
<heller> And make sure it's being installed
<nikunj> heller: ohk
<nikunj> But it has to link with any file that has hpx_main.hpp
<heller> The nice thing about making it an archive: you can use cmake magic so that as soon as you're archive/object is a target dependency, your special flags can propagate
<heller> Aha
<heller> Hmmm
<heller> And that's impossible to know upfront
<nikunj> aah! So I could add it as a target dependency
<heller> Yes
<nikunj> Then I can surely make it happen this way.
<nikunj> I will only have to add a target dependency everywhere
<nikunj> But this would mean I will have to change a lot of code in cmakelists
<nikunj> I would personally first try to test my code with a few examples before integrating it directly
<heller> Sure
<heller> That's how you'd do it
<heller> Start with one
<heller> Do a pr, then we discuss things
<nikunj> I can integrate one right now, if you want to take a look
<nikunj> But my code is very basic
<nikunj> So I do not know if there's any initialization sequencing fiasco problems
<nikunj> I'll integrate now, so that you can take a look
<heller> Yes
<heller> And make it such that it gets tested
<heller> Hpx should be fine with static init order
hkaiser has quit [Read error: Connection reset by peer]
hkaiser has joined #ste||ar
hkaiser has quit [Quit: bye]
<nikunj> just run the makefile to create the executable
<nikunj> and run to see the result
<nikunj> heller: I have sent you an email updating you with my implementations. It is brief so if you want details on anything, I will explain it in detail.
eschnett has quit [Quit: eschnett]
akheir has quit [Quit: Leaving]
jaafar has joined #ste||ar
hkaiser has joined #ste||ar
rod_ has left #ste||ar ["Leaving"]
diehlpk_mobile has joined #ste||ar
diehlpk_mobile2 has joined #ste||ar
diehlpk_mobile has quit [Read error: Connection reset by peer]
diehlpk_mobile2 has quit [Ping timeout: 248 seconds]
diehlpk has joined #ste||ar