Using AVX with GCC - avxintrin.h missing

toebs picture toebs · Sep 5, 2013 · Viewed 22.8k times · Source

I'm running my Laptop(coreI5) on Ubuntu-64bit 12.04LTS. I'm trying to get into AVX for some random number generation.

In Eclipse-CDT I created a new C++ "Hello World" project using Linux GCC. I included immintrin.h and tried just to load something in a __m256 type.

The Compiler throws an Error:

Type '__m256' was not declared in this scope

I looked in the immintrin.h and looked for the avxintrin.h, just in case, there is a spelling error. When clicking open declaration on avxintrin.h Eclipse says:

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

allthow the file is available at /usr/lib/gcc/x86_64-linux-gnu/4.6/include/avxintrin.h.

Can anyone give me hint , what to do? There are not a lot of tutorials or help about AVX online. I think I have to make some adjustments in the compiler options or something like this(!?)

Anyways here is the code:

#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;
}

And here the errors:

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

Thanks in advance!

Answer

Greg Allen picture Greg Allen · Jun 25, 2014

Compile with -mavx to tell the compiler that you want to use AVX instructions.