Intel® C++ Compiler
Community support and assistance for creating C++ code that runs on platforms based on Intel® processors.
7953 Discussions

Autovectorization report not generated

ltkeene
Beginner
740 Views
Hello all, I'm trying to get Intel v11.1 to generate an autovectorization report but have not been able to. I'm using the compiler from within VS2008. Here are my "Configuration->C/C++->Command Line" directives:

/c /O2 /Oi /Qipo /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /EHsc /MD /GS /Gy /fp:fast /Yu"StdAfx.h" /Fp"Release/Simple resampling code.pch" /Fo"Release/" /W3 /nologo /Zi /Qopt-report:3 /Qopenmp /Qvec-report:3


What does it take to get the report to generate?

Also, there appears to be an errata in the documentation. In the "Vectorization Report" section of the docs there is the following:


"The following commands generate a vectorization report:

icl /QxSSSE3 /Qvec-report:3 sample.cpp

icl /QxSSSE3 /Qipo /Qvec-report:3 sample.cpp

icl /c /QxSSSE3 /Qipo /Qvec-report:3 sample.cpp

The following commands will not generate a vectorization report:

icl /c /QxSSSE3 /Qvec-report:3 sample.cpp

icl /QxSSSE3 /Qipo /Qvec-report:3 sample.cpp

icl /c /QxSSSE3 /Qipo /Qvec-report:3 sample.cpp"


The last two lines appear in both sections?
0 Kudos
13 Replies
JenniferJ
Moderator
740 Views
Quoting - ltkeene
Hello all, I'm trying to get Intel v11.1 to generate an autovectorization report but have not been able to. I'm using the compiler from within VS2008. Here are my "Configuration->C/C++->Command Line" directives:

/c /O2 /Oi /Qipo /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /EHsc /MD /GS /Gy /fp:fast /Yu"StdAfx.h" /Fp"Release/Simple resampling code.pch" /Fo"Release/" /W3 /nologo /Zi /Qopt-report:3 /Qopenmp /Qvec-report:3
The reason is /Qipo. When /Qipo used, the compilation is only generated intermediate code. The xilinker will do the actual compilation work.we have a FR to add /qvec-report to xilinker. But it's not implemented yet.

So right now removing /Qipo should get the report.

Jennifer
0 Kudos
aazue
New Contributor I
740 Views
Quoting - ltkeene
Hello all, I'm trying to get Intel v11.1 to generate an autovectorization report but have not been able to. I'm using the compiler from within VS2008. Here are my "Configuration->C/C++->Command Line" directives:

/c /O2 /Oi /Qipo /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /EHsc /MD /GS /Gy /fp:fast /Yu"StdAfx.h" /Fp"Release/Simple resampling code.pch" /Fo"Release/" /W3 /nologo /Zi /Qopt-report:3 /Qopenmp /Qvec-report:3
The reason is /Qipo. When /Qipo used, the compilation is only generated intermediate code. The xilinker will do the actual compilation work.we have a FR to add /qvec-report to xilinker. But it's not implemented yet.

So right now removing /Qipo should get the report.

Jennifer

Hi Jennifer
For clear explain to my very small head...
You speak about report only or task vectorized and report , are disable with ipo ?

Best regards
0 Kudos
JenniferJ
Moderator
740 Views
Quoting - bustaf
You speak about report only or task vectorized and report , are disable with ipo ?

Best regards

Only the report that does not work when /Qipo is on. The optimization is not changed.

Jennifer
0 Kudos
aazue
New Contributor I
740 Views
Quoting - bustaf
You speak about report only or task vectorized and report , are disable with ipo ?

Best regards

Only the report that does not work when /Qipo is on. The optimization is not changed.

Jennifer
Thank

0 Kudos
ltkeene
Beginner
740 Views
The reason is /Qipo. When /Qipo used, the compilation is only generated intermediate code. The xilinker will do the actual compilation work.we have a FR to add /qvec-report to xilinker. But it's not implemented yet.

So right now removing /Qipo should get the report.

Jennifer

Hi Jennifer, thank you for the response. I've removed /Qipo but still I get no vectorization report in the output window or build log file. Here's what I've got now as configuration settings:

/c /O2 /Oi /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_UNICODE" /D "UNICODE" /EHsc /MD /GS /Gy /fp:fast /Yu"StdAfx.h" /Fp"Release/Simple resampling code.pch" /Fo"Release/" /W3 /nologo /Zi /QxHost /Qvec-report:3

Any ideas what could be the problem now?

-L
0 Kudos
JenniferJ
Moderator
740 Views
It works for me.
Which version of the compiler are you using? If you're using the Intel Paralle Composer RTM version, there's a bug in the /Qvec-report. You need to add "/Qdiag-enable:vec". The 1st update fixed the problem.

[shell]>>icl /c /O2 /Oi /EHsc /MD /GS /Gy /fp:fast /Zi /QxHost /Qvec-report:3 t.cpp
Intel C++ Compiler Professional for applications running on IA-32, Version 11.1    Build 20090511 Package ID: w_cproc
_p_11.1.035
Copyright (C) 1985-2009 Intel Corporation.  All rights reserved.

