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/
weilewei has quit [Remote host closed the connection]
hkaiser has quit [Quit: bye]
jehelset has joined #ste||ar
shahrzad has quit [Quit: Leaving]
bita__ has quit [Ping timeout: 260 seconds]
parsa has quit [Ping timeout: 244 seconds]
parsa has joined #ste||ar
patrick22 has joined #ste||ar
diehlpk_work has joined #ste||ar
diehlpk_work_ has quit [Ping timeout: 264 seconds]
beauty1 has quit [Ping timeout: 244 seconds]
beauty1 has joined #ste||ar
hkaiser has joined #ste||ar
patrick22 has quit [Ping timeout: 272 seconds]
K-ballo has quit [Read error: Connection reset by peer]
K-ballo has joined #ste||ar
jehelset has quit [Remote host closed the connection]
bita has joined #ste||ar
bita has quit [Ping timeout: 256 seconds]
Coldblackice_ has joined #ste||ar
Coldblackice_ has quit [Client Quit]
Coldblackice has joined #ste||ar
Coldblackice has quit [Max SendQ exceeded]
Coldblackice has joined #ste||ar
bita has joined #ste||ar
bita has quit [Ping timeout: 265 seconds]
patrick22 has joined #ste||ar
weilewei has joined #ste||ar
bita has joined #ste||ar
<gonidelis[m]> if i have two different `transform_`s
<gonidelis[m]> first takes `transform_(a, b, is_seg)` and the other takes `transform_(a, b, is_not_seg)`
<gonidelis[m]> as arguments
<gonidelis[m]> should these transforms return the same type ?
<gonidelis[m]> ahhh since they are invoked from the same CPO
<gonidelis[m]> the must return the same thing
<gonidelis[m]> I don't know if it's a proper move to change all the `segmented transform`s return types though
<K-ballo> why would they must return the same thing?
<gonidelis[m]> because they are invoked from the same function
<K-ballo> and?
<K-ballo> couldn't the return type depend on is_seg?
<gonidelis[m]> how?
<K-ballo> what am I missing?
<gonidelis[m]> how can a return type be dependable?
<K-ballo> the obvious way
<gonidelis[m]> let me give you some code
<gonidelis[m]> K-ballo: and what's that?
<K-ballo> in its basic form, template <bool C> auto fun() -> std::conditional_t<C, one-return-type, the-other>
<K-ballo> and this `is_seg` is presumably an instance of `std::bool_constant<C>`
<gonidelis[m]> Ok that for sure wasn't obvious to me
<gonidelis[m]> actually that's the first time i see something like that and it seems very very cool
<gonidelis[m]> but look how we implement it
<gonidelis[m]> K-ballo: ^^
<K-ballo> so they do already return the same type?
<gonidelis[m]> yeah
<gonidelis[m]> that thing: `friend typename parallel::util::detail::algorithm_result<ExPolicy,
<gonidelis[m]> FwdIter2>::type`
<K-ballo> what's the problem then? I got confused
<gonidelis[m]> actually this one `parallel::util::detail::algorithm_result<ExPolicy,
<gonidelis[m]> FwdIter2>::type`
<gonidelis[m]> ok So since `tag_invoke` returns just one hting
<gonidelis[m]> thing^^
<gonidelis[m]> but it's invoking two `transform_()`s
<gonidelis[m]> on segmented and one parallel
<gonidelis[m]> then both these `transform_()`s should return the same type
<K-ballo> tag_invoke can have dependent return type just fine
<gonidelis[m]> yeah i know
<K-ballo> but if both segmented and non-segmented already return the same type, why would there be a problem in the first place?
<gonidelis[m]> they don't
<gonidelis[m]> non-semented returns pair
<gonidelis[m]> sorry my mistake
<gonidelis[m]> non-segmented retruns `in_out_result`
<gonidelis[m]> segmented returns `pair`
<gonidelis[m]> So I cannot change the design of tag invoke on my own
<gonidelis[m]> since the team has already adapted most of the algos according to this onw
<gonidelis[m]> one ^^
<gonidelis[m]> and thus I should change the segmented
<gonidelis[m]> result type
<hkaiser> gonidelis[m]: do you understand what algorithm_result<>::type evaluates to?
<K-ballo> ok so they don't return the same type after all, at least that makes sense
<K-ballo> and it's just a matter of having the return type conditional
weilewei has quit [Remote host closed the connection]
<K-ballo> hkaiser: uhm... so the return type is already different and conditional?
<hkaiser> yes, algorithm_result<T>::type is T for sync execution and future<T> for async execution (par(task))
<gonidelis[m]> hkaiser: not really... I think it's just a type that says: "We return a FwdIter, just keep i mind we have that X kind of exec policy on board"
<gonidelis[m]> ok
<gonidelis[m]> So it is conditional
<gonidelis[m]> the thing is whether `T` should be the same for segmented and non-segmented (?)
<gonidelis[m]> (my first statement answers to your first question btw)
<gonidelis[m]> I think that's why I get this error but to be honest I can't fully iterpret it
<K-ballo> where's the cpo?
<gonidelis[m]> what cpo?
<gonidelis[m]> How do you understand the call the gives this/
<gonidelis[m]> ?
<gonidelis[m]> K-ballo: ^^
parsa| has joined #ste||ar
diehlpk_work_ has joined #ste||ar
parsa has quit [Ping timeout: 260 seconds]
parsa| is now known as parsa
diehlpk_work has quit [Ping timeout: 260 seconds]
<gonidelis[m]> It's really hard for me to trace this error. If anyone could lay some piece of advice here on why or where does it come from it would help
<gnikunj[m]> hkaiser: yt?
<hkaiser> gnikunj[m]: yt
<gnikunj[m]> hkaiser: here. See pm pls
patrick22 has quit [Ping timeout: 272 seconds]
heller1 has quit [Ping timeout: 240 seconds]
rori has quit [Ping timeout: 240 seconds]
heller1 has joined #ste||ar
rori has joined #ste||ar
<hkaiser> gnikunj[m]: done
<gnikunj[m]> hkaiser: thanks a lot!