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/
bita has joined #ste||ar
bita has quit [Ping timeout: 258 seconds]
hkaiser has joined #ste||ar
<gnikunj[m]>
ms: it builds now. Thanks!
hkaiser has quit [Quit: bye]
diehlpk_work__ has joined #ste||ar
diehlpk_work_ has quit [Ping timeout: 260 seconds]
diehlpk_work_ has joined #ste||ar
diehlpk_work__ has quit [Ping timeout: 264 seconds]
<gnikunj[m]>
aah, so in our case the executor takes 2 or 3 parameters. So executor_parameters_type will return the type of those parameters?
<hkaiser>
no
<hkaiser>
executor parameters are (an obsolete) concept we introduced in order to enable customization of things like chunk sizes
<gnikunj[m]>
what will it be then?
diehlpk_work_ has quit [Ping timeout: 240 seconds]
<hkaiser>
executor properties
<gnikunj[m]>
properties as in?
<gnikunj[m]>
I'm sorry if it's silly. I don't remember any of the executor stuff at this point :/
<hkaiser>
see wg21.link/p0443
<gnikunj[m]>
I'll look into it. Thanks!
<hkaiser>
gnikunj[m]: there is also wg21.link/p2183
<gnikunj[m]>
ok, thanks!
<hkaiser>
gnikunj[m]: the actual proposal is wg21.link/p1393
<gnikunj[m]>
I realized that this is coming from boost asio's executors. Is that correct?
<gnikunj[m]>
or HPX did it first?
<hkaiser>
no
<hkaiser>
asio is part of the executor motivation
<hkaiser>
hpx didn't have a part in properties, we did implement early versions of the executor proposal, though, and that's what we have today
<gnikunj[m]>
got it.
<hkaiser>
also, ms[m] (and others) have started to implement senders/receivers in hpx recently, he also implemented one property to control task placement
<gnikunj[m]>
hkaiser: As I was saying, hpx::kokkos::kok expects a kokkos executor and make_async_executor when used with kokkos executor complains about executor_parameters_type saying that there is no type named executor_parameters_type in class hpx::kokkos::executor<Kokkos::Experimental::HPX>
<hkaiser>
gnikunj[m]: sure, but do we need the execution policy?
<hkaiser>
async_replay/dataflow_replay etc. expect an executor as their first argument, not a policy
<gnikunj[m]>
we need to do it the async_replay_executor way because it also expects N and validate function (if any) as arguments
<hkaiser>
sure, but there is still no policy involved
<gnikunj[m]>
yeah, I'm not using a policy atm. That was only to check if hpx::kokkos::kok could work.
<gnikunj[m]>
right now it looks like: async_replay(
<gnikunj[m]>
ms: it isn't used in the constructs I'm using but it will be used in parallel_for and other similar constructs from what hkaiser shared
<hkaiser>
gnikunj[m]: no, ms has it's own algorithm implementations
<ms[m]>
right, the parallel algorithms won't work anyway with the kokkos executors, that's why we customize them
<hkaiser>
right
<gnikunj[m]>
aah. So that typedef should fix the issue for now.
<hkaiser>
ms[m]: executor may or may not expose their default parameters type
<ms[m]>
which will make things interesting if you want resiliency for parallel algorithms...
<gnikunj[m]>
Unless I get into troubles again, in which case I'll post them here again
<hkaiser>
parallel::execution::extract_executor_parameters is handling this
<ms[m]>
right, I saw that only now
<hkaiser>
ms[m]: yah, resiliency for parallel algorithms is a different can of worms, I think it wouldn't even work for the cpu implementations of the algorithms
<hkaiser>
at least not right now
<srinivasyadav227>
<gnikunj[m] "(this is the first time I'm writ"> I think I could help here, :-) ..and very much interested!
<gnikunj[m]>
ms: why do you say that? If we have resilience executors already implemented, all they do is replay/replicate accordingly on failures.
<hkaiser>
gnikunj[m]: we will see ;-)
<gnikunj[m]>
hkaiser: that comment :D
<srinivasyadav227>
if I am not wrong hkaiser gnikunj[m] gnikunj[m] are mentors for this organisation right ? :-)
<hkaiser>
srinivasyadav227: gsoc?
<srinivasyadav227>
yes
<hkaiser>
yes, we'll do some mentoring
<srinivasyadav227>
cool!.. looking forward to learn as much as I can :-)
<ms[m]>
gnikunj: I can for sure add the typedef, as can you, but shouldn't the resiliency executors complaining about the missing typedefs also use extract_executor_parameters?
<gnikunj[m]>
right, I can make them use that to default to seq
<ms[m]>
gnikunj: they should, or if they don't it should be possible to make them work (iirc async doesn't care anymore about the return type), but you're certainly right that I haven't added tests for it
<ms[m]>
Did you try it?
<gnikunj[m]>
ms yes I did. They complain about type mismatch of futures (void vs resulting type of function)
<ms[m]>
Ah, ok, so then I didn't remember correctly
<ms[m]>
That's possible to relax in hpx though
<gnikunj[m]>
I was debugging the code of async_replay_helper when I saw the resultant type from executor does not match the function return type
<gnikunj[m]>
ms how would you relax it though?
<gnikunj[m]>
I mean if a function return type is T then you want .get() to return T as well and not void
<ms[m]>
Either the return type is ignored or we require that the return type is void for kokkos executors
hkaiser has joined #ste||ar
<gnikunj[m]>
ms why's that? Does kokkos not have an equivalent of std/hpx::async?
<gnikunj[m]>
I only see for each and reduction algorithms in the tutorial sections
<gnikunj[m]>
hkaiser: yt?
<hkaiser>
gnikunj[m]: here now
<gnikunj[m]>
hkaiser: are you available for a quick call?