头节点是 Haswell (AVX2),计算节点是 Skylake (AVX-512),想把 C++代码优化为 AVX-512 指令集。
尝试了 gcc9,加了-march=skylake-avx512直接编不过去。
又试了 icc,加了'-axCORE-AVX512'能编译通过,一运行秒崩溃。
跟管理员一块调试了一整天,谁也不知道怎么回事。最后管理员告诉我说,某些情况下 AVX 指令如果不在本机编译可能会出错,让我试试去计算节点从本机编译。
这个东西感觉已经是玄学范畴了。如果从 AVX2 编译到 AVX-512 都能出错,那交叉编译 ARM 的还活不活了?
顺便说一句,AMD 的-march=znver2比某些普通且自信的玩意要 YES 多了...