共 1,303 篇文章
共 6,316 篇文章及评论
- Association for Computing Machinery TechNews (ACM)
- Go Parallel! (Dr. Dobbs)
- HPCwire (Tabor Communications, Inc.)
- insideHPC (John West)
- Joe Duffy's Weblog (Microsoft)
- Microsoft Parallel Programming Development Center (Microsoft Germany)
- MultiCoreInfo.com
- scalability.org (Scalable Informatics)
- Software Dev Blog (Intel Germany)
- Soft Talk Blog (Intel United Kingdom)
- The Moth (Microsoft)
ATOM程序优化利器
作者: Yanqing Wang (Intel) (99 篇文章) 日期: 十一月 23, 2009 在 4:59 下午
Intel编译器是著名的X86框架优化编译器,充分使用它的优化选项不仅能够使程序性能更好,而且也能同时节省电力,这个对于笔记本、手持设备等都是有显著意义的。Intel编译器现在的版本是11.X,它提供了针对ATOM丰富编译选项。
本文将按照ATOM的特点,对Intel编译器的优化选项依次说明。一方面强调重点,另一方面也便于读者理解。
首先,ATOM CPU是顺序执行的(现在主流的CPU都是乱序执行的),对于乱序执行优化的程序,在ATOM平台反而会有适得其反的效果,并且耗电。这就要求相关的应用程序在运行期有一个自动设别平台的能力,我们可以通过CPUID指令来实现它。对于编译器而言,问题的关键是如何添加正确的编译选项呢?(Windows平台)和axSSE3_ATOM(Linux平台)编译选项粉墨登场,它告诉编译器对源代码进行ATOM方式的优化。
其次,ATOM CPU支持SSE3指令,那么QaxSSE3_ATOM和axSSE3_ATOM同时也要求编译器对源代码进行SSE3指令的优化。
再则,如果程序有大量的big endian和little endian之间转化的程序块,Intel编译器也提供了/Qinstruction:movbe(Windows平台)和-minstruction=movbe(Linux平台)的编译选项,它能够快速高效的提高数据转化能力。
最后,对于运行环境,编译时我们还需要考虑操作系统是否是为IA32还是IA64,比如说通过-m32或者-m64来定义。它结合QaxSSE3_ATOM和axSSE3_ATOM编译选项,对于提高代码的优化成效是很有帮助的。
对于大多数程序员而言,这些编译选项设置还是相对比较繁琐的,那么Intel编译器提供了一个QxSSE3_ATOM(Windows平台)和xSSE3_ATOM(Linux平台)的编译选项来搞定上面的所有事情。它的好处非常的明了,就是简单,能够满足绝大多数的应用程序。缺点就是无法对IA32,IA64,movbe等指令ON/OFF的控制,无法手动在代码尺寸,速度等方面做一个恰当的应用平衡。
小结:
1. QxSSE3_ATOM(Windows平台)和xSSE3_ATOM(Linux平台)编译选项是能够满足ATOM平台的常规优化能力。对于喜欢手动配置优化能力的程序员,可以考虑使用axSSE3_ATOM,instruction等组合来完成。
2. 本文仅仅提供了编译器端的ATOM优化设置,还有一个非常关键的优化点是:如何利用好ATOM平台的多线程能力?
3. 对于其他的优化选项,比如说ipo在ATOM平台依然是有效的,所以应该结合它们一起做一个全盘的优化,达到性能的最佳。
分类: 移动技术, 英特尔® 软件网络 2.0
标签:Atom, 程序优化
如需了解英特尔软件产品相关的性能和优化选项,请参阅优化注意事项.
评论 (12)
| 2009年11月24日 21:33
sb | 我想说, 但是不知道怎么说是好! |
| 2009年11月25日 01:00
石明 | 貌似很高深 |
| 2009年11月25日 07:49
过路 |
楼上的,说不出是不是很不爽,哈哈。 |
| 2009年11月25日 22:21
Yanqing Wang (Intel)
|
使用Intel编译器能够很好的优化ATOM平台,推荐使用它来编译相关的应用程序。 对于ATOM平台主要的几个优化考量点是: 1. ATOM支持Intel超线程技术,所以如何利用好多线程特性是性能提升的重要点。 2. ATOM指令是循序执行的,对于乱序优化的程序,在ATOM平台是会性能变差,并且耗电。 3. ATOM支持SSE3指令集,所以在程序关键段中,应该使用SSE3指令集来优化程序,以达到性能的提升,这个对于节电也是很有帮助的。 4. Intel编译器对于大型程序,一般都有10%或者更高的整体性能提升,在ATOM平台上,最后的全局优化也是有意义的。 |
| 2009年11月25日 23:07
好奇人 | 难道微软要去吃屎了? |
| 2009年11月26日 19:23
thinker | 微软的编译器主要考虑平衡,不会针对对某个特定平台做太多优化的。 |
| 2009年11月30日 03:22
方亮 (Intel)
| 如果针对具体工作流特性使用pgo的话,应该还能获得一些性能的提升 |
| 2009年11月30日 17:26
Yanqing Wang (Intel)
|
多谢方亮补充!是的,通过pgo的优化能够再次提升性能。从你的经验来看,大概有多大的性能提升? |
| 2009年12月01日 23:52
Wu Xiaochang 吴晓昶 (Intel)
| 写的不错,呵呵! |
| 2009年12月02日 05:13
ATOM | 没有关于如何用GCC优化ATOM的经验,也写一些! |
| 2009年12月27日 18:12
Yanqing Wang (Intel)
|
好,过段时间写一下如何在GCC下优化ATOM。 |
引用 (2)
- 英特尔® 软件网络博客 - 中文 » ATOM优化之GCC篇
2009年12月30日 19:43 - ATOM优化之GCC篇 | 死亡皇后岛
2010年01月19日 06:46




林海波