Hi all! I've been using the Intel Compiler for a while now, and the runtime performance increase is pretty satisfactory.
Despite this I still have some questions which need some better explanation because I've been really confused with all the different documentation out there.
PGO/IPO:
How do these two interact and as from what I've understood, you can use them both together? So how exactly does one use both PGO and IPO together? The compiling process usually spits out a warning that IPO multi file optimizations are disabled while using PGO. Or are you supposed to only use one of them instead and observe which one gives the best speed benefit?
Also, what is the best method of trying to profile an application for best performance? Does one run the application and head over to the area that requires the most CPU? Or the area that you want to be most optimized? Or does one go over all the possible functions in the program and still focus most time on the piece of code you want optimized most? And leave that piece of code running for most of the time until you decide to end the profiling process?
IPP/TBB/MKL etc:
These libraries, are they automatically optimizing code or does the code need alteration before they get used?
Parallel compilation:
So far I've understood that you can use either /Qparallel or OpenMP, or a combination of these to trigger Automated Parallel compilation. Is it right when I conclude that OpenMP requires an external DLL file and just Qparallel does not?
Compiler Processor specific instruction optimizations:
The option in Visual studio that configures the Optimized Code Path, does selecting (for instance) AVX or SSE4.2 also build in code for lower instructionsets like SSE4.1, SSE3, SSE2 by default? or do you manually have to specify all of them with /QaxSSE4.1,SSSE3,AVX etc?
According to the manual this would be the case, not 100% sure though. Also /arch seems to be deprecated and gets overrided by /Qax according to Visual studio?
Thanks! sorry for all the newbie questions :)