I am just getting a performance improvement of 10-12% with a simple compiler option switch from /QxSSE4.1 /03 to /QxAVX /03.
By directly using the above same compiler option switch in a scalar code not using the Intel IPP is giving a performance improvement of around 70-80%, as it is supposed to be for single precision floating point numbers.
Could you please tell me what will be the performance improvement for these functions that are not optimized for Intel AVX( from IPP libraries), with a simple compiler option switch. I just need a reference or a benchmark for these functions from Intel IPP, just to make sure that the methodology that I am using for these IPP functions is indeed correct. Please help.
Intel IPP performance benchmark tool is located at ipp\tools\xxx\perfsys, and its usage could be found at: http://software.intel.com/en-use/articles/measure-intel-ipp-function-performance
As noted in the AVA optimization article, the functions listed there are the ones directly and manually optimized with AVX instructions. But there are other functions that are compiled with AVX optimized switch. So these functions may also take the benefit of AVX functions.
As to adding the AVX switch when you compile your source code, it will impact the performance of your code. But since IPP functions are binary, which is only linked into the code. These switches will be impact IPP functions performance.
Could you please tell me what is the kind of performance improvement that you have seen while working with Intel IPP functions by a simple compiler option switch from SSE to AVX. I just need a rough estimate If you have tested for any of the IPP functions using this tool. It would have been helpful.
IPP functions contain a dial-up of instructions SIMD. During initialization library IPP registers processor possibilities, defines supported version Streaming SIMD Extentions (SSE, AVX) and sends the most suitable version of the functions supported by the processor.
If the IPP functions you are using are not listed in that article, then those functions are not optimized for AVX.
Furthermore, if the functions you use are not operating on floating point data they cannot be optimized because AVX speeds up only floating point instructions.
Moreover, you cannot optimize those IPP library functions for AVX by turning on compiler AVX optimizations when you compile your program.
Finally, if you cannot understand how compilers and libraries work then perhaps you should consider another career.
Rahul, since IPP is already compiled binary, the compiler will not compile the library. So IPP library performance is not expected to impact by the compiler switch.
But the compiler switch will impact your source performance.
In one of the article, compared Intel AVX vs. Intel SSE performance speedup. This might be useful for you.