Instrukcje AVX a kompilator

0

Cześć,
nie wiem jeszcze o co dokładnie chodzi z instrukcjami AVX, ale z tego co udało mi się już ustalić to można dzięki nim zoptymalizować niektóre operacje(?).
Moje pytanie jest jednak inne. Dużo się mówi o tym, żeby nie bawić się w optymalizację kodu etc. bo obecne kompilatory są tak mądre, że i tak zoptymalizują operacje w taki sposób, że zwykłemu użytkownikowi ciężko będzie zrobić to lepiej.
Chciałem się więc zapytać czy obecne kompilatory korzystają również z tych instrukcji AVX?

1

Jeżeli je włączysz w odpowiednich ustawieniach to tak.

1

Jeśli kompilator może to zrobić, to zrobi. Przykład, możesz zobaczyć, że obie funkcje używają funkcji AVX2 (bo kompiluję na Haswelle, które już to mają), ale zmień sobie na jakąś starszą architekturę i może się okazać, że już nie będzie działać.

1

Wystarczy poinstruować kompilator z jakich instrukcji może korzystać.
Domyślnie kod kompilowany jest tak, by kod wynikowy mógł się wykonywać na dużej gamie procesorów.
Na gcc trzeba dodać -mavx
Na msvs to chyba /arch:AVX

0

taka ciekawostka
http://0x80.pl/notesen/2019-02-02-autovectorization-gcc-clang.html
swoją drogą dawno temu czytałem dla SSE jeszcze dokument z tipami dla autowektoryzacji bo tam gcc lepiej sobie radził w zależności od tego jak kod napisałeś.

1 użytkowników online, w tym zalogowanych: 0, gości: 1