- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I'm a little confused about how to specify generation of cpu-dispatched code with ICC. I need a baseline code targeted to NetBurst architecture, so to specify auto-dispatch with NetBurst baseline do I do the following?:
Project -> Properties -> C/C++ -> Code Generation -> "Add Processor-Optimized Code Path" = "Intel NetBurst..."
and
Project -> Properties -> C/C++ -> Code Generation -> "Intel Processor-Specific Optimization" = "None"
Thanks.
Link Copied
4 Replies
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
If I understand what you want, you would set Intel Processor-Specific Optimization to NetBurst SSE2 (if you are covering early 32-bit NetBurst). This would forbid execution on CPUs prior to NetBurst, such as P-III.
If you are covering only NetBurst from the time SSE3 and EM64T were introduced, the SSE3 option would work as the baseline. The SSE3 option is most valuable for complex vectorizable floating point, so it relates to a fairly specialized group of applications.
You would set Add Processor-optimized Code Path to the more recent architecture for which you wish to maximize performance. You might have to test your application to find out whether there is value in any of those options, and how high is worth while.
If you are covering only NetBurst from the time SSE3 and EM64T were introduced, the SSE3 option would work as the baseline. The SSE3 option is most valuable for complex vectorizable floating point, so it relates to a fairly specialized group of applications.
You would set Add Processor-optimized Code Path to the more recent architecture for which you wish to maximize performance. You might have to test your application to find out whether there is value in any of those options, and how high is worth while.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
I see. I was under the impression that the compiler could generate code paths for multiple generations of CPU that would be invoked transparently. Let's see if I've got this right - by following your directions I will generate binaries that require a minimum of SSE3 (or SSE2 depending on my selection), and also would include an optimized path for a more modern CPU (say, SSE4 for example, again depending on my selection). Correct?
-L
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Yes, I think we're in agreement.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Quoting lkeene
I see. I was under the impression that the compiler could generate code paths for multiple generations of CPU that would be invoked transparently.
Yes, it is supported.
But it is done through the "C/C++ -> Command line -> Additional options", adding "/QaxSSE3,SSE4.....". You can set the "/arch:SSE3" or /QxSSE3 through "Code Generation" page. The default is "/arch:SSE2" with 11.1.
Check the code size though to be sure it's in the range you want.
Jennifer
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