By: RichardC (tich.delete@this.pobox.com), May 16, 2022 2:47 pm
Room: Moderated Discussions
Michael S (already5chosen.delete@this.yahoo.com) on May 15, 2022 1:01 pm wrote:
> > > After looking at code, generated by LLVM autovectorizer last year, I am more that a somewhat
> > > doubtful. To say that a year ago they were bad would be an undeserving compliment.
High-level language compilers don't have much freedom to change the
memory layout of data, because that's pinned down by the language standard.
And to really get juice out of a vector ISA like AVX2 you have to redesign the memory
layout of data.
So autovectorizing compilers tend to do not-so-great on the best opportunities
for use of vector hardware, while also getting confused and misapplying
vectorization in places where it actually hurts.
And it's not even the compiler writers' fault, their hands are largely tied by the
language spec.
> > > After looking at code, generated by LLVM autovectorizer last year, I am more that a somewhat
> > > doubtful. To say that a year ago they were bad would be an undeserving compliment.
High-level language compilers don't have much freedom to change the
memory layout of data, because that's pinned down by the language standard.
And to really get juice out of a vector ISA like AVX2 you have to redesign the memory
layout of data.
So autovectorizing compilers tend to do not-so-great on the best opportunities
for use of vector hardware, while also getting confused and misapplying
vectorization in places where it actually hurts.
And it's not even the compiler writers' fault, their hands are largely tied by the
language spec.