hkaiser changed the topic of #ste||ar to: STE||AR: Systems Technology, Emergent Parallelism, and Algorithm Research | stellar-group.org | HPX: A cure for performance impaired parallel applications | github.com/STEllAR-GROUP/hpx | This channel is logged: irclog.cct.lsu.edu
Yorlik__ has joined #ste||ar
Yorlik_ has quit [Ping timeout: 265 seconds]
hkaiser has quit [Quit: Bye!]
hkaiser has joined #ste||ar
hkaiser has quit [Quit: Bye!]
hkaiser has joined #ste||ar
<ms[m]1> hkaiser: is https://github.com/STEllAR-GROUP/hpx/pull/6251 about the destruction of the `barrier` happening concurrently with other threads calling `arrive`/`arrive_and_wait`? if yes, isn't that the concern of the owner of the `barrier` to keep it alive e.g. with a `shared_ptr` until all threads have arrived? seems to me like the same problem as in https://github.com/STEllAR-GROUP/hpx/pull/3749 (with `condition_variable`)
<hkaiser> ms[m]1: you don't know when the last thread has exited the barrier
<hkaiser> you could keep the barrier alive with a shared_ptr, yes - but that means that you would have to wrap all uses of a barrier in a shared_ptr
<ms[m]1> not all uses, you may have cases where you know from other synchronization that the barrier has been arrived at
<hkaiser> well, that sounds very convoluted to me
<ms[m]1> but independently of the fix, is that the problem the PR is solving?
<hkaiser> yes
<hkaiser> and yes, it's the same as for CVs
<ms[m]1> ok, thanks, makes sense
<hkaiser> ms[m]1: bors goes out of commision, did you do anything about this for pika already?
<ms[m]1> hkaiser: not yet, but the reason it's going down is because github has "merge queue" in beta (https://docs.github.com/en/repositories/configuring-branches-and-merges-in-your-repository/configuring-pull-request-merges/managing-a-merge-queue)
<ms[m]1> that would be the replacement eventually
<hkaiser> yes, I know - and yes, that's the plan
<ms[m]1> iiuc they won't take down the public bors instance until merge queue has feature parity
<ms[m]1> but I've tried merge queue and it's fine as well, only thing I missed was that there's no equivalent to "bors try", otherwise the transition is straightforward
<ms[m]1> instead of having the required checks in bors.toml it uses the required checks in the repo settings
<hkaiser> ok
<hkaiser> do you have an example on what needs to be done there?
<ms[m]1> not really, it's almost all in the repo settings (https://github.com/STEllAR-GROUP/hpx/settings/branch_protection_rules/25747, "Require merge queue" and "Status checks that are required") except for the branches that need to be built (https://github.com/pika-org/pika/blob/9f202d3f31579dc6253410b7b6887898aad0501c/.github/workflows/linux_debug.yml#L10 for gh actions,
<hkaiser> thanks
hkaiser has quit [Quit: Bye!]
hkaiser has joined #ste||ar
<hkaiser> mdiers[m]: wrt your load balancing question: we do something similar: https://github.com/STEllAR-GROUP/hpx/blob/master/libs/core/resiliency/include/hpx/resiliency/async_replay.hpp#L56-L110
<dkaratza[m]> hkaiser: I read online that in openmp the completion of a task does not necessarily synchronize with the point where the #pragma omp task block ends. The only way to synchronize with the task is if you explicitly use taskwait or task group or sth like that.
<dkaratza[m]> So, we could say that the equivalent of `#pragma omp task` in hpx is either `hpx::async` or even `hpx::post`(since be default openmp does not synchronize)? or would this be misleading?
<hkaiser> hpx::post doesn't synchronize in any way on it's own, so it's similar, I think
<hkaiser> mdiers[m]: essentially calling the outer function repeatedly from inside the continuation
<dkaratza[m]> ok i will include both and will add a note to clarify that if the users want any kind of synchronization they should go with async and not post
<hkaiser> dkaratza[m]: yes
K-ballo has quit [Quit: K-ballo]
K-ballo has joined #ste||ar
hkaiser_ has joined #ste||ar
hkaiser has quit [Ping timeout: 240 seconds]
<dkaratza[m]> hkaiser_: I see openmp has multiple cases where they use #pragma omp parallel without always having a for loop. so I think i should include an example about this as well
<dkaratza[m]> i am not sure how you can do this in hpx though. I mean having a parallel section but not a specific algorithm
<hkaiser_> dkaratza[m]: I think you can just omit that on the HPX side, it should just be 'combined' with the directives inside the parallel region
<dkaratza[m]> ok, it is quite common though to have #pragma omp parallel{ #pragma omp single{ //some code}}. how would this be in hpx?
<hkaiser_> what would be the semantics of that?
<dkaratza[m]> that sb would want to do a parallel section and run a part of its code in a single thread
<dkaratza[m]> so i should have written #pragma omp parallel{ // parallel code #pragma omp single{ //single threaded code}}
<hkaiser_> dkaratza[m]: you'd have to protect that sequential piece of code using a mutex
<dkaratza[m]> hkaiser_: without the pragmas right?
<hkaiser_> yes
<hkaiser_> I left them for you to see the correspondence of code
<gdaiss[m]> hkaiser_: Could you have another look at the DGX Jenkins PR? Al finished setting up the node with the fabric manager and the tests now pass locally for me - the only thing left doing is to merge master into it (to get the fixes from the other Jenkins PR) and to change to CUDA architecture. Hopefully the pipeline succeeds after that and this PR can be merged as well :-)
<hkaiser_> I'll rebase it, thanks