I have a routine which I expect to be heavily vectorizable, it has many counting loops of what should be vectorizable code.
But I get the following message:
sgp4only.cpp(117): (col. 75) remark: routine skipped: no vectorization candidates.
This message is not helpful to me, it doesn't point me where to look so I'm trying to find things in the documentation to try and no luck so far.
I'm running: Version 10.1 of the compiler.
Before I start posting code for people to analyse I'd like to know if there is a way to get better diagnostics or what this remark really means. I'd think in ANY routine that had a loop I ought to get a more specific remark than this.
Probably, non of the Intel C++ Compiler v10.0/v11.0 documentation can help. These documentation simply explains some sinerio of vectorization problems with simple examples but not with big lines of code. After analysing these examples one has o co-relate the same with problem you have with given program of multi C++ file section of a code.
Since, you havn't posted the code, do check few key things in your code -
- dependency of any counting loops something here I mean dependency like RAW, WAR & WAR. Vectorization fails when any of this dependency arises through it's pipeline, try resolving any of these dependency by modifying your code. Use Intel Vtune to analyse the assembly of instructions pipeline behaviour.
- there may be some unsupported loop structure which would be preventing vectorization to happen, try to analyze the format of this unsupported loop structure
- ICC-v10.0/11.0 at -O2 & -O3 level supports vectorization by default, simply one has to check with vec-report [n] diagnostic level of report needed to analyze vectorization report, try n=3 as vec-report3.
Please paste the section of code alongwith asm if you still have any problem in vectorizing.
Happy Learning....
~BR
Mukkaysh Srivastav