Vectorization / Parallelization / Optimization Reports Under VS 2010

Vectorization / Parallelization / Optimization Reports Under VS 2010

Hello,

I'm using VS 2010 as my IDE.
It's configured to use Intel Compiler (Composer 2011).

I set all the required fields in the diagnostics menu under the project properties (As written in "A Guide to Vectorization with Intel® C++ Compilers").

Yet I see no data in the output window of VS 2010.

Where can I see the report as shown here:

http://stackoverflow.com/questions/9054046/directory-of-vectorization-report-for-intel-c-compiler-in-vs-10

Thank You.

 

22 Beiträge / 0 neu
Letzter Beitrag
Nähere Informationen zur Compiler-Optimierung finden Sie in unserem Optimierungshinweis.

Could you upload a complete test-case ( sources and project files ), please? I don't think that these reports are displayed if a test-case looks like:
.
void main( void )
{
}
.
Best regards,
Sergey

Actually I'm building a Photoshop / After Effects Plug In.

I couldn't understand your meaning.
The loops are in the file (Spreaded in function / main function).

It's really a shame I can't see the reports within the IDE and have some funny limitations.
I hope they created a better integration with the 2013 compiler.

I don't think you're making yourself clear. If you set /Qvecreport (in the additional command line options), the associated reports would appear in the build.log if you are using a Visual Studio build. With /Qopt-report-file, the reports appear in the file you have named.

Hello Tim,
I'm using VS 2010.
I chose the regular option (Screen, not file).
I build the file and I see nothing on the build report in the screen (Nothing related to the report of Vectorization).

If you look here:
http://stackoverflow.com/questions/9054046/directory-of-vectorization-re...

It seems I'm not the only one experiencing it.

Unless there's a specific file named build.log I should look into.
If I do, where should I look for it?

Thanks.

P.S.
I tried the option to write data into a file.
The file came out empty though I chose level 3.

>>...file named build.log I should look into.
>>If I do, where should I look for it?
.
When a Visual Studio is used a BuildLog.htm file is located in a folder specified by $(IntDir) variable ( it is internal Visual Studio variable! ). Take a look at project properties:
.
Configuration Properties -> General -> Build Log File = $(IntDir)\BuildLog.htm

It seems to be a different problem.
The compiler compiles in Debug Mode which turns off any optimization hence the report is not displayed.

The problem is I can get it into release mode.
Which flag in Intel C++ Compiler turns off the Debug mode?

Thanks.

are you building from VS IDE?
If yes, select the "Release" to change to "Release" config -- see the picture below:
http://software.intel.com/sites/default/files/comment/1655317/config-dro...

If building from command line, /Od is for "debug", "/O2" is used in "Release". there is also "/O3" for more advanced optimization.

Jennifer

Anlagen: 

AnhangGröße
Herunterladen config-drop-down.jpg96.34 KB

Hi Jeniffer,
I tried every switch (/Mt, /O2, removed _DEBUG, added NDEBUG), Can't see the report (Which means no optimization is applied).
What other flags might cause the ICC work in "Debug Mode"?

>>...I tried every switch (/Mt, /O2, removed _DEBUG, added NDEBUG), Can't see the report (Which means no optimization is applied).
.
That looks strange.
.
>>What other flags might cause the ICC work in "Debug Mode"?
.
Could you upload your test project for review ( in Visual Studio 2005, 2008 or 2010 )?

Hi,
It would be difficult to upload it since it requires to host program in order to debug (Kind of a Plug In).

Yet what I strictly look for is which flags to set in order to disable this "Debug" mode which disables the optimizations and hence no report is given.

Ok. I think it might be the /Qipo option.
For some project types created by Visual Studio, the /GL (whole program optimization) is on in "Release" config. So when you switch to Intel C++, it changes to "/Qipo". In such case, the compilation phrase is the 1st step to generate the mocked intermediate object files. Only at linker stage it will do the actual compilation. At the vec-report is done at the later step.

So check the project property: C/C++ -> Optimization (Intel) -> Interprocedural Optimization; is it set to /Qipo?
if yes, you do one of the followings:
1) change /Qipo to /Qip
2) add /qvec-report3 to the project property Link -> Command line -> Additional options --- notice: "/qvec-report3" all lower case.

Jennifer

>>...It would be difficult to upload it since it requires to host program in order to debug (Kind of a Plug In).
>>
>>Yet what I strictly look for is which flags to set in order to disable this "Debug" mode which disables the optimizations and hence no report is given.
.
Could you post a complete command line you use ( to compile sources ) or upload a VS proj-file for review? Once again, it is difficult to say anything without having some complete set of information from you.
.
Best regards,
Sergey

Hi,
Here are the commands line:

The Compiler:

/I"..\..\..\Headers" /I"..\..\..\Headers\SP" /I"..\..\..\Headers\Win" /I"..\..\..\Resources" /I"..\..\..\Util" /Z7 /nologo /W3 /O2 /Ot /Qparallel /D "MSWindows" /D "WIN32=1" /D "_WINDOWS" /D "NDEBUG" /D "_CRT_SECURE_NO_DEPRECATE" /D "ISOLATION_AWARE_ENABLED=1" /D "_VC80_UPGRADE=0x0710" /D "_WINDLL" /U"_DEBUG" /GF /EHsc /MT /Zp4 /GS /Gy /fp:fast /QaxSSE4.1 /QxSSE4.1 /Zc:wchar_t /Zc:forScope /GR- /Qopenmp /Fp".\Release/EdgeIT.pch" /Fa".\Release/" /Fo".\Release/" /Fd".\Release/" /Qvec-report2

/OUT:"C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\Plug-ins\Fixel Algorithms\EdgeIT.aex" /INCREMENTAL:NO /NOLOGO /DLL "ippi_l.lib" "ipps_l.lib" "ippcore_l.lib" "ippcv_l.lib" "ippcc_l.lib" "kernel32.lib" "user32.lib" "gdi32.lib" "winspool.lib" "comdlg32.lib" "advapi32.lib" "shell32.lib" "ole32.lib" "oleaut32.lib" "uuid.lib" "odbc32.lib" "odbccp32.lib" /MANIFEST /ManifestFile:"x64\Release\EdgeIT.aex.intermediate.manifest" /ALLOWISOLATION /MANIFESTUAC:"level='asInvoker' uiAccess='false'" /PDB:".\Release/EdgeIT.pdb" /MAP /PGD:"C:\Program Files\Adobe\Adobe After Effects CS6\Support Files\Plug-ins\Fixel Algorithms\EdgeIT.pgd" qnoipo /TLBID:1 /DYNAMICBASE:NO /IMPLIB:".\Release/EdgeIT.lib" /MACHINE:X64
+
/NODEFAULTLIB:libiomp5mt.lib

In your case, /GL or /Qipo is not used, you should see the vec-report during "compiling" phrase.

could you attach the .vcxproj file?

are you using the Intel Parallel Composer 2011?

Jennifer

Hi,
At the beginning I worked with Composer 2011.
I later switched to 2013.

What do you mean during compiling phase?
I have the build report, nothing was there.

>>...The compiler compiles in Debug Mode which turns off any optimization hence the report is not displayed.
.
You need to verify '/O-like' command line options for your Debug configuration. Please take into account that a Debug configuration of some VS project doesn't turn off code optimizations by default.

By the way, you've posted compiler and linker options for your Release configuration. I've verified what you've posted and I don't see any problems. What you told us is that you have a problem in your Debug configuration. So, please post compiler and linker options for your Debug configuration.

The Windows debug compile flags include the effect of /Od, so you don't get any vectorization, auto-parallelization, or reports on them, until you add /O2 or /O3.

A couple of more comments...
.
>>...The Windows debug compile flags include the effect of /Od, so you don't get any vectorization...
.
A set of Debug Information Format options /Z7, /Zd /Zi and ZI could also affect a C++ compiler optimizations.
.
Please take into account that all C++ compilers create less efficient codes in Debug configurations. In my software development environment with more that 36 projects a C++ compiler optimizations are completely disabled for Debug configurations. If some performance or optimization evaluations are need to be done I switch configurations to Release.

Setting of /Zi is taken as setting /Od, unless there is an explicit /O setting. The reason is that any higher optimization loses information which you might like to display in a debugger, and (particularly with vector/parallel) changes the order of events visible in debugger.

>>A set of Debug Information Format options /Z7, /Zd /Zi and ZI could also affect a C++ compiler optimizations
.
In your Release configuration the option /Z7 is used ( a Debug Information Format is compatible with MS Quick C/C++ compiler v7 ):
.
>>>>.../Z7 /nologo /W3 /O2 /Ot /Qparallel...
.
Note: MS Quick C/C++ compiler v7 is a legacy C/C++ compiler and it is ~20-year old. I don't know if anybody uses the one.

Kommentar hinterlassen

Bitte anmelden, um einen Kommentar hinzuzufügen. Sie sind noch nicht Mitglied? Jetzt teilnehmen