2013-09-05 9 views
9

Ich habe meinen Laptop (CoreI5) auf Ubuntu-64bit 12.04LTS. Ich versuche in AVX für eine Zufallszahlengenerierung zu kommen.Verwenden von AVX mit GCC - avxintrin.h fehlt

In Eclipse-CDT habe ich ein neues C++ "Hello World" -Projekt mit Linux GCC erstellt. Ich habe immintrin.h eingeschlossen und versucht, etwas in einem __m256 Typ zu laden.

Der Compiler wirft einen Fehler:

Type '__m256' was not declared in this scope

ich im immintrin.h sah und suchte nach dem avxintrin.h, nur für den Fall gibt es einen Rechtschreibfehler. Wenn auf avxintrin.h Eclipse Open Erklärung klicken sagt:

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

allthow die Datei auf /usr/lib/gcc/x86_64-linux-gnu/4.6/include/avxintrin.h zur Verfügung steht.

Kann mir jemand einen Hinweis geben, was zu tun ist? Es gibt nicht viele Tutorials oder Hilfe zu AVX online. Ich glaube, ich habe einige Anpassungen in den Compiler-Optionen oder so etwas wie dieses (!?)

Anyways, hier ist der 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; 
} 

Und hier die Fehler:

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

Dank im Voraus!

+1

Haben Sie "-march = native" in Ihre GCC-Flags aufgenommen? Standardmäßig aktiviert GCC keine AVX-Anweisungen. – Nemo

+0

Stellen Sie sicher, dass Sie mit 'gcc -mavx ...' kompilieren. –

+1

Ok, ich habe mit -march = native kompiliert und es hat funktioniert. Vielen Dank ! Aber ich weiß noch nicht, wie man diese Flagge in Eclipse hinzufügt? Ich bin ein bisschen faul, wenn es darum geht, meine eigenen Makefiles zu erstellen. Irgendwelche Ideen? – toebs

Antwort

11

Kompilieren Sie mit -mavx, um dem Compiler mitzuteilen, dass Sie AVX-Anweisungen verwenden möchten.

+0

ja, ist es. add -mavx ist in Ordnung. – user2992389

0

Um das Problem bei Eclipse "Live Code Analyse" zu "beheben" müssen Sie die Einstellungen global (nicht nur für das Projekt) in Fenster -> Einstellungen -> C/C++ -> Build -> Einstellungen (Discovery) -> CDT GCC Eingebaute Compilereinstellungen.

In dieser Seite sollten Sie dies am Ende der Compiler-Spezifikationen hinzufügen: -std = C++ 11 -mavx

dies tun Sie für die Live-Code-Analyse in Eclipse und M256 Daten AVX ermöglichen Typen anerkannt

0

für

gcc -mavx program_name.c

sonst __m256 wird durch den Fehler mit dem Befehl zu kompilieren.

wenn Ihr AVX-Flag Sie ist deaktiviert werden die folgenden Fehler

Illegal instruction (core dumped)

zur Überprüfung der CPU-Flags erhalten benutzen Sie den folloing Befehl

cat/proc/cpuinfo

Verwandte Themen