我开发的英特尔Atom处理器性能的关键应用。
什么是此CPU最好的gcc的优化标志?
我开发的英特尔Atom处理器性能的关键应用。
什么是此CPU最好的gcc的优化标志?
GCC 4.5将包含-march =原子和-mtune =原子选项。
来源: http://gcc.gnu.org/gcc-4.5/changes.html
有一个叫爽框架Acovea(通过进化算法编译器选项的分析) ,由斯科特·罗伯特·拉德,海湾合作委员会的黑客之一。 这是一个遗传/进化算法的框架,试图优化GCC优化标记通过自然选择的特定的一段代码。
它的工作原理是这样的:你写一小片的基准码(它真的必须是小的,因为它会被重新编译和执行数千次),表示要优化大程序的性能特点。 然后Acovea随机建一些几十种不同的GCC COMMANDLINES和编译和运行与他们每个人的标杆。 那么最好的这些COMMANDLINES被允许“龙虎斗”和“培育”新的“孩子”从他们的“父母”这(希望)继承了最好的“基因”。 这个过程重复了几十个“代”,直到一个稳定的一系列命令行标志的出现。
我已经是自动选择相应的标志为你的CPU和编译器组合的脚本。 我刚刚更新,它支持英特尔凌动:
http://www.pixelbeat.org/scripts/gcccpuopt
更新:我以前指定-march =普雷斯科特Atom的,但看多进它表明,Atom是Merom处理器符合ISA,因此-march = core2的是比较合适的。 然而,需要注意的是原子在有序核心,最后这些是原始奔腾。 因此,它可能会更好-mtune =奔腾为好。 不幸的是我没有一个Atom测试。 我真的很感激,如果任何人都可以基准之间的差异:
-march=core2 -mfpmath=sse -O3
-march=core2 -mtune=pentium -mfpmath=sse -O3
更新:这里有几个低级别的优化Atom的不错的文章:
好了,Gentoo的维基普雷斯科特指出:
http://en.gentoo-wiki.com/wiki/Safe_Cflags/Intel#Atom_N270
CHOST="i686-pc-linux-gnu"
CFLAGS = “ - 行军=普雷-O2 -pipe -fomit帧指针”
CXXFLAGS = “$ {CFLAGS}”
从英特尔入门MID
当使用GCC编译,有几个建议使用的标志:
就像奔腾4:
-march=prescott -O2 -pipe -fomit-frame-pointer
我不知道如果GCC有任何具体的Atom处理器的优化参数还没有,但凌动核心应该是非常类似于原来的奔腾,用非常显著此外,MMX / SSE / SSE2 / SSE3 / SSSE3指令集。 当然,这些只会让你的代码是浮点DSP或重一个显著差异。
也许你可以试试:
GCC -O2 -march =奔腾-mmmx -msse -msse2 -msse3 -mssse3 -mfpmath = SSE
这里的博客...我真的很希望为一些跨pollenation是一个Firefox编译换原子基准...
地址:http:// ivoras.sharanet.org/blog/tree/2009-02-11.optimizing-for-atom.html
“事实证明,GCC似乎做一个非常体面的工作与-mtune =本地人,mtune中=一般是比接受。最大的收获(在这个数学重基准)来使用SSE的数学,但即使他们通过调整为Pentium4的被破坏。
“最快和最慢的优化之间的差别是21%。利用行军,而不是mtune中的影响是微不足道的(没有足够的差异来判断它有助于与否)。
“(我已经包括K6仅供参考 - 我知道原子不包含3DNow)
“晚更新:调整为K8(与SSE和O3)产生的182略高最好成绩”
i686的最接近。 不要去酷睿2。
GCC 4.1 -O3 -march = i686的GCC 4.3 -O3 -march =天然
GCC 4.1 -O4 -ffast,数学GCC 4.3 -O 4 -ffast,数学
http://macles.blogspot.com/2008/09/intel-cc-compiler-gcc-and-intel-atom.html