英特尔C++编译器中针对英特尔处理器优化的编译器选项
英特尔C++编译器中针对英特尔处理器优化的选项分两类:
1. /Qx<code> (在Linux上是 -x<code>)——<code>是表示不同处理器的代码,处理器代码对照表请见下表。使用该开关可以生成出专门针对指定某款处理器优化的代码。生成出的代码仅能在指定的处理器或更新的处理器上运行,因为代码中可能采用了这些处理器中的SIMD指令。在生成的可执行文件的入口处会有一段检查代码,如果该文件运行在较老的处理器,程序将提示您并退出执行。这将有助于避免执行非法指令的错误。
2. /Qax<code> (在Linux上是 -ax<code>)——使用该开关可以让编译器生成出多条代码路径,通过处理器分发技术(Processor dispatch technology),程序入口处会对当前运行的处理器进行判别,并选择对当前处理器最优化的代码路径。
处理器代码对照表
S 可生成SSE4.1、SSSE3、SSE3、SSE2、SSE指令。针对45nm英特尔Core微体系架构进行优化,同时还做一些O代码中没有的优化。
T 可生成SSSE3、SSE3、SSE2、SSE指令。针对英特尔Core微体系架构进行优化,同时还做一些O代码中没有的优化。
P 可生成SSE3、SSE2、SSE指令。针对Pentium M处理器微体系架构和Netburst微体系架构进行优化,同时还做一些O代码中没有的优化。
O 可生成SSE3、SSE2、SSE指令。针对Pentium M处理器微体系架构和Netburst微体系架构进行优化。代码路径可以在支持SSE3的英特尔处理器及非英特尔处理器上执行,例如某些AMD处理器。注意:该代码不支持-axO及/QaxO。
N 可生成SSE2、SSE指令。针对Netburst微体系架构进行优化,同时还做一些W代码中没有的优化。
W 可生成SSE2、SSE指令。针对Netburst微体系架构进行优化。代码路径可以在支持SSE2的英特尔处理器及非英特尔处理器上执行,例如某些AMD处理器。
K 可生成SSE指令。针对Pentium III处理器和Pentium III至强处理器进行优化。代码路径可以在支持SSE的英特尔处理器及非英特尔处理器上执行,例如某些AMD处理器。
上述哪些处理器代码比较适合我目前使用的处理器?(论坛好像不支持表格,我的表格啊...)
S Quad-Core Intel® Xeon 54XX series
Dual-Core Intel® Xeon 52XX series
Intel® Core™ 2 Extreme 9XXX series
Intel® Core™ 2 Quad 9XXX series
Intel® Core™ 2 Duo 8XXX series
T Quad-Core Intel® Xeon® 73XX, 53XX 32XX series
Dual-Core Intel® Xeon® 72XX, 53XX, 51XX 30XX series
Intel® Core™ 2 Extreme 7XXX, 6XXX series
Intel® Core™ 2 Quad 6XXX series
Intel® Core™ 2 Duo 7XXX, 6XXX, 5XXX, 4XXX series
Intel® Core™ 2 Solo 2XXX series
Intel® Pentium® dual-core processor E2XXX, T23XX series
P Dual-Core Intel® Xeon® 70XX, 71XX, 50XX Series
Dual-Core Intel® Xeon® processor (ULV and LV) 1.66, 2.0, 2.16
Dual-Core Intel® Xeon® 2.8
Intel® Xeon® processors with SSE3 instruction set support
Intel® Core™ Duo
Intel® Core™ Solo
Intel® Pentium® dual-core processor T21XX, T20XX series
Intel® Pentium® processor Extreme Edition
Intel® Pentium® D
Intel® Pentium® 4 processors with SSE3 instruction set support
N (IA-32 only) Intel® Xeon® processors
Intel® Pentium® 4 processors
Intel® Pentium® M
K (IA-32 only) Intel® Pentium® III Xeon
Intel® Pentium® III
如果您必须要支持非英特尔CPU,您应该使用O、W或K。
推荐使用的处理器代码的组合
略,请查看原文
原文链接:http://support.intel.com/support/performancetools/sb/CS-009787.htm
优化注意事项
即使不是专门针对英特尔微处理器的优化,英特尔编译器也有可能无法为非英特尔微处理器实现相同程度的优化。这些优化包括 SSE2、SSE3 和SSSE3 指令集和其他优化。 英特尔不保证任何优化在非英特尔制造的微处理器上的可用性、功能或有效性。本产品中依赖于微处理器的优化旨在配合英特尔微处理器一起使用。不一定针对英特尔微架构的某些优化专为英特尔微处理器保留。请参见适用产品的“用户和参考指南”了解本注意事项中涵盖的特定指令集的更多相关信息。
注意事项修订版 #20110804