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
K-ballo has quit [Quit: K-ballo]
hkaiser has quit [Quit: Bye!]
K-ballo has joined #ste||ar
hkaiser has joined #ste||ar
<satacker[m]> In the https://github.com/brycelelbach/wg21_p2300_std_execution/blob/main/include/execution.hpp#L625-L647, I don't get why the `operator()` is overloaded with bool and another that returns `weakly parallel`, which does not require that the thread makes progress.
<K-ballo> satacker[m]: which bool?
<satacker[m]> Sorry if this is silly but i am confused here
<K-ballo> oh! looks like a copy&paste bug
<K-ballo> nice catch, you should try making some test code to trip over it
<K-ballo> sure
<K-ballo> is there a question about that?
<satacker[m]> Yes, why was it defaulted to weakly parallel
<K-ballo> that's what the spec says
<K-ballo> are you asking why the spec defaults to weakly parallel?
<K-ballo> it's the weakest forward progress guarantee, if a scheduler doesn't claim a stronger guarantee then it gets the most basic one
<satacker[m]> K-ballo: ```
<satacker[m]> If execution::get_forward_progress_guarantee(s) for some scheduler s returns execution::forward_progress_guarantee::concurrent, all execution agents created by that scheduler shall provide the concurrent forward progress guarantee. If it returns execution::forward_progress_guarantee::parallel, all execution agents created by that scheduler shall provide at least the parallel forward progress guarantee.
<satacker[m]> ```
<satacker[m]> I didn't find it
<K-ballo> you did not find.. what?
<satacker[m]> Nope, sorry, all clear
<K-ballo> read the paragraph just above the one you quoted
<satacker[m]> found the spec for default
<satacker[m]> yes, got it
<K-ballo> curiously it says to ignore a specialization that returns anything other than forward_progress_guarantee, rather than to reject it
<K-ballo> it ought to rather fix the return type as forward_progress_guarantee, and dispatch to any specialization it finds
<K-ballo> that way if you get the specialization wrong it results in a compilation error rather than a silent fallback to default
<satacker[m]> <K-ballo> "that way if you get the speciali..." <- took some time for this, but i get some idea, thanks
<satacker[m]> I tried compiling the example provided, it gave compilation error
<satacker[m]> Then I changed the supposed copy paste error to call tag_invoke which works but static assert fails
<hkaiser> so it's more than 'just' a c/p error...
<K-ballo> what's the static assertion that fails?
<K-ballo> btw, report the compilation error
<satacker[m]> K-ballo: https://pastebin.com/k6EKcxYf
<satacker[m]> this was it
<K-ballo> looks the same
<satacker[m]> K-ballo: https://pastebin.com/NpGJ5nHQ static assert
<K-ballo> I dont understand, where does that code come from?
<satacker[m]> i wanted to test so I wrote a .cpp file
<K-ballo> fwiw the static assertion isn't failing, it's just bogus
<satacker[m]> The code
<K-ballo> static_assert expects a constant expression
<K-ballo> the error message explains it in more detail
<K-ballo> read the error message
<satacker[m]> got it
<satacker[m]> it did compile
<satacker[m]> For this the tag_invoke is made constexpr as well
<satacker[m]> Btw, the boolean supposed mistake is not there in the original commit https://github.com/brycelelbach/wg21_p2300_std_execution/commit/103d410ed3d8b08c879507530fb8e864e4b83dfa
Yorlik has joined #ste||ar
hkaiser has quit [Quit: Bye!]
<K-ballo> goes to show the importance of unit tests
<K-ballo> look at that, p2300 got the same feedback I gave wrt invalid expressions
hkaiser has joined #ste||ar
Yorlik has quit [Ping timeout: 248 seconds]