V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
tarsier
V2EX  ›  Linux

gcc/g++针对特定的intel架构处理器有何编译优化选项?

  •  
  •   tarsier ·
    liuguojun · 2013-07-27 19:54:12 +08:00 via Android · 5959 次点击
    这是一个创建于 3897 天前的主题,其中的信息可能已经有所发展或是发生改变。
    按理说intel的ivy bridge会提供很多额外的指令,有些运算比如大数运算或者浮点运算的库如果能在编译时用上的话,按理说会快不少
    15 条回复    1970-01-01 08:00:00 +08:00
    madeye
        1
    madeye  
       2013-07-27 20:29:51 +08:00 via Android
    msse -msse2 -msse3 -mssse3 -msse4 -msse4.1 -msse4.2 -mavx
    ShadowStar
        2
    ShadowStar  
       2013-07-27 20:57:19 +08:00
    -march=XXX
    Golevka
        3
    Golevka  
       2013-07-27 21:19:15 +08:00
    -march=prescott
    tarsier
        4
    tarsier  
    OP
       2013-07-27 21:46:12 +08:00 via Android
    @madeye 都加上?
    tarsier
        5
    tarsier  
    OP
       2013-07-27 21:46:29 +08:00 via Android
    @Golevka 这是啥意思?
    VYSE
        6
    VYSE  
       2013-07-27 22:03:16 +08:00 via Android
    除非你的程序需要使用这些新指令集的东西,否则提升很小
    tarsier
        7
    tarsier  
    OP
       2013-07-27 22:23:47 +08:00 via Android
    @VYSE 比如说我有许多需要大数做加减乘除的操作呢?如果指令集能提供,那会很牛逼啊
    funcman
        8
    funcman  
       2013-07-27 22:29:51 +08:00
    如果你真的需要这方面的优化,那么你应该不会满足于别人的介绍,而是自己去看一下编译器生成的汇编。编译器的优化不够劲的时候,你还会自己去写一些汇编代码。
    hadoop
        9
    hadoop  
       2013-07-27 23:10:51 +08:00
    @funcman 我是想得到一些指导性意见,您这个建议对我来说太高端了啊
    funcman
        10
    funcman  
       2013-07-27 23:37:22 +08:00
    @hadoop 一点不高端,汇编是本科必学的,看gcc生成的指令汇编只需要加参数就行了,Intel的指令集都可以查到,gcc可以内嵌汇编,还可以链接nasm等汇编器生成的lib。如果真的需要这些东西,学起来并不难。我第一次接触MMX指令时,连汇编都不太会,抄一抄大致也懂了。

    另外,实际上主流编译器都支持内置函数的方式调用Intel的这些SIMD指令功能。这个我前面忘记讲了。

    不想弄这个,就加编译参数呗,黑盒的方式测一下性能,应该也提升了不少。
    mr_pppoe
        11
    mr_pppoe  
       2013-07-28 01:46:03 +08:00
    试试Intel的Math Kernel Library ?非商业用途的话, Linux下有免费的许可
    tarsier
        12
    tarsier  
    OP
       2013-07-28 02:44:01 +08:00 via Android
    @mr_pppoe link时候有时会和gnu的不兼容
    luikore
        13
    luikore  
       2013-07-28 03:15:17 +08:00
    sse 大部分可以扔掉了, 还有个今年的 -mavx2
    不过一些库如 openssl 完全不管编译器的 assembler, 自己对某些算法用 .byte 加特殊指令
    efi
        14
    efi  
       2013-07-28 06:42:23 +08:00
    如果真是大数运算或者浮点运算的库,开启平台特性的工作一般都已经帮你操心过了,你就不用操心了。

    随便举个例子,http://www.fftw.org/,首页就说Supports SSE/SSE2/Altivec, since version 3.0. Version 3.3.1 supports AVX and ARM Neon。这是特性的一种(hardware enablement)。
    Ricepig
        15
    Ricepig  
       2013-07-28 13:42:48 +08:00
    这贴很有意思啊

    10楼和14楼是典型的轮子党和拿来党,其实都挺好
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5322 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:06 · PVG 16:06 · LAX 01:06 · JFK 04:06
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.