我在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上的open声明时,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'
提前致谢!
答案 0 :(得分:12)
与-mavx
编译,告诉编译器您要使用AVX指令。
答案 1 :(得分:0)
为了“修复”eclipse“实时代码分析”的问题,你必须在Window中全局更新设置(不仅仅是项目) - &gt;偏好 - &gt; C / C ++ - &gt;构建 - &gt;设置(发现) - &gt; CDT GCC内置编译器设置。
在该页面中,您应该在编译器规范的末尾添加它: -std = c ++ 11 -mavx
这样做可以在eclipse中启用avx进行实时代码分析,并且可以识别m256数据类型
答案 2 :(得分:0)
用于编译使用命令
gcc -mavx program_name.c
否则__m256将通过错误。
如果你的avx标志被禁用,你将收到以下错误
非法指令(核心倾销)
用于检查cpu标志使用下面的命令
cat / proc / cpuinfo