I have recently been trying to test the effectiveness of AVX instructions with OpenMP.
Unfortunately I am not getting the results I expected and I suspect I do not fully understand the difference in the /QxHost vs /QxAVX options.
I have ifort installed in a Xeon processor and have been running the resulting .exe's on the Xeon, i5 and i7 processors.
The compile options I am using are:
set options=/Tf %1.f90 /free /O2 /QxAVX /Qopenmp
set options=/Tf %1.f90 /free /O2 /QxHost /Qopenmp
The problem I am getting is the the .exe compiled with /QxAVX runs slower on the i5 and i7 in comparison to that compiled with /QxHost
I confirmed that the /AVX .exe would not run on the Xeon, which does not support AVX instructions.
I was expecting that the .exe generated with /QxHost would use instructions that are compatible with the Intel(R) Xeon(R) W3520 CPU @ 2.67 GHz : 12.0 GB : Win 7 Enterprise, which does not support AVX instructions.
This result makes me question: does the .exe compiled with /QxHost enable instructions based on the computer where the .exe was generated or does it provide for multiple instruction sets and adopt the instruction set of the computer on which it is being run?
The version of the compiler I am using is Version 220.127.116.114 Build 20120612.