https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68365
Bug ID: 68365
Summary: gfortran test case showing performance loss with
vectorization
Product: gcc
Version: 6.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: fortran
Assignee: unassigned at gcc dot gnu.org
Reporter: tprince at computer dot org
Target Milestone: ---
Created attachment 36716
--> https://gcc.gnu.org/bugzilla/attachment.cgi?id=36716&action=edit
gzip tar file of Fortran and C source files
Just recently, it has become necessary to add the omp simd safelen(1) directive
in subroutine s111 in order to prevent a vectorization which reduces
performance on all known IA targets other than Intel Xeon Phi.
The same situation occurs in gcc/g++, and (for several years) icc/icpc (but not
ifort).
make -j 3 -f Makefile.cygwin lcd_ffast
I haven't tested the latest gfortran build on linux, but I do have a Makefile
for that, in case it's useful.
In the Makefile, CLOCK_RATE is set to enable accurate translation from rdtsc
ticks to seconds.
The timing quotations for VL=100 and VL=1000 will show the reduced performance
of s111 when vectorized by removing safelen(1) .
For gcc and g++, functions s128() and s4113() also need vectorization disable
for full performance, but gfortran doesn't exhibit that problem. For this
filing, you can ignore everything but subroutine s111.