【发布时间】:2013-09-05 13:44:50
【问题描述】:
我在 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'
提前致谢!
【问题讨论】:
-
您的 GCC 标志中是否包含
-march=native?默认情况下,GCC 不会启用 AVX 指令。 -
确保使用
gcc -mavx ...进行编译。 -
好的,我用 -march=native 编译并且它有效。谢谢 !但是我仍然不知道如何在 Eclipse 中添加这个标志?在创建自己的 makefile 时,我有点懒惰。有什么想法吗?
-
也懒得看 eclipse 文档?懒得上网搜索“eclipse 添加编译器标志”之类的东西?