t.cpp
C:tempt.cpp(28): (col. 8) remark: loop was not vectorized: vectorization possible but seems inefficient.
C:tempt.cpp(29): (col. 8) remark: loop was not vectorized: not inner loop.
C:tempt.cpp(29): (col. 8) remark: loop was not vectorized: dereference too complex.
C:tempt.cpp(30): (col. 3) remark: loop was not vectorized: existence of vector dependence.
C:tempt.cpp(30): (col. 31) remark: vector dependence: assumed ANTI dependence between c2 line 30 and (unknown) line 30
.
C:tempt.cpp(30): (col. 31) remark: vector dependence: assumed FLOW dependence between (unknown) line 30 and c2 line 30
.[/shell]
0 Kudos
ltkeene
Beginner
740 Views
It works for me.
Which version of the compiler are you using? If you're using the Intel Paralle Composer RTM version, there's a bug in the /Qvec-report. You need to add "/Qdiag-enable:vec". The 1st update fixed the problem.

[shell]>>icl /c /O2 /Oi /EHsc /MD /GS /Gy /fp:fast /Zi /QxHost /Qvec-report:3 t.cpp
Intel C++ Compiler Professional for applications running on IA-32, Version 11.1    Build 20090511 Package ID: w_cproc
_p_11.1.035
Copyright (C) 1985-2009 Intel Corporation.  All rights reserved.

t.cpp
C:tempt.cpp(28): (col. 8) remark: loop was not vectorized: vectorization possible but seems inefficient.
C:tempt.cpp(29): (col. 8) remark: loop was not vectorized: not inner loop.
C:tempt.cpp(29): (col. 8) remark: loop was not vectorized: dereference too complex.
C:tempt.cpp(30): (col. 3) remark: loop was not vectorized: existence of vector dependence.
C:tempt.cpp(30): (col. 31) remark: vector dependence: assumed ANTI dependence between c2 line 30 and (unknown) line 30
.
C:tempt.cpp(30): (col. 31) remark: vector dependence: assumed FLOW dependence between (unknown) line 30 and c2 line 30
.[/shell]


It's the trial version for Windows 32-bit. Just downloaded it the other day so it should be up-to-date, no? I tried the /Qdiag-enable:vec flag...no change. Here's my output:


"1>------ Build started: Project: Simple resampling code, Configuration: Release Win32 ------
1>Compiling with Intel C++ 11.1.038 [IA-32]... (Intel C++ Environment)
1>stdafx.cpp
1>Compiling with Intel C++ 11.1.038 [IA-32]... (Intel C++ Environment)
1>Simple resampling code.cpp
1>Linking... (Intel C++ Environment)
1>xilink: executing 'link'
1>Embedding manifest... (Microsoft VC++ Environment)
1>Build log was saved at "file://C:Simple resampling codeSimple resampling codeReleaseBuildLog.htm"
1>Simple resampling code - 0 error(s), 0 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped =========="
0 Kudos
JenniferJ
Moderator
740 Views
Quoting - ltkeene
"1>------ Build started: Project: Simple resampling code, Configuration: Release Win32 ------
1>Compiling with Intel C++ 11.1.038 [IA-32]... (Intel C++ Environment)
1>stdafx.cpp
1>Compiling with Intel C++ 11.1.038 [IA-32]... (Intel C++ Environment)
1>Simple resampling code.cpp

Pleas turn off /nologo to verify the options passed to each file and make sure the /Qvec-report3 is there.

Jennifer
0 Kudos
ltkeene
Beginner
740 Views

Pleas turn off /nologo to verify the options passed to each file and make sure the /Qvec-report3 is there.

Jennifer


Is it "Qvec-report3" or "Qvec-report:3"? I've seen both in the documentation.
-L
0 Kudos
ltkeene
Beginner
740 Views
Quoting - ltkeene


Is it "Qvec-report3" or "Qvec-report:3"? I've seen both in the documentation.
-L


I've removed /nologo and it's working now (with /Qvec-report:3). Thank you.
-L
0 Kudos
JenniferJ
Moderator
740 Views
Quoting - ltkeene
I've removed /nologo and it's working now (with /Qvec-report:3). Thank you.
-L
It seems there's a bug related to /nologo & /Qvec-report:3 (or /Qvec-report3). But I could not duplicate it. If you could, please post the steps here.

Thanks,
Jennifer
0 Kudos
JenniferJ
Moderator
740 Views
The vectorization report issue related to /GL or /Qipo is now fixed in the 12.0 Intel C++ Composer XE for Windows.

when you have /Qvec-report4 in the compiling option, even /Qipo is used, the vec report will be generated and printed.

Thanks,
Jennifer
0 Kudos
Dan4
Beginner
740 Views
I could get correct report even in version 11 under both Windows and Linux. There is an option to export all reports to a file and thus nothing will be shown. Maybe you are using that option. As far as I remember, you can activate this file report in C/C++ -> Diagnostics.

D.
0 Kudos
Reply