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/
hkaiser has quit [Quit: bye]
<pedro_barbosa[m]> Is there a function to get all the available CUDA devices? I've only found one for the local devices
hkaiser has joined #ste||ar
K-ballo has quit [Ping timeout: 272 seconds]
Yorlik has joined #ste||ar
<srinivasyadav227> @ped
<srinivasyadav227> this might help you getting to know the available devices which can be used for CUDA
bita has joined #ste||ar
bita has quit [Ping timeout: 265 seconds]
<gonidelis[m]> hkaiser: yt?
<hkaiser> hey
<gonidelis[m]> hey
<gonidelis[m]> hkaiser: is there any way that i can call `hpx::ranges::remove_if` from `hpx::ranges::remove` ?
<gonidelis[m]> I mean, since they are exposed through `tag_invoke`s
<hkaiser> sure
<gonidelis[m]> by using it like `hpx::ranges::remove_if`?
<hkaiser> sure, alternatively invoke the underlying implementation?
<gonidelis[m]> yeah that's an option too
<gonidelis[m]> should our algos overloads work when we invoke them with rvalues?
<gonidelis[m]> for example: `hpx::algo(rvalu1, rvalue2, pred)`
<gonidelis[m]> ?
<gonidelis[m]> k-ballo: yt?
<k-ballo[m]> why not?
<gonidelis[m]> k-ballo: i don't know if the iternals could handle it but I am glad to know that they should so
<gonidelis[m]> anyways k-ballo i have this expression `*first++ = std::move(*i);`
<gonidelis[m]> and i get `lvalue required as left operand of assignment
<gonidelis[m]> `
<gonidelis[m]> is this a completely wrong expression in the first place?
<gonidelis[m]> or does the error depend on with what `first` is substituted with?
<gonidelis[m]> on what first is substituted with ^^
<k-ballo[m]> i don't know whether the internals can handle it either
<gonidelis[m]> you suggest that they should though
<k-ballo[m]> unless there's a reason against
<gonidelis[m]> cool
<gonidelis[m]> what about the expression?
<k-ballo[m]> the expression out of context looks ok
<gonidelis[m]> but shouldn't the compiler infer to the substitution if that was what went wrong?
<gonidelis[m]> k-ballo:
<k-ballo[m]> infer what?
<gonidelis[m]> the underlying substitution
<gonidelis[m]> k-ballo:
<k-ballo[m]> i can't parse that sentence
<k-ballo[m]> what do you mean by infer a substitution?
<gonidelis[m]> sorry i meant refer to
<gonidelis[m]> "refer to the underlying substitution"
<k-ballo[m]> what's the underlying substitution?
<gonidelis[m]> k-ballo: in my case it's that
<k-ballo[m]> why would thr compiler refer to that line?
<gonidelis[m]> because this is what `first` is
<k-ballo[m]> that `Iterator` implementation is bogus bte
<gonidelis[m]> k-ballo: what do you mean?
<k-ballo[m]> returns copies on dereference, for starters
<k-ballo[m]> it's not a valid forward iterator
<gonidelis[m]> k-ballo: hm yeah... i thought about it
<gonidelis[m]> but i just can't figure out an iter sent case that is actually based on the standard
<gonidelis[m]> i mean, idk. aren't sentinels supposed to be custom types?
<k-ballo[m]> ?
<gonidelis[m]> what's an iter-sent case using actual c++ standard types?
<k-ballo[m]> pointers? begin/end?
<gonidelis[m]> sentinel value ^^
<k-ballo[m]> yes
<gonidelis[m]> of the different type
<gonidelis[m]> (i will keep making it all the more complex :P )
<k-ballo[m]> you'd need C++20 for that, so not interesting to you
<gonidelis[m]> extremely interesting to me since i am adapting our algos to c++20 ;p
<k-ballo[m]> we're not going to be requiring C++20 any time soon
<k-ballo[m]> so you won't br getting your test sentinels.from the standard library, make your own
<gonidelis[m]> why the hell do we adapt the algos then?
<gonidelis[m]> for like 9 months now
<gonidelis[m]> k-ballo: ohh... ok
<gonidelis[m]> k-ballo: thank you
<gonidelis[m]> !
<gonidelis[m]> k-ballo: so usin iter - sent is "using my own"
<k-ballo[m]> the standard library isn't the only source of sentinels in the world, people can write their own too
<gonidelis[m]> k-ballo: like we have done with `iter-sent`
<gonidelis[m]> `iter_sent.hpp` ^^
<k-ballo[m]> the iter implementation in that file is bogus, didn't check the sentinel
<k-ballo[m]> you don't need custom iterators anyhow, just sentinels
<gonidelis[m]> k-ballo: you mean i can creat custom sentinels to the standard iterator types
<gonidelis[m]> ?
<k-ballo[m]> sure
<k-ballo[m]> for any iterator type
<gonidelis[m]> k-ballo: and for the sentinel to be proper it should just conform to the `sentinel_for` constraints
<gonidelis[m]> to the constraints included in the `sentinel_for` c++20 concept i mean
<k-ballo[m]> it needs to br comparable to the iterator, and possibly copyable or even regular too
<gonidelis[m]> hm... sounds straightforward
<k-ballo[m]> should be, just define one op== and then 3 more eq.ops as boilerplate
<gonidelis[m]> and this should be aimed to just FwdIters for example?
<k-ballo[m]> why?
<gonidelis[m]> i am asking
<gonidelis[m]> maybe it could work for many types actually. you are right
<k-ballo[m]> for any iterator, probably
<gonidelis[m]> yy
<gonidelis[m]> it's peculiar that we don't have already sth like that
<k-ballo[m]> replace all the stuff currently in iter_sent
<gonidelis[m]> ok i will
<gonidelis[m]> thanks
<k-ballo[m]> maybe do that separately
<k-ballo[m]> mhh, it's trivial enough.. drop Iterator, add eq.ops to Sentinel
<gonidelis[m]> 4 eq.ops. right?
<k-ballo[m]> yes, three of those written in term of the other
<k-ballo[m]> (note those can't be members)
<gonidelis[m]> k-ballo: why?
<k-ballo[m]> try it and tell me
<gonidelis[m]> k-ballo: ok
<gonidelis[m]> k-ballo: 4 eq ops is because i need all the rvalue - lvalue combination cases?
<k-ballo[m]> no, const-ref should cover all reasonable comparisons
<k-ballo[m]> two == and two !=
<gonidelis[m]> oh ok i got it.
<gonidelis[m]> it's two because it's iter==sent and sent==iter
<gonidelis[m]> cool
<gonidelis[m]> but if they are not member where would they be defined
<k-ballo[m]> how could both of those be members?
<gonidelis[m]> you mean we do not have iter defined within the sent type
<k-ballo[m]> no
<k-ballo[m]> i mean, member functions are either static or have an implicit first parameter
<k-ballo[m]> neither works for iter==sent
<k-ballo[m]> so you need free functions, be it in-line friends or just "global"
<k-ballo[m]> see if you can find meyer's item on heterogeneous comparisons
<gonidelis[m]> ok i have things to explore then. thanks a lot
Yorlik has quit [Quit: Leaving]
bita has joined #ste||ar
bita has quit [Ping timeout: 246 seconds]
K-ballo has joined #ste||ar