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/ | GSoC: https://github.com/STEllAR-GROUP/hpx/wiki/Google-Summer-of-Code-%28GSoC%29-2020
weilewei has quit [Remote host closed the connection]
rtohid has quit [Remote host closed the connection]
gonidelis[m] has quit [Ping timeout: 265 seconds]
gonidelis[m] has joined #ste||ar
nan11 has joined #ste||ar
sayef_ has joined #ste||ar
sayefsakin has quit [Ping timeout: 260 seconds]
weilewei has joined #ste||ar
K-ballo has left #ste||ar [#ste||ar]
K-ballo has joined #ste||ar
bita_ has quit [Ping timeout: 256 seconds]
sayefsakin has joined #ste||ar
sayef_ has quit [Ping timeout: 246 seconds]
sayef_ has joined #ste||ar
sayefsakin has quit [Ping timeout: 264 seconds]
nikunj97 has joined #ste||ar
hkaiser has quit [Quit: bye]
diehlpk_work has quit [Remote host closed the connection]
bita_ has joined #ste||ar
nikunj97 has quit [Ping timeout: 256 seconds]
nikunj97 has joined #ste||ar
Yorlik has quit [Ping timeout: 272 seconds]
bita_ has quit [Ping timeout: 260 seconds]
sayef_ has quit [Read error: Connection reset by peer]
sayef_ has joined #ste||ar
parsa has quit [Quit: Free ZNC ~ Powered by LunarBNC: https://LunarBNC.net]
sayef_ has quit [Ping timeout: 256 seconds]
nan11 has quit [Remote host closed the connection]
parsa has joined #ste||ar
nikunj97 has quit [Ping timeout: 265 seconds]
Yorlik has joined #ste||ar
weilewei has quit [Remote host closed the connection]
hkaiser has joined #ste||ar
weilewei has joined #ste||ar
weilewei has quit [Remote host closed the connection]
weilewei has joined #ste||ar
<gonidelis[m]> hkaiser: Updated the PR. Is it ok now?
<hkaiser> gonidelis[m]: will look, thanks!
<hkaiser> gonidelis[m]: LGTM
<gonidelis[m]> great. Thanks...i am working on `is_sentinel_for` now...
<weilewei> it seems server is down: http://stellar-group.org/
<ms[m]> hkaiser: akheir1? ^
<hkaiser> weilewei: yes, I contacted the provider, have not heard back yet
<zao> I love the SAN for that server.
<ms[m]> hkaiser and others no kokkos meeting again, but next time we'll do a bit more planning to kick our butts to move things forward
<hkaiser> zao: it's a big provider
<weilewei> hkaiser thanks, just checking
<hkaiser> ms[m]: ok, see you in a bit, then
<hkaiser> weilewei: I hope it will be up again soon
<ms[m]> I don't know what san is but zao are you referring to webmaster@stellar-group.crochetcutedolls.com?
<hkaiser> lol
<hkaiser> that's my wife's webpage that ended up being the main domain on that account ;-)
<zao> ms[m]: Subject Alternate Names for the certificate, but yeah.
<ms[m]> :D
<zao> I guess it's the subject, not the SAN, but hey.
<hkaiser> ms[m]: things in Phylanx failed
<ms[m]> ooh, ok, thanks
<ms[m]> then I'll try to conjure some sort of test for it in hpx itself
<heller1> No meeting today?
<ms[m]> meeting everyone: https://lsu.zoom.us/j/335605227
<ms[m]> rori_[m]: heller hkaiser jbjnr
nickrobison has joined #ste||ar
<nickrobison> Good morning folks! Does anyone have experience working with the HPX distributed maps? Are they initialized in the same way as the partitioned vectors? I'm running into some strange compile issues.
<hkaiser> nickrobison: the distributed map is not really finished, sorry
<nickrobison> Good to know. Would a bug report be helpful?
<hkaiser> it's half-way done only...
<hkaiser> absolutely!
<nickrobison> Consider it done. Also, thank you all for a fantastic project!
<hkaiser> nickrobison: most welcome!
diehlpk_work has joined #ste||ar
akheir has joined #ste||ar
nan111 has joined #ste||ar
karame_ has joined #ste||ar
rtohid has joined #ste||ar
nickrobison has quit [Ping timeout: 245 seconds]
nikunj97 has joined #ste||ar
nikunj97 has quit [Ping timeout: 258 seconds]
<gonidelis[m]> How do I apply editorconfig on my code?
<heller1> ms: almost
<heller1> I was thinking about this: https://chromeperf.appspot.com/
<heller1> But this mako might be a start
<heller1> Especially since you're able to query the data
<ms[m]> heller: thanks!
<zao> gonidelis[m]: Some IDEs have plugins or extensions to honor EditorConfig, some support it out of the box.
<zao> Much like ClangFormat integration.
<gonidelis[m]> Do the configurations apply on their own after installing editorconfig on my editor? Or do I have to type some command??
<gonidelis[m]> (I use Sublime if that helps)
<zao> It should autoconfigure the indentation width, indentation type, and line ending flavour.
<gonidelis[m]> ok great... I think that 's what I want for the time being
<zao> There'
<zao> For ST there's plugins, it seems.
<zao> Use PackageControl to grab something like this: https://packagecontrol.io/packages/EditorConfig
<gonidelis[m]> zao: great! thanks
bita_ has joined #ste||ar
<gonidelis[m]> I am really trying to understand that `has_foo` example
<gonidelis[m]> In this expression `void_t<decltype(std::declval<T&>().foo())` why is `&` necessary? (rvalue ref maybe?)
<gonidelis[m]> And a more general question: In the whole example the main idea is that we create two occurancies of `has_foo` in order to check which one compiles (and thus which one has `foo`). But why isn't `class=void` needed in the second occurance? And why does the second `has_foo` need the `<>` ?
<zao> gonidelis[m]: It might be helpful to read up or experiment on what kind of thing you get from declval<T>; is it considered a temporary?
<gonidelis[m]> I know that sth like `std::declval<int>()` would do the job... right?
<K-ballo> std::declval<int>() is an rvalue, std::declval<int&>() is an lvalue
<K-ballo> this particular `has_foo` trait seems to be detecting only whether a type has a `foo` nullary member function callable on an lvalue instance
<K-ballo> gonidelis[m]: consider `std::declval<int>() = 3` vs `std::declval<int&>() = 3`, one of those does not compile
<K-ballo> the need for "two" classes and the defaulted void is the crux of class sfinae, maybe re-read the article or try another
<gonidelis[m]> ok just on question. When I declare sth like `class my_obj;`, what value is `my_obj`: rvalue or lvalue?
<gonidelis[m]> (or xvalue maybe????_
<gonidelis[m]> )
<zao> In the good old days, lvalues and rvalues were named from which side of an assignment they could be on.
<zao> lvalues can be on the left side of an op=, rvalues cannot.
<zao> An lvalue is a "nameable location", kind of.
<K-ballo> classes aren't values, and to make it more confusing lvalue and rvalue is not a property of values but of expressions
<K-ballo> my_obj x;
<K-ballo> x.foo(); // lvalue
<K-ballo> std::move(x).foo() // xvalue
<K-ballo> my_obj().foo() // prvalue
<gonidelis[m]> "...to make it more confusing..." ;p
<zao> I stopped caring when C++11 came and ruined everything :D
<gonidelis[m]> thank you guys!
akheir1 has joined #ste||ar
akheir has quit [Ping timeout: 246 seconds]
K-ballo has quit [Ping timeout: 256 seconds]
K-ballo has joined #ste||ar
nikunj97 has joined #ste||ar
alireza has joined #ste||ar
akheir1 has quit [Ping timeout: 246 seconds]
K-ballo has quit [Ping timeout: 272 seconds]
K-ballo has joined #ste||ar
K-ballo1 has joined #ste||ar
K-ballo has quit [Ping timeout: 256 seconds]
K-ballo1 is now known as K-ballo
K-ballo1 has joined #ste||ar
K-ballo has quit [Ping timeout: 264 seconds]
K-ballo1 is now known as K-ballo
alireza has quit [Quit: Leaving]
<Yorlik> hkaiser: yt ?
<hkaiser> Yorlik: here
<Yorlik> I have a very strange bug in a thread_local initialization, since i added a spinlock to its initialization code
<hkaiser> uhh - deadlock?
<Yorlik> A thread_local spuriously becomes nullptr, and I guess there is a task migration in the middle of the initialization a possible cause
<hkaiser> why do you need a spinlock while initializing a thread_local?
<Yorlik> to protect a map I'm writing the value to, which maps OS thread IDs to pools
<hkaiser> you need to use a std::mutex or similar in that case
<Yorlik> I should do that. Good Idea
<hkaiser> Yorlik: but it sounds fishy to me that you need to store a hpx thread-id into a map during initialization of a thread_local
<Yorlik> OS thread ID, not hpx
<hkaiser> ok
<hkaiser> slightly better, but still murky ;-)
<weilewei> libcds also uses OS thread id... which needs to be replaced by hpx thread id, just saying
<Yorlik> I use it to poll instrumentation data, like engine count per thread and stuff
<hkaiser> so you access a thread_local from a different thread?
<hkaiser> weilewei: that's not an issue
<weilewei> ok...
<hkaiser> Yorlik: ^^
<Yorlik> Doing some checks .. moment
nikunj97 has quit [Ping timeout: 258 seconds]
<Yorlik> hkaiser: The mutex fixed it - I'm getting new problems now, but these are most likely unrelated. My new machine uncovered some remaining races I have to track down and fix now.
<hkaiser> Yorlik: are you accessing thread_locals from a different thread?
<Yorlik> I can't prove it, but I guess that's what happened because of a task migration.
<Yorlik> I think we should have a function for initialization of thread locals on workers.
<hkaiser> what do you store in that map of yours?
<Yorlik> just something every worker calls at startup where we can customize the thread_local environment
<Yorlik> I stor an association of OS threads to engine pools
<Yorlik> This allows me to get a lua engine from the thread local pool and not have a lock
<Yorlik> I later give back the engine on another thread if needed.
<Yorlik> If a pool has to many engines I destroy/delete, if there is a lack I recreate
<Yorlik> So it always rebalances
<hkaiser> so you access the thread_local from a thread it was not created for
<Yorlik> I guess that's what happens if there is a task migration during thread_local initialization
<Yorlik> But again - I haven't proven it
<Yorlik> Maybe with some logging it could be proven
<hkaiser> Yorlik: I'd suggest that you avoid doing this by all means
<Yorlik> I am not doing it intentionally
<hkaiser> k
<Yorlik> Absolutely not
<Yorlik> I am always using the data meant for the local currently running thread.
<Yorlik> But the spinlock tricked me here.
<Yorlik> It all would not have happened with a proper worker thread initialization customization point.
<Yorlik> Can't we just have a function we can override?
<hkaiser> Yorlik: what for?
<Yorlik> For example to set up the pools per worker - what I'm doing in a somewhat convoluted way now
<Yorlik> I can imagine a bunch of things you might want to have thread local per worker
<Yorlik> Using function thread_locals to set this up is not really elegant, I think.
bita_ has quit [Ping timeout: 260 seconds]
<hkaiser> Yorlik: I have a hard time understanding what you mean
<Yorlik> Sometimes you want to use something that is thread_local to your worker and just there and already initialized when you want to use it.
<Yorlik> E.g. in my case a pool that can give me a lua state.
<Yorlik> It's a service, an environment I want to set up to run my tasks in.
<Yorlik> It would be cleaner if i could do this in a dedicated function.
<hkaiser> Yorlik: make the thread_local a function local static and return the reference to it from the function
<Yorlik> Just like that executor you wrote, which allows me to set up a task.
<hkaiser> that will initialize things on demand, on first access
<Yorlik> That's what I have now.
<hkaiser> so what's the issue?
<Yorlik> Not saying it's impossible to work with this.
<hkaiser> it's rather elegant, I think
<hkaiser> do the initialization work in the constructor of that thread_local
<Yorlik> Well - it may just not yield :D
<Yorlik> Never ever ...
<hkaiser> right - you should always know what you're doing
<Yorlik> But flying blind is so much more exciting :P
rtohid has left #ste||ar [#ste||ar]
<weilewei> Do we have similar functions of pthread_key_t in hpx? so that it can be used like, pthread_key_create, pthread_setspecific, etc. The overall goal is do similar things using hpx in this class: https://github.com/khizmax/libcds/blob/master/cds/threading/details/pthread_manager.h
<hkaiser> weilewei: thread local data?
<hkaiser> do you need hpx thread local data?
<weilewei> Does hpx thread local data have any unique identifier? Like key?
<hkaiser> depends
<hkaiser> does libcds need arbitrary TLS or do they store a predefined set of values?
<hkaiser> predefined set of keys, that is
<weilewei> yes, libcds does store some thread local data
<hkaiser> is it an open set of keys or a predefined set of keys
hkaiser has quit [Read error: Connection reset by peer]