- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm currently using static version of ipp, by calling ippStaticInit. When calling ippStaticInit, I get the "ippStsNonIntelCpu" result. That seems to be OK.
I remember that Mr. Dudnik wrote on one of the old threads that ipp works by CPU features, not detected processor type.
But the documentation says different:
Return Values
ippStsNoErr
Indicates that the most appropriate static code of the Intel IPP software is successfully set.
ippStsNonIntelCpu
Indicates that the static version of generic code for Intel Architecture is set.
ippStsNoOperationInDll
Indicates that there is no such operation in the dynamic version of the library.
So, am I getting the (for example SSE) optimized versions on an AMD processor, or not? Is there a way being sure about which version is called? (Other than installing a debugger on the target machine, and checking the actual prefixes of called functions?)
I remember that Mr. Dudnik wrote on one of the old threads that ipp works by CPU features, not detected processor type.
But the documentation says different:
Return Values
ippStsNoErr
Indicates that the most appropriate static code of the Intel IPP software is successfully set.
ippStsNonIntelCpu
Indicates that the static version of generic code for Intel Architecture is set.
ippStsNoOperationInDll
Indicates that there is no such operation in the dynamic version of the library.
So, am I getting the (for example SSE) optimized versions on an AMD processor, or not? Is there a way being sure about which version is called? (Other than installing a debugger on the target machine, and checking the actual prefixes of called functions?)
Link Copied
2 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting - Kaan Gk
I'm currently using static version of ipp, by calling ippStaticInit. When calling ippStaticInit, I get the "ippStsNonIntelCpu" result. That seems to be OK.
I remember that Mr. Dudnik wrote on one of the old threads that ipp works by CPU features, not detected processor type.
But the documentation says different:
Return Values
ippStsNoErr
Indicates that the most appropriate static code of the Intel IPP software is successfully set.
ippStsNonIntelCpu
Indicates that the static version of generic code for Intel Architecture is set.
ippStsNoOperationInDll
Indicates that there is no such operation in the dynamic version of the library.
So, am I getting the (for example SSE) optimized versions on an AMD processor, or not? Is there a way being sure about which version is called? (Other than installing a debugger on the target machine, and checking the actual prefixes of called functions?)
I remember that Mr. Dudnik wrote on one of the old threads that ipp works by CPU features, not detected processor type.
But the documentation says different:
Return Values
ippStsNoErr
Indicates that the most appropriate static code of the Intel IPP software is successfully set.
ippStsNonIntelCpu
Indicates that the static version of generic code for Intel Architecture is set.
ippStsNoOperationInDll
Indicates that there is no such operation in the dynamic version of the library.
So, am I getting the (for example SSE) optimized versions on an AMD processor, or not? Is there a way being sure about which version is called? (Other than installing a debugger on the target machine, and checking the actual prefixes of called functions?)
Hi Kaan,
Youmay checkthe actual optimiziedversionbyadding the belowdetect code in your code, for example,
ippStaticInit(); // using the static merged libraries
// Print the version of ipp being used
const IppLibraryVersion* lib = ippiGetLibVersion();
printf("%s %s %d.%d.%d.%dn", lib->Name, lib->Version,lib->major, lib->minor, lib->majorBuild, lib->build);
it will return theactual optimized code on your target machine, likeon my core 2 duo processor, it returns "v8" code
ippiv8l.lib 6.1 build 137.20 6.1.137.809
For details, please see
http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-understanding-cpu-optimized-code-used-in-intel-ipp/
IA-32 Intel architecture
o px - C-optimized for all IA-32 processors
o a6 - Optimized for Pentium III processors (it is removed in Intel IPP v6.0)
o w7 - Optimized for Pentium 4 processors
o t7 - Optimized for Pentium 4 processors with Streaming SIMD Extensions 3 (SSE3)
o v8 - New Optimizations for 32-bit applications on Intel CoreTM2 and Intel Xeon 5100 processors
o p8 - New Optimizations for 32-bit applications on 45nm Intel CoreTM2 Duo (Penryn) family processors and Intel CoreTM i7 processors (Nehalem)
o s8 - Optimized for Intel AtomTM Processors ( new in Intel IPP v6.0)
Andthe documention
http://software.intel.com/en-us/articles/intel-integrated-performance-primitives-intel-ipp-is-there-any-function-to-detect-processor-type/
you can also usefunction ippGetCpuFeatures() to detect the processor features. It is new feature since V6.0.
Regards,
Ying
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thank you very much. I'll check it as you suggested. I'll also do a simple performance test by not calling ippStaticInit vs calling ippStaticInit. That'll show the actual optimized vs unoptimized difference.
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page