Używam laptopa (coreI5) na Ubuntu-64bit 12.04LTS. Próbuję dostać się do AVX w celu generowania losowej liczby.Używanie AVX z GCC - brak avxintrin.h
W Eclipse-CDT stworzyłem nowy projekt C++ "Hello World" z wykorzystaniem Linuksa GCC. Dołączyłem immintrin.h i próbowałem załadować coś w typie __m256.
Compiler wyrzuca błąd:
Type '__m256' was not declared in this scope
Spojrzałem w immintrin.h i spojrzał na avxintrin.h, na wszelki wypadek, nie jest błąd w pisowni. Po kliknięciu otwartą deklarację o avxintrin.h Eclipse mówi:
Could not find include file 'avxintrin.h' on include paths
allthow plik jest dostępny w /usr/lib/gcc/x86_64-linux-gnu/4.6/include/avxintrin.h.
Czy ktoś może mi podpowiedzieć, co robić? Nie ma zbyt wielu samouczków ani pomocy dotyczących AVX online. Myślę, że trzeba dokonać pewnych korekt w opcjach kompilatora lub coś takiego (!?)
Anyways Oto kod:
#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;
}
a tu błędy:
../src/seminar.cpp:15:2: error: '__m256' was not declared in this scope
../src/seminar.cpp:15:9: error: expected ';' before 'test'
Dzięki z góry!
Czy dodajesz '-march = native' do flag GCC? Domyślnie GCC nie włącza instrukcji AVX. – Nemo
Upewnij się, że kompilujesz z 'gcc -mavx ...'. –
Ok, skompilowałem z -march = native i zadziałało. Dzięki ! Ale nadal nie wiem, jak dodać tę flagę w Eclipse? Jestem trochę leniwy, jeśli chodzi o tworzenie własnych plików Makefile. Jakieś pomysły? – toebs