Intel Atom的GCC优化标志

时间:2020-03-06 14:30:13  来源:igfitidea点击:

我正在为Intel Atom处理器开发性能至关重要的应用程序。

此CPU的最佳gcc优化标志是什么?

解决方案

GCC黑客之一斯科特·罗伯·拉德(Scott Rober Ladd)提供了一个很酷的框架,称为Acovea(通过进化算法对编译器选项进行分析)。这是一个遗传/进化算法框架,它试图通过自然选择来优化特定代码段的GCC优化标志。

它的工作原理是这样的:我们编写了一些基准代码(实际上必须很少,因为它将被重新编译并执行数千次),它代表了我们要优化的大型程序的性能特征。然后,Acovea会随机构建几十个不同的GCC命令行并进行编译,并针对每个命令行运行基准测试。然后,允许这些命令行中的最好的"交配"和"繁殖"新的"孩子"(希望)从其"父母"那里继承最好的"基因"。这个过程重复了几十个"世代",直到出现稳定的命令行标志集。

我不知道GCC是否具有任何特定于Atom的优化标志,但是Atom核心应该与原始的Pentium非常相似,并增加了MMX / SSE / SSE2 / SSE3 / SSSE3指令集。当然,只有在代码为浮点或者大量使用DSP的情况下,这些才有意义。

也许我们可以尝试:

gcc -O2 -march = pentium -mmmx -msse -msse2 -msse3 -mssse3 -mfpmath = sse

就像奔腾4:

-march=prescott -O2 -pipe -fomit-frame-pointer

好吧,Gentoo Wiki声明了此预言:

http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Atom_N270

CHOST =" i686-pc-linux-gnu"

CFLAGS ="-march = prescott -O2 -pipe -fomit-frame-pointer"

CXXFLAGS =" $ {CFLAGS}"

我有一个脚本,可以自动为CPU和编译器组合选择适当的标志。
我刚刚更新了它以支持Intel Atom:

http://www.pixelbeat.org/scripts/gcccpuopt

更新:
我之前为Atom指定了-march = prescott,但对其进行了更多研究
表明Atom符合ISA的最低要求,因此-march = core2更合适。
但是请注意,原子是有序的核,最后一个是原始的奔腾。
因此,-mtune = pentium也可能更好。不幸的是我没有
要测试的原子。如果有人可以对两者之间的区别进行基准测试,我将不胜感激:

-march=core2 -mfpmath=sse -O3
-march=core2 -mtune=pentium -mfpmath=sse -O3

更新:
这是一些有关Atom的低级优化的不错的文章:

  • http://virtualdub.org/blog/pivot/entry.php?id=286
  • http://virtualdub.org/blog/pivot/entry.php?id=287

这是博客的一些交叉花粉...我真正希望的是将Firefox编译为atom的基准测试。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

地址:http:// ivoras.sharanet.org/blog/tree/2009-02-11.optimizing-for-atom.html

"事实证明,使用-mtune = native,gcc看起来做得很不错,而mtune = generic则可以接受。在此数学繁重的基准测试中,最大的收益来自使用SSE进行数学计算,但即使如此,通过调整pentium4被销毁。

"最快和最慢的优化之间的差异为21%。使用行进而不是mtune的影响可以忽略不计(没有足够的差异来说明它是否有帮助)。

"(我将k6包括在内仅供参考,我知道Atom没有3dnow)

"最新更新:调整k8(使用SSE和O3)可获得182的最高分数。"

从英特尔开始,MID

使用GCC进行编译时,有一些建议使用的标志:

  • -O2或者-O1:O2标志优化速度,而-O1标志优化大小
  • -msse3
  • -march = core2
  • -mfpmath = sse

i686最近。不要选择core2.

GCC 4.1 -O3 -march = i686
GCC 4.3 -O3 -march = native

GCC 4.1 -O4-快速数学
GCC 4.3 -O4-快速数学

http://macles.blogspot.com/2008/09/intel-cc-compiler-gcc-and-intel-atom.html

GCC 4.5将包含-march = atom和-mtune = atom选项。

资料来源:http://gcc.gnu.org/gcc-4.5/changes.html

英特尔C编译器(icc)呢?至少在随之而来的基准上,对gcc的统治相当引人注目...