- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi all,
I used the GAP to analysis my program, there are a lot of message, a for loop may correspond to multiple messages,
when I set the report options to"/Qvec-report:2 /Qpar-report:2" I will get:
[cpp]
1. ImageReconstruction.cpp(1812): message : LOOP WAS AUTO-PARALLELIZED
2. ImageReconstruction.cpp(1812): message : loop was not parallelized: existence of parallel dependence
3. ImageReconstruction.cpp(1812): message : LOOP WAS VECTORIZED
4. ImageReconstruction.cpp(1812): message : loop skipped: multiversioned
5. ImageReconstruction.cpp(1812): message : LOOP WAS VECTORIZED
6. ImageReconstruction.cpp(1812): message #30532: (LOOP) Store the value of the upper-bound expression (param->mNumOfSinogramRhoBins) of the loop at line 417.......
7. ImageReconstruction.cpp(1812): message #30525: (PAR) Insert a "#pragma loop count min(512)" statement right before the loop at line 1812 to parallelize the loop
[/cpp]
I found this explain in the web:
"Typically loops inside a function will get processed from beginning to end in linear order by the compiler, but this is not always guaranteed - Compiler may perform optimizations that rearrange code based on the control-flow graph, and the loops may get processed (and reported) by the compiler in non-sequential manner. But you should be able to find one vec-message per every instance of a loop if you use -vec-report2 or -vec-report3"
Does it means that sometimes will be optimized, and sometimes will not be optimized?
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
As your report says multi-versioned, the other messages may apply to only one of the versions.
You may need run-time performance analysis to see whether optimization is effective on the executed version.
I suppose the message about setting a minimum expected loop count indicates that parallelization is not considered useful for smaller counts.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
First message is self explanatory your loop has some dependency which prohibits efficient parallelization.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hello,
As the iliyapolak said ,you should analyze the mentioned source code line first to try break the dependency according the report told.
Thank you.
-- QIAOMIN.Q
Intel Developer Support

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page