K-ballo 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/
nanmiao has quit [Quit: Connection closed]
K-ballo has quit [Quit: K-ballo]
surya69 has joined #ste||ar
<surya69> I have cmake version 3.16.3 ,Am id good to go for installing hpx
<zao> Probably.
<zao> I think there's a table of minimum and required versions of dependencies and tools in the documentation.
<zao> Best way to find out is to try :D
diehlpk_work has quit [Remote host closed the connection]
hkaiser has quit [Quit: bye]
deepika_birthare has joined #ste||ar
deepika_birthare has quit [Quit: Connection closed]
deepika_birthare has joined #ste||ar
<deepika_birthare> Hello Everyone. I want to contribute to Stellar Project for gsoc 2021. I'm interested in UI Improvements for Performance Visualization, particularly.
<deepika_birthare> Is this the right place to discuss my queries?
<srinivasyadav227> yes
<srinivasyadav227> deepika_birthare: welcome and yes this is the place to discuss abt stellar ;)
<deepika_birthare> ok, thanks.
surya69 has quit [Ping timeout: 240 seconds]
deepika_birthare has quit [Quit: Connection closed]
<jedi18[m]> What's is_indirect_callable for? I don't need to add it to the tag_fallback_invoke overloads right?
<jedi18[m]> Do I need to add the is_indirect_callable only to the overload taking in an ExPolicy and Rng? Or all of them?
<gonidelis[m]> jedi18: expolicy + F(unction) / Predicate
<jedi18[m]> Oh ok so you mean only to the overloads which take in an execution policy and a predicate?
<gonidelis[m]> yes
<gonidelis[m]> check my older overloads to see what i replace that with (if i do. i think i don't)
<gonidelis[m]> i am actually 80% percent now that i don't
<gonidelis[m]> check any algo that takes a predicate
<gonidelis[m]> hint: the non-container algos seize to support projections (we are going full standard comforming here) and only the ranges ones do now ;)
<jedi18[m]> Ohh ok thanks, I was getting some bugs which was due to something else but thought it was related to this
<jedi18[m]> Are there no segmented algorithm tests for min_element/max_element/minmax_element?
<srinivasyadav227> can't I pass **(int& i)** on line 17, I want to take each element in range as ref
<zao> "The signature of this predicate should be equivalent to: <ignored> pred(const Type &a);"
<zao> Bah, Google giving me ancient versions of HPX docs, but still :)
<zao> (still holds for current HPX, at least for the non-range algorithm)
<srinivasyadav227> I want to change the value
<srinivasyadav227> I mean if I pass const Type &a, its read only right
<srinivasyadav227> zao: btw, thanks for "2>&1 | tee compile.log", it helped me a lot! ;)
<zao> Non-ranges has a hpx::for_loop, which provides an iterator to the function object. Not sure if there's a ranges counterpart for that.
<zao> Oh wait, documentation was just sorted weird.
<zao> `for_each` takes the dereferenced element by const reference, while a `for_loop` takes an iterator which the function may dereference itself.
<zao> The signature fore the function object is likely directly inherited from the standard algorithm - see https://en.cppreference.com/w/cpp/algorithm/for_each
<srinivasyadav227> i saw the same example, there std::for_each(nums.begin(), nums.end(), []**(int &n)**{ n++; });
<srinivasyadav227> that int was taken as ref
<zao> (note that your highlighting with asterisks does not render at all in IRC)
<zao> An example, where?
<zao> Ah, in cppreference?
<srinivasyadav227> <zao "Ah, in cppreference?"> yes
<zao> Well, did you try the HPX algorithm, and how did it fare?
<srinivasyadav227> no..i didnt try that yet
<zao> I assumed from your initial question that there was a problem :)
<srinivasyadav227> yes, i wasnt able to use int& on lamda
<srinivasyadav227> for hpx::ranges::for_each
<zao> Note that the non-ranges implementation says "If the type of first satisfies the requirements of a mutable iterator, f may apply non-constant functions through the dereferenced iterator."
<zao> As for the documentation for the ranges implementation, they're largely nonsensical as they seem to document the wrong algorithm completely, talking still about iterators and sentinels.
<zao> Or again, apparently I might not be able to read and ranges:: contains both range and non-range algorithms?
<zao> Who the heck made this? :D
<zao> srinivasyadav227: This example seems to be using the overload with an explicit executor type and taking references just fine: https://github.com/STEllAR-GROUP/hpx/blob/master/examples/quickstart/partitioned_vector_spmd_foreach.cpp#L167-L169
<zao> Execution policy, but still.
<srinivasyadav227> oh, yea, but i don't know whats wrong with mine, yea i will try again if i could catch anything
<zao> I can't trust the documentation as it seems a bit weird...
<zao> What error do you get, and does it change if you specify a policy?
<zao> srinivasyadav227: Note also that your range may not be over mutable objects in the first place.
<srinivasyadav227> no.. its talking about tag_fallback_invoke
<srinivasyadav227> shall i paste the gist?
<zao> Not immediately familiar with boost::irange, but I'd guess that it's returning values or const refs.
<srinivasyadav227> oops, yea..its returning lvalue ref
<srinivasyadav227> sorry, thanks ;)
<zao> hah
<zao> Happy to help, even though I probably sowed a lot of confusion along the way :D
<srinivasyadav227> it was a bit silly from my side, ;) but tqsm
<jedi18[m]> I can't find tests for the segmented overloads of the minmax algorithms, will I have to add tests?
K-ballo has joined #ste||ar
Siddhant has joined #ste||ar
Siddhant has quit [Client Quit]
hkaiser has joined #ste||ar
<srinivasyadav227> hkaiser: i have edited datapar/transform_loop.hpp (#5240) which was previously giving build errors, now its building fine and i have installed locally.
<hkaiser> nice!
<srinivasyadav227> i did small performace testing against Vc and openmp
<hkaiser> it's much worse, is it?
<srinivasyadav227> it was better than sequential, but no where near omp simd
<hkaiser> nod
<hkaiser> is this a release build?
<srinivasyadav227> you mean hpx 1.6?
<hkaiser> your executable, did you build it in release or debug?
<hkaiser> what's your CMAKE_BUILD_TYPE?
<srinivasyadav227> i dont know about that
<srinivasyadav227> i mean i am not familiar with that
<srinivasyadav227> i will check out, should it be release or debug?
<hkaiser> what does it print if you add --hpx:info to the command line?
<hkaiser> it has to be release if you do performance measurements
<srinivasyadav227> where should i add --hpx:info ? to cmake ?
<hkaiser> no, your application
<srinivasyadav227> oh got it one min
<hkaiser> ahh, it's --hpx:version, then - you you retry, please?
<srinivasyadav227> yea sure
<srinivasyadav227> its release mode
<hkaiser> ok
<hkaiser> so it's as I remember, the compiler can't optimize it sufficiently to get a real speedup :/
<srinivasyadav227> so, performance i low right?
<srinivasyadav227> ohh
<hkaiser> yes, it's barely faster compared to the seq case
<hkaiser> and the omp version is 4 times faster
<srinivasyadav227> yea, i have tested with various size inputs like 1 << 10, 1 << 20, 1 << 30 but mostly speedup was only 20% more
<hkaiser> right
<srinivasyadav227> we should adapt new ones i guess ;)
<hkaiser> this is where we need to simplify the overall code such that the compiler can actually optimize things properly
<hkaiser> one step at a time, though
<hkaiser> let's get things disentangled first, then we should adapt to the gcc simd types
<srinivasyadav227> ok, i will again check with direct Vc invocation
<hkaiser> srinivasyadav227: yes, might be a good test, use vc directly and compare its performance
<srinivasyadav227> ok ;)
hkaiser has quit [Read error: Connection reset by peer]
hkaiser has joined #ste||ar
<jedi18[m]> <jedi18[m] "I can't find tests for the segme"> Could someone please respond to this?
shubh has joined #ste||ar
<shubh> Hello Everyone
<srinivasyadav227> shubh: Hello!
<hkaiser> hey shubh, welcome
<shubh> Thank You hkaiser
<gnikunj[m]> hkaiser: should I look into execution space implementation now? (or would you really want me to hold my horses ;-) )
<gnikunj[m]> asking coz I'm bored and I'll either work on execution space or take a 2-3d vacation from using laptop :P
<hkaiser> gnikunj[m]: could we get the current stuff into hpx-kokkos? also, I'd like to see some perf analysis on the current implementation
<hkaiser> bored is not good ;-)
<gnikunj[m]> we should do a call with ms and see. the returning executor is a worthwhile feature that can make it back to hpx-kokkos.
<shubh> you are bored in starting phase
<hkaiser> gnikunj[m]: yes
<gnikunj[m]> Also, what sort of examples would you want me to implement for perf analysis?
<hkaiser> the same as we've used for the paper, just running on the device
<gnikunj[m]> so stencil + artificial
<hkaiser> nod
<gnikunj[m]> got it. Shouldn't be too difficult right now. Let me see what I can do ;-)
<hkaiser> this would still require some work, but would be worthwhile as it could be turned into a followon paper
<hkaiser> shubh: gnikunj[m] is working on things for a while now (2 or 3 years)
<gnikunj[m]> right. I'm thinking on how to get stencil implemented right now. As it stands, artificial one's should be simple enough to change the executor to get it working.
<gnikunj[m]> close to 3 years now :D
<gnikunj[m]> hkaiser: alright then. You have me boarded on some perf analysis. Should we report those in the next meeting though?
<srinivasyadav227> gnikunj[m]: wow!, thats really great ;)
<shubh> Okay Sorry gnikunj[m] then it make senseXD
<hkaiser> whatever we have ready by then
<gnikunj[m]> (they might increase their expectations)
<hkaiser> nah
<srinivasyadav227> hkaiser: theres no documentation for Vc?
<hkaiser> so far it's aligned with our interests, so it's ok
<gnikunj[m]> whatever you say captain ;-_
<gnikunj[m]> *;-)
<hkaiser> srinivasyadav227: https://vcdevel.github.io/Vc-1.4.1/
<srinivasyadav227> oh shit, i was struggling since one hour, going through their source code
<gonidelis[m]> jedi18 late reply sorry
<gonidelis[m]> I don't think we need segmented tests
<jedi18[m]> Oh ok thanks, then I guess the PR is almost ready, I just need to add those sentinel tests
<gonidelis[m]> ;) This are more of a custom tests of mine: that means you will probably have to figure out a test case of yours according to the algo functionality
<gonidelis[m]> but the structure is the same
<gonidelis[m]> (don't forget to add iter_sent.hpp utility)
<gonidelis[m]> jedi18: have you made the pr? i cannot find it on our list
<jedi18[m]> No no, I haven't yet
<gonidelis[m]> if not, you could open it up just to make sure CI is warm
<gonidelis[m]> you commit addiotional changes then
<jedi18[m]> I need to find an example to run the segmented overloads to see if it compiles right
<gonidelis[m]> plus we will have some more time for review
<gonidelis[m]> segmented example?
<jedi18[m]> Oh right ok, I'll create the PR soon
<gonidelis[m]> thanks!!!
<gonidelis[m]> :D
<jedi18[m]> Yeah some example of the code that I can run to test it
<jedi18[m]> Btw I notice there's a file called minmax_element_performance but I can't find the corresponding project to be able to run it
<hkaiser> jedi18[m]: we should have segmented tests for all the supported algorithms
<hkaiser> those should still work after your changes
<jedi18[m]> Yeah but none of the segmented tests use minmax
<hkaiser> ok, do those algorithms actually have segmented implementations?
<hkaiser> ahh
<hkaiser> so we were lazy ;-)
<hkaiser> feel free to create tests, then
<jedi18[m]> I've updated it to use tag_invoke, just need to test it now
<hkaiser> would creating tests be ok for you?
<jedi18[m]> Would I be able to figure it out by looking at the other tests?
<hkaiser> just based on the existing ones
<jedi18[m]> Well, wouldn't hurt to try :D
<hkaiser> good attitude ;-)
<srinivasyadav227> any reasons why "auto start = std::chrono::high_resolution_clock::now();" would be failing? its showing me template argument deduction failed
<hkaiser> why should it fail?
<srinivasyadav227> /usr/include/c++/9/ostream:691:5: note: template argument deduction/substitution failed:
<hkaiser> not on that line, though - I'd assume
<srinivasyadav227> aah, ostream overload!
<shubh> Please tell me how I can proceed
<srinivasyadav227> i was able to use with hpx::chrono, but the same gave me error with std::chrono,, thanks to hpx ;)
<hkaiser> srinivasyadav227: no idea what your problem is
<hkaiser> shubh: what do you mean?
<srinivasyadav227> hkaiser: got it, any way, thanks!
<shubh> srinivasyadav227  am new here and I want to work on GSoC project
<shubh> I*
<hkaiser> shubh: sure - welcome
<shubh> Okay
<shubh> So I start working on project proposal
<hkaiser> shubh: well first you need to decide what you want to work on
<jedi18[m]> Which would you recommend given the PRs I've already made and am working on?
<hkaiser> jedi18[m]: I think shubh said he was interested in the shift algorithms, but from my end, anything would be fine ;-)
<hkaiser> sorry, gotta run now
hkaiser has quit [Quit: bye]
<shubh> yup
<jedi18[m]> <shubh "yup"> Shoot, you beat me to it :D. Ok then I'll try ranges one for now, please do let me know if you decide to change your idea
<shubh> No, I have already talked to Hkaiser regarding Add shift_left and shift_right algorithms project.
<shubh> So, I am not interested in changing my project idea.
<jedi18[m]> Oh ok sure np
Ri2Raj has joined #ste||ar
shubh has left #ste||ar [#ste||ar]
<jedi18[m]> gonidelis: I've created the draft PR https://github.com/STEllAR-GROUP/hpx/pull/5241
<Ri2Raj> Hello everyone, myself Rituraj Dutta pursuing my Btech in Information Technology from Gauhati University of Science and Technology and currently I'm in my second year and I'm interested in the project mentioned in the list "To Implement Iterative Solvers". I've a decent knowledge in C++ mainly C++11/14 as I have been using it since high school. I
<Ri2Raj> also some knowledge on parallel programming with CUDA ( only the basics though). So, basically I'm new in this field of HPX. It would be of great hep from the community for little bit of help and support.
<Ri2Raj> *help
Ri2Raj has quit [Quit: Connection closed]
Ri2Raj has joined #ste||ar
<gonidelis[m]> Ri2Raj: wellcome
<gonidelis[m]> jedi18: great!!
<gonidelis[m]> welcome^^
<gonidelis[m]> don't forget the docs ;)
<Ri2Raj> Thanks gonidelis[m]
<jedi18[m]> <gonidelis[m] "don't forget the docs ;)"> Thanks, I'll add it in the next commit
Ri2Raj61 has joined #ste||ar
Ri2Raj61 has quit [Client Quit]
Ri2Raj has quit [Quit: Connection closed]
hkaiser has joined #ste||ar
jehelset has quit [Remote host closed the connection]