有关/QxS指定CPU优化的问题

micr0soft 2009-02-06 03:35:46
我做的程序,想在所有CPU下都能得到最佳性能,请问/QaxS能做到嘛?我看了有很多CPU支持选项,请问假如我用了/QaxS编译后再AMDCPU上运行,性能会不会下降呢?还是说再AMDCPU上运行只能用/QxO选项?
...全文
219 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
intel_iclifort 2009-02-07
  • 打赏
  • 举报
回复
/QaxS = /QaxSSE4.1
/QxO = /arch:SSE3

如果能够保证目标处理器平台支持的指令集, 和优化开关针对的Intel处理器完全兼容的话:

1) /Qx所做的优化工作比/arch多一些, 所以如果完全支持, 那么/QaxSSE3的效果会比/arch:SSE3好. 编译器手册上说明了这一点

2) /QaxSSE4.1在针对SSE/SSE3/SSE3/SSSE3优化的基础上, 又增加了对SSE4.1指令的优化
micr0soft 2009-02-06
  • 打赏
  • 举报
回复
感谢回答。
但是我后面测试了一下,发现用AMD5000+ CPU 下,使用/QaxS 选项的速度明显比 /QxO 的速度要快,不知为何
intel_iclifort 2009-02-06
  • 打赏
  • 举报
回复
另外, 11.0版本缺省认为你的处理器平台至少能够支持SSE2指令, 所以不做任何设置时, 默认就是/arch:SSE2

如果还希望保留对所有IA32架构的支持, 需要手动添加选项/arch:IA32

比方说:

Linux: icc -axSSSE3,SSE3 -mia32 sample.c

Windows: icl /QaxSSSE3,SSE3 /arch:IA32 sample.c


intel_iclifort 2009-02-06
  • 打赏
  • 举报
回复
为了方便使用, 从11.0版本起, Intel编译器针对处理器优化的选项进行了改变. 主要是: 1)引入了/arch选项, 支持兼容平台; 2)改变处理器命名规则为指令集名称, 更容易记忆和区别

参考如下:

/QaxW ==> /arch:SSE2

/QaxN ==> /QaxSSE2

/QaxP ==> /QaxSSE3

/QaxS ==> /QaxSSE4.1

/QaxT ==> /QaxSSSE3


/QxW ==> /arch:SSE2

/QxN ==> /QxSSE2

/QxO ==> /arch:SSE3

/QxP ==> /QxSSE3

/QxT ==> /QxSSSE3

/QxS ==> /QxSSE4.1



intel_iclifort 2009-02-06
  • 打赏
  • 举报
回复
[Quote=引用楼主 micr0soft 的帖子:]
我做的程序,想在所有CPU下都能得到最佳性能,请问/QaxS能做到嘛?
[/Quote]

/QaxS中 xS 只能针对支持Intel® Streaming SIMD Extensions 4 (SSE4) Vectorizing Compiler and Media Accelerators instructions的处理器做到最大程度的优化, a 确保程序能在所有的IA-32架构处理器上运行(性能未必是最佳的)


[Quote=引用楼主 micr0soft 的帖子:]
我看了有很多CPU支持选项,请问假如我用了/QaxS编译后再AMDCPU上运行,性能会不会下降呢?还是说再AMDCPU上运行只能用/QxO选项?
[/Quote]

使用/QaxS, 在AMD CPU上运行时可能会选择通用优化的路径(没有SSE/SSE2支持), 性能会下降的. 建议用/QxO选项

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