[llvm-dev] [RFC] Introducing the maynotprogress IR attribute
Johannes Doerfert via llvm-dev
llvm-dev at lists.llvm.org
Mon Sep 7 15:38:31 PDT 2020
On 9/7/20 4:48 PM, Nicolai Hähnle wrote:
> Hi Johannes,
>
>
> On Mon, Sep 7, 2020 at 11:17 PM Johannes Doerfert
> <johannesdoerfert at gmail.com> wrote:
>> >> > As a separate comment, I don't find the reference to the C++ spec in
>> >> > https://reviews.llvm.org/D86233 to be informative enough. Whenever
>> >> > that section of the C++ spec talks about "progress" it is
>> referring to
>> >> > how some abstract scheduler schedules execution of multiple threads.
>> >> > That is, it is talking about the dynamic behavior of the
>> >> > implementation. On the other hand, the proposed attribute presumably
>> >> > makes a statement about the program itself _assuming that_ its
>> >> > execution gets scheduled. So there is no applicable definition of
>> >> > "progress" in the cited section of the C++ spec.
>> >>
>> >> I don't understand. What is the alternative to "assuming that its
>> >> execution gets scheduled"?
>> >
>> > The alternative is dealing with the possibility that execution of a
>> > thread is _not_ scheduled by the abstract machine :)
>>
>> I guess if you do not schedule something there is not much to say about
>> it. We usually talk about about all executions and if you don't have
>> any, everything is true anyway. Unsure how you see that tie in here
>> though.
> The point is purely one about understandability of the proposed
> LangRef change. The LangRef change talks about "progress" as defined
> in [intro.progress] of the C++ spec, but the vast majority of that
> section, and _all_ parts of that section that actually use the word
> "progress", talk about the kind of forward progress guarantees that
> have nothing at all to do with what you're trying to get at in the
> proposal. My understanding is that for your proposal here, you're only
> really interested in what's written in the very first clause of that
> C++ spec section, but that's totally non-obvious from what the
> proposed patch to the LangRef says. The point is that the proposed
> language is misleading to somebody who approaches it without
> preconceptions.
I guess we can say something like:
[6, see the first section under the title "forward progress"]
if you think that makes it easier to read.
Would that address your concern or did I still not understand?
~ Johannes
> Cheers,
> Nicolai
>
>
>
>
>> ~ Johannes
>>
>> > This is a serious topic on GPUs, where you may have no or very weak
>> > forward progress guarantees, e.g. because threads mapped to the same
>> > vector/wave might not make progress while the vector is executing some
>> > other divergent part of the CFG, or because more threads are requested
>> > than physically fit on the machine.
>> >
>> > Cheers,
>> > Nicolai
>> >
>> >
>> >
>> >>
>> >> ~ Johannes
>> >>
>> >>
>> >> > Cheers,
>> >> > Nicolai
>> >> >
>> >> >
>> >> >> >> [1] https://bugs.llvm.org/show_bug.cgi?id=965
>> >> >> >> [2]
>> https://lists.llvm.org/pipermail/llvm-dev/2015-July/088103.html
>> >> >> >> [3]
>> >> https://lists.llvm.org/pipermail/llvm-dev/2017-October/118558.html
>> >> >> >> [4] https://reviews.llvm.org/D38336
>> >> >> >> [5] https://reviews.llvm.org/D65718
>> >> >> >> [6] https://eel.is/c++draft/intro.progress
>> >> >
>> >> >
>> >> >
>> >>
>> >
>> >
>>
>
More information about the llvm-dev
mailing list