[llvm-dev] [RFC] Non-Temporal hints from Loop Vectorizer

JF Bastien via llvm-dev llvm-dev at lists.llvm.org
Tue May 3 13:20:42 PDT 2016


Agreed with the other replies on this thread, I'd also suggest looking at
my RFC:

https://groups.google.com/d/topic/llvm-dev/ZJ8SVCJPpcc/discussion

Which I still have to implement.

On Tue, May 3, 2016 at 3:40 AM, Hahnfeld, Jonas via llvm-dev <
llvm-dev at lists.llvm.org> wrote:

> Hello all,
>
> I've been wondering why Clang doesn't generate non-temporal stores when
> compiling the STREAM benchmark [1] and therefore doesn't yield optimal
> results.
>
> It turned out that the Loop Vectorizer correctly vectorizes the arithmetic
> operations and also merges the loads and stores into vector operations.
> However it doesn't add the '!nontemporal' metadata which would be needed
> for
> maximal bandwidth on X86.
> I briefly looked into this and for non-temporal memory instructions to
> work,
> the memory address would have to be aligned to the vector length which
> currently isn't the case neither.
>
> To summarize the following things would be needed to give non-temporal
> hints:
> 1) Ensure correct alignment of merged vector memory instructions
> This could be implemented by executing the first (scalar) loop iterations
> until the addresses for loads and stores are aligned, similar to what
> already
> happens for the remainder of the loop. The larger alignment would also
> allow
> aligned vector instructions instead of the currently unaligned ones.
>
> 2) Give non-temporal hints when different array elements are only used once
> per loop iteration
> We probably need to analyze the different load and stores per loop
> iteration
> for this...
>
> Any thoughts or any ongoing work that I'm missing?
>
> Thanks,
> Jonas
>
>
> [1] https://www.cs.virginia.edu/stream/
>
> --
> Jonas Hahnfeld, MATSE-Auszubildender
>
> IT Center
> Group: High Performance Computing
> Division: Computational Science and Engineering
> RWTH Aachen University
> Seffenter Weg 23
> D 52074  Aachen (Germany)
> Hahnfeld at itc.rwth-aachen.de
> www.itc.rwth-aachen.de
>
>
>
> _______________________________________________
> LLVM Developers mailing list
> llvm-dev at lists.llvm.org
> http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-dev
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20160503/cc8e9ce7/attachment.html>


More information about the llvm-dev mailing list