V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
xuegy
V2EX  ›  程序员

从 AVX2 机器编译 AVX-512 代码失败

  •  
  •   xuegy · 2021-04-06 11:45:06 +08:00 · 2602 次点击
    这是一个创建于 1361 天前的主题,其中的信息可能已经有所发展或是发生改变。

    头节点是 Haswell (AVX2),计算节点是 Skylake (AVX-512),想把 C++代码优化为 AVX-512 指令集。

    尝试了 gcc9,加了-march=skylake-avx512直接编不过去。

    又试了 icc,加了'-axCORE-AVX512'能编译通过,一运行秒崩溃。

    跟管理员一块调试了一整天,谁也不知道怎么回事。最后管理员告诉我说,某些情况下 AVX 指令如果不在本机编译可能会出错,让我试试去计算节点从本机编译。

    这个东西感觉已经是玄学范畴了。如果从 AVX2 编译到 AVX-512 都能出错,那交叉编译 ARM 的还活不活了?

    顺便说一句,AMD 的-march=znver2比某些普通且自信的玩意要 YES 多了...

    第 1 条附言  ·  2021-04-06 12:25:08 +08:00
    代码肯定没毛病,在 AVX2 上面跑的好好的。这玩意真是面向编译器编程啊...
    7 条回复    2021-04-06 17:43:22 +08:00
    matolv
        1
    matolv  
       2021-04-06 11:59:24 +08:00
    “又试了 icc,加了'-axCORE-AVX512'能编译通过,一运行秒崩溃。”
    Haswell 没有 avx512,你怎么运行得起来?除非你代码里面 fall back 到 avx2 或者 sse

    跑分软件 cinebench r23 抛弃了 avx512,总体而言开启 avx512 以后导致的 cpu 降频+高能耗总体比 avx2 并不占优,skylake 构架落后不能光靠一个 simd 指令集翻身

    另外 amd 已经有 Znver3 了,只是编译器还没完全适配完
    参考: https://www.phoronix.com/scan.php?page=news_item&px=Znver3-GCC-10-Backport
    xuegy
        2
    xuegy  
    OP
       2021-04-06 12:06:13 +08:00
    @matolv “计算节点是 Skylake (AVX-512)”
    vk42
        3
    vk42  
       2021-04-06 12:07:37 +08:00
    @matolv lz 应该是说在服务器上崩溃

    不过话说这问题问的,编译错误信息没有,崩溃输出也没有……
    xuegy
        4
    xuegy  
    OP
       2021-04-06 12:22:41 +08:00
    @vk42 gcc 压根就没报错误信息,直接不生成.o 然后退出了。

    icc 编译出来的报个 SIGFPE,肯定是编译器的锅了。
    whee1
        5
    whee1  
       2021-04-06 12:54:53 +08:00
    @matolv #1 可能需要 libc 等依賴庫都是-march=skylake-avx512 才行。
    連 funtoo 都沒有支持 avx512 的 subarch,不過可以使用 https://www.funtoo.org/Intel64-skylake 這個 stage3 編譯一個出來試試。實在不行就加-march=skylake-avx512 重新編譯一下 gcc glibc,總比自己 bootstrap 一套工具鏈簡單點。

    換個編譯選項就崩潰的問題,我也遇到過。甚至有些程序即使是-s -g0 生成的,你把他 strip 一下就不行了。
    coolmenu
        6
    coolmenu  
       2021-04-06 16:51:15 +08:00
    用 intel 自己的编译器测试一下?
    henices
        7
    henices  
       2021-04-06 17:43:22 +08:00 via Android
    -march=native 试试
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2812 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 32ms · UTC 02:28 · PVG 10:28 · LAX 18:28 · JFK 21:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.