11

我在 Ubuntu-64bit 12.04LTS 上运行我的笔记本电脑(coreI5)。我正在尝试进入 AVX 以生成一些随机数。

在 Eclipse-CDT 中,我使用 Linux GCC 创建了一个新的 C++“Hello World”项目。我包含了 immintrin.h 并尝试加载 __m256 类型的内容。

编译器抛出错误:

Type '__m256' was not declared in this scope

我查看了 immintrin.h 并查找了 avxintrin.h,以防万一出现拼写错误。在 avxintrin.h Eclipse 上单击打开声明时说:

Could not find include file 'avxintrin.h' on include paths

无论如何,该文件在 /usr/lib/gcc/x86_64-linux-gnu/4.6/include/avxintrin.h 中可用。

谁能给我提示,该怎么办?网上没有很多关于 AVX 的教程或帮助。我想我必须对编译器选项或类似的东西进行一些调整(!?)

无论如何,这里是代码:

#include <immintrin.h>
#include <iostream>
using namespace std;

int main() {
    float out[8];
    float a[8] = { 0.0,1.0,2.0,3.0,4.0,5.0,6.0,7};
    __m256 test =  _mm256_load_ps(&a[0]);
    cout << "" << endl; // prints 
    return 0;
}

这里的错误:

../src/seminar.cpp:15:2: error: '__m256' was not declared in this scope
../src/seminar.cpp:15:9: error: expected ';' before 'test'

提前致谢!

4

3 回答 3

17

编译-mavx以告诉编译器您要使用 AVX 指令。

于 2014-06-24T22:23:10.003 回答
0

编译使用命令

gcc -mavx 程序名.c

否则 __m256 将通过错误。

如果您的 avx 标志被禁用,您将收到以下错误

非法指令(核心转储)

检查您的 cpu 标志使用以下命令

猫 /proc/cpuinfo

于 2017-07-11T06:54:30.540 回答
0

为了“修复”eclipse“实时代码分析”上的问题,您必须在 Window -> Preferences -> C/C++ -> Build -> Settings (Discovery) 中全局更新设置(不仅仅是项目)-> CDT GCC 内置编译器设置。

在该页面中,您应该在编译器规范的末尾添加:-std=c++11 -mavx

这样做您将启用 avx 以在 eclipse 中进行实时代码分析,并且 m256 数据类型将被识别

于 2017-01-03T15:10:13.920 回答