[cfe-dev] clang auto-vectorization feedback is confusing
Adam Nemet via cfe-dev
cfe-dev at lists.llvm.org
Fri Jul 8 16:03:22 PDT 2016
> On Jul 8, 2016, at 3:35 PM, Sean McBride <sean at rogue-research.com> wrote:
>
> On Thu, 30 Jun 2016 16:55:47 -0700, Adam Nemet said:
>
>>> Well, difficulties aside, from my perspective, it'd be nice if, for
>> every loop in a compiled file, if clang could tell me:
>>> - this loop _was_ vectorized
>>> - this loop was _not_ vectorized because xyz
>>> - this loop was removed/optimized away/transformed/whatever
>>>
>>> As it stands, one is left guessing in the last case.
>>
>> I think that’s fair. Can you please file a bug with the loop removal as
>> well? Loop removal could check for these pragmas and issue diagnostics.
>
> Done:
> <https://llvm.org/bugs/show_bug.cgi?id=28415>
>
>>> Thanks for the suggestion. Relatedly, when faced with a diagnostic
>> like "Loop not vectorized: unsafe dependent memory operations in loop",
>> is there any reference that can help a layman understand what this is
>> telling me exactly? I STFW without many results.
>>
>> On trunk we now emit:
>>
>> "unsafe dependent memory operations in loop. Use #pragma loop
>> distribute(enable) to allow loop distribution to attempt to isolate the
>> offending operations into a separate loop”
>>
>> And then the pragma is documented with an example under http://
>> clang.llvm.org/docs/LanguageExtensions.html#loop-distribution
>
> Thanks for pointing that stuff out, I had not seen it before.
>
>> That said, it still does not really explain what unsafe dependences
>> mean. Feel free to file another bug for this.
>
> Done:
> <https://llvm.org/bugs/show_bug.cgi?id=28475>
>
> Having something like this would be nice:
> <https://blogs.msdn.microsoft.com/nativeconcurrency/2012/05/22/auto-vectorizer-in-visual-studio-2012-did-it-work/>
>
> Another question if I may: sometimes clang will output something pretty clear like:
>
> "remark: loop not vectorized: loop control flow is not understood by vectorizer [-Rpass-analysis=loop-vectorize]"
>
> Other times I'll see:
>
> "remark: the cost-model indicates that interleaving is not beneficial [-Rpass-analysis=loop-vectorize]"
>
> From the sounds of it, that's telling me that the loop was *not* vectorized, right? If so, I find it odd that the "loop not vectorized:" prefix is not present.
Yes and yes. Can you please file a bug report on this too?
Thanks,
Adam
>
> Cheers,
>
> Sean
More information about the cfe-dev
mailing list