我正在开发一个性能至关重要的应用程序用于英特尔原子处理器。

什么是最好的海湾合作委员会优化标志,这CPU?

有帮助吗?

解决方案

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

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

其他提示

有一个很酷的框架叫做 Acovea(通过进化算法分析编译器选项),由GCC黑客之一Scott Rober Ladd撰写。它是一个遗传/进化算法框架,试图通过自然选择优化特定代码片段的GCC优化标记。

它的工作原理如下:你编写了一小段基准代码(真的必须很少,因为它将被重新编译并执行数千次)代表性能特征您要优化的较大程序。然后,Acovea随机构建了几十个不同的GCC命令行,并编译并运行每个命令行的基准测试。然后允许这些命令行中最好的命令行“交配”。和“繁殖”新的“孩子” (希望)继承了最好的“基因”来自他们的“父母”。这个过程重复了几十个“世代”,直到出现一组稳定的命令行标志。

我的脚本中自动选择适当的标志对你的CPU和编译器的组合。我只是更新了它支持英特尔原子:

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

更新:我以前指定的三月=普雷斯科特为原子,但是在寻找更多的进入它 表明,原子梅伦ISA符合要求,因此日=酷睿2更为合适。但请注意,原子是为了核心,最后的那些原奔腾。因此,这可能更好地-mtune=奔腾。不幸的是我没有 一个原子试验。我会很感激的如果任何人都可能的基准的比较:

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

更新:这里有几个不错的文章在低级的优化用于原子:

嗯,Gentoo wiki表示赞成:

http://en.gentoo-wiki.com/wiki/Safe_Cflags/英特尔#Atom_N270

CHOST = QUOT; i686的-PC-Linux的GNU"

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

CXXFLAGS = QUOT; $ {CFLAGS}"

从英特尔, 开始与中

当使用的海湾合作委员会汇编,有一些建议标志的使用:

  • -O2或-O1:O2旗优化的速度,同时的-O1标志的优化用于尺寸
  • -msse3
  • -三月=酷睿2
  • -mfpmath=sse

就像Pentium 4一样:

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

我不知道GCC是否还有任何特定于Atom的优化标志,但Atom核心应该与原来的Pentium非常相似,MMX / SSE / SSE2 / SSE3 / SSSE3非常重要指令集。当然,如果您的代码是浮点数或DSP重的话,这些只会产生显着的差异。

也许你可以试试:

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

这里有一些博客的交叉传播......我真正希望的是一个firefox编译的原子基准......

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

"事实证明,gcc似乎用-mtune = native做了一个非常体面的工作,而mtune = generic是可以接受的。最大的收益(在这个数学繁重的基准测试中)来自于使用SSE进行数学运算,但即使它们也被调整为pentium4而被破坏。

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

"(我已经包含了k6仅供参考 - 我知道Atom没有3dnow)

“更新晚期:调整k8(使用SSE和O3)会获得略高于182的最高分数。”

i686最接近。不要去核心。

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

GCC 4.1 -O4 -ffast-math GCC 4.3 -O4 -ffast-math

http:// macles .blogspot.com / 2008/09 /英特尔-CC-编译器GCC-和英特尔-atom.html

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top