【发布时间】:2015-02-22 15:59:03
【问题描述】:
我用 AVX 内部函数编写了一个程序,该程序在 Ubuntu 12.4 LTS 和 GCC 4.6 上运行良好,编译行如下:g++ -g -Wall -mavx ProgramName.cc -o ProgramName
问题开始当我将编译器更新到 4.7 和 4.8.1 版本以支持 16 位 AVX2 内在函数时,gcc 4.6 不支持该函数
目前,更新的 gcc 版本可以正确编译 AVX 和 AVX2 程序。但是,当我运行程序时,它给了我以下错误:非法指令(核心转储),虽然它在 gcc 4.6 上工作
我的问题是:编译和运行 AVX 和 AVX2 内在函数的完美方法是什么
【问题讨论】:
-
我使用 -mavx2 而不是 -mavx 编译 AVX2 程序
-
你确定你的处理器支持
AVX2吗?目前只有 Haswell 芯片可以做 -
@MaratDukhan Broadwell 你也知道了
-
AVX2 不在该列表中。
-
基本上有两种解决方案:1)不要使用AVX2,或者2)买一台新电脑。作为潜在的 3rd,让其他人运行它,但这会使调试变得困难,性能调整变得更加困难。