Closed lkuper closed 7 years ago
The behavior of ICC 16 is more reasonable I think. If there are gotos in the program, you cannot force it to vectorize the code.
Yeah, I don't mean to say that ICC's behavior is unreasonable. The issue is that we're generating code that ICC fails to compile.
Actually, since ICC 15 produces "by the way, I don't vectorize this" warnings, I wonder if there's a flag or setting we can pass to ICC 16 to tell it to warn in the same way instead of just failing.
We discussed this issue today and decided to just stick with ICC 15 for benchmarking. The issue is unlikely to affect many people anyway because vectorizationlevel=2 (which means "always vectorize") is not the default; the default is vectorizationlevel=0. We only use vectorizationlevel=2 in order to more accurately measure the effect of vectorization. The code runs fine with vectorizationlevel=0:
[lkuper@PSEPHI07 benchmarking]$ vectorizationlevel=0 ./runjulia-pse-acc.sh
Starting benchmark run
Starting benchmark run
input file = 618486main_earth_full_gray.jpg
output file = 618486main_earth_full_gray-corners.jpg
libgomp: Invalid value for environment variable OMP_NESTED
WARNING: Base.String is deprecated, use AbstractString instead.
likely near /home/lkuper/.julia/v0.4/ParallelAccelerator/examples/harris/harris.jl:114
WARNING: Base.String is deprecated, use AbstractString instead.
likely near /home/lkuper/.julia/v0.4/ParallelAccelerator/examples/harris/harris.jl:114
WARNING: Base.String is deprecated, use AbstractString instead.
likely near /home/lkuper/.julia/v0.4/ParallelAccelerator/examples/harris/harris.jl:114
WARNING: Base.String is deprecated, use AbstractString instead.
likely near /home/lkuper/.julia/v0.4/ParallelAccelerator/examples/harris/harris.jl:114
WARNING: Base.String is deprecated, use AbstractString instead.
likely near /home/lkuper/.julia/v0.4/ParallelAccelerator/examples/harris/harris.jl:114
WARNING: Base.String is deprecated, use AbstractString instead.
likely near /home/lkuper/.julia/v0.4/ParallelAccelerator/examples/harris/harris.jl:114
in typeToStr at /home/lkuper/.julia/v0.4/ParallelAccelerator/src/cgen.jl
WARNING: Base.String is deprecated, use AbstractString instead.
likely near /home/lkuper/.julia/v0.4/ParallelAccelerator/examples/harris/harris.jl:114
in typeToStr at /home/lkuper/.julia/v0.4/ParallelAccelerator/src/cgen.jl
WARNING: Base.String is deprecated, use AbstractString instead.
likely near /home/lkuper/.julia/v0.4/ParallelAccelerator/examples/harris/harris.jl:114
in typeToStr at /home/lkuper/.julia/v0.4/ParallelAccelerator/src/cgen.jl
SELFPRIMED 5.931299378
checksum: 9.193732e6
SELFTIMED 0.140085279
Ending benchmark run
Ending benchmark run
[lkuper@PSEPHI07 benchmarking]$ icc -v
icc version 16.0.3 (gcc version 5.2.1 compatibility)
So this issue is likely only to affect users of the latest ICC who also turn on vectorizationlevel=2, in which case, buyer beware. :)
It looks like some of our examples fail to compile under icc 16.0.3.
Here's what happens with harris running under icc 15.0.2, using the input image that we usually benchmark with, and using the usual benchmarking settings (e.g.,
vectorizationlevel=2
):Notice we get a couple of warnings about loops not being vectorized, but no errors.
Here's under icc 16.0.3:
There may be others that don't work; this is just the first I encountered. I'm going to go back to 15.0.2 for now.