Aktualność
Adrian Kotowski, Poniedziałek, 15 października 2018, 14:24

Taka mała niespodzianka. Na youtube’owym kanale Level1Techs pojawił się interesujący film na temat obecności instrukcji FMA4 w procesorach bazujących na architekturze AMD Zen. Do tej pory myślano, że czerwoni całkowicie zrezygnowali z tego zestawu, ale okazuje się, że obsługa nadal istnieje, choć w najnowszych procesorach jest po prostu ukryta.

Instrukcje FMA4 zostały wprowadzone przez AMD w procesorach bazujących na architekturze Bulldozer, a potem trafiły też do Piledrivera, Steamrollera i Excavatora. Rozwiązanie jest wykorzystywane do operacji typu „pomnóż i dodaj” wykonywanych w jednym kroku, w których zaokrąglany jest dopiero wynik końcowy. FMA4 różni się od FMA3 liczbą operandów, których, jak sama nazwa wskazuje, są cztery. Tym samym przykładowy wzór operacji wygląda tak: a=b*c+d. W przypadku FMA3 mamy za to np.: a=b*c+a.

AMD było pionierem we wprowadzaniu tych instrukcji, ale Intel niestety nie poszedł śladami swojego konkurenta i trudno powiedzieć, czy kiedykolwiek się na to zdecyduje. Co ważne, oficjalnie także architektura Zen nie obsługuje już instrukcji FMA4, choć jak udowodnił twórca kanału Level1Techs, nadal są one zaszyte w procesorze. Odkrycie tego było możliwe dzięki wykorzystaniu do testów bibliotek matematycznych OpenBLAS.

FMA4 vs AVX

Po odpaleniu obliczeń program zwrócił błąd „illegal instruction”, ale równocześnie wyświetlił wyniki. Rezultaty porównano z tymi uzyskanymi przy użyciu instrukcji AVX i trzeba przyznać, że FMA4 było w każdym z testów po prostu wydajniejsze. Brak tego zestawu wynika najpewniej z jakichś błędów, na które AMD natrafiło podczas testów przedprodukcyjnych wersji Ryzenów i Threadripperów. Twórca zamieszczonego w newsie materiału wideo wskazuje też na możliwość pozostawienia FMA4, by zapewnić kompatybilność z wybranymi programami. 

Warto przypomnieć, że samo AMD reklamowało dostępność tych instrukcji w modelach APU Raven Ridge, takich jako choćby całkiem atrakcyjny cenowo Ryzen 5 2400G. Jak dobrze wiecie, te chipy również zostały zbudowane z wykorzystaniem architektury Zen i tak jak reszta nowych procesorów czerwonych, nie zostały oficjalnie wyposażone w zestaw instrukcji FMA4. 

Źródło: Level1Techs
Ocena aktualności:
Ocen: 5
Zaloguj się, by móc oceniać
pwil (2018.10.15, 14:47)
Ocena: 83

0%
U AMD ukrytym bonusem są dodatkowe instrukcje zwiększające wydajność. U Intela ukrytym bonusem są co najwyżej instrukcje zwiększające podatności ;-)
Edytowane przez autora (2018.10.15, 14:47)
Zoltar86 (2018.10.15, 14:54)
Ocena: 26

0%
Zaorałeś tym tekstem.
Stjepan (2018.10.15, 15:00)
Ocena: 28

0%
Lepiej mieć niż nie mieć dodatkowych instrukcji które poprawiają wydajność, u Intela za takie bonusy zapłacisz 500 zł więcej. :)
Promilus1984 (2018.10.15, 15:20)
Ocena: 25

0%
Nie jest tak jak napisano w newsie. AMD było pionierem we wprowadzaniu tych instrukcji, ale w rzeczywistości proponowało FMA3 jako część rozszerzenia roboczo nazywanego SSE5. Intel uznał, że zrobią 4 operandowe AVX i FMA. Później intel wycofał się z FMA4, ale AMD uznało, że może jeszcze zmienią zdanie. Z Bulldozer AMD wprowadziło FMA4, a intel pozostał przy FMA3. Z Piledriver AMD dodało FMA3, a z Ryzen wycofało (oficjalnie) FMA4. Wreszcie zestaw instrukcji FMA jest czymś innym niż AVX (innymi słowy FMA to nie jest subset AVX). Co za tym idzie nie wiem jak wygląda kompilacja określana jako AVX - czy są tam używane FMA3 czy też nie. Zasadniczo to, że Ryzen z FMA4 liczy szybciej niż na samym AVX w sumie nikogo dziwić nie powinno. Rzecz w tym, że z FMA3 liczyłby pewnie tak samo szybko ;)
Telvas (2018.10.15, 15:37)
Ocena: 8

0%
Atak_Snajpera @ 2018.10.15 15:26  Post: 1169999
Promilus1984 @ 2018.10.15 15:20  Post: 1169997
Nie jest tak jak napisano w newsie. AMD było pionierem we wprowadzaniu tych instrukcji, ale w rzeczywistości proponowało FMA3 jako część rozszerzenia roboczo nazywanego SSE5. Intel uznał, że zrobią 4 operandowe AVX i FMA. Później intel wycofał się z FMA4, ale AMD uznało, że może jeszcze zmienią zdanie. Z Bulldozer AMD wprowadziło FMA4, a intel pozostał przy FMA3. Z Piledriver AMD dodało FMA3, a z Ryzen wycofało (oficjalnie) FMA4. Wreszcie zestaw instrukcji FMA jest czymś innym niż AVX (innymi słowy FMA to nie jest subset AVX). Co za tym idzie nie wiem jak wygląda kompilacja określana jako AVX - czy są tam używane FMA3 czy też nie. Zasadniczo to, że Ryzen z FMA4 liczy szybciej niż na samym AVX w sumie nikogo dziwić nie powinno. Rzecz w tym, że z FMA3 liczyłby pewnie tak samo szybko ;)

A czy przypadkiej zestaw FMA nie jest domyślnie częścią AVX2? Intel wycofał się z FMA4 bo ponoć był zbyt skomplikowany w implementacji.

W AVX (jak sama nazwa wskazuje - Advanced Vector eXtensions) masz FMA wektorowe, na wielu 'spakowanych' (czy jak tam się 'packed' tłumaczy ;) ) zestawach danych wejściowych na raz.

P.S. Fajnie opisane na wiki, łącznie z historią AMD vs Intel w tym temacie: https://en.wikipedia.org/wiki/FMA_instruction_set
Edytowane przez autora (2018.10.15, 15:42)
Promilus1984 (2018.10.15, 15:44)
Ocena: 11

0%
A czy przypadkiej zestaw FMA nie jest domyślnie częścią AVX2?

Niby dlaczego? Domyślnie to może intelowski kompilator traktować procesor z AVX2 jak posiadający FMA3 co nie zmienia, że jedno z drugim ma niewiele wspólnego. FMA3 jest zestawem który na AMD pojawił się w Piledriver (Vishera) gdzie z kolei nie było AVX2 tylko AVX. W przypadku intela mogło się przyjąć, że to część AVX2, bo w Haswellu wprowadzono je razem, ale te zestawy mają osobne flagi i mogą działać niezależnie (tj. można wygenerować kod AVX2 bez FMA). Intel się wycofał bo nie chciało mu się 4 operandowych instrukcji implementować, ale już fest szerokie SIMDy (AVX512) to nie miał problemu... Ot wpuścili AMD na minę i tyle.
waszu (2018.10.15, 15:45)
Ocena: 0

0%
Promilus1984 @ 2018.10.15 15:20  Post: 1169997
3. Z Piledriver AMD dodało FMA3, a z Ryzen wycofało (oficjalnie) FMA4. Wreszcie zestaw instrukcji FMA jest czymś innym niż AVX (innymi słowy FMA to nie jest subset AVX). Co za tym idzie nie wiem jak wygląda kompilacja określana jako AVX - czy są tam używane FMA3 czy też nie. Zasadniczo to, że Ryzen z FMA4 liczy szybciej niż na samym AVX w sumie nikogo dziwić nie powinno. Rzecz w tym, że z FMA3 liczyłby pewnie tak samo szybko ;)


Jeśli implementacje wzieli z piledrivera, to o połowę wolniej. Przynajmniej tak wyszło agnerowi w testach tu->
https://www.agner.org/optimize/blog/read.php?i=285&v=t
Agner o piledriverach

The throughput of FMA3 instructions is only half as much as the throughput of FMA4 instructions, even though they are doing exactly the same calculations.

Memory writes with the 256-bit AVX registers are exceptionally slow. The measured throughput is 5 - 6 times slower than on the previous model (Bulldozer), and 8 - 9 times slower than two 128-bit writes. No explanation for this has been found. This design flaw is likelty to negate any advantage of using the AVX instruction set.

Edytowane przez autora (2018.10.15, 15:45)
Promilus1984 (2018.10.15, 16:26)
Ocena: 4

0%
@waszu - uruchomiłem apkę z
https://github.com/Mysticial/Flops
swego czasu jak miałem visherę też odpalałem i jak najbardziej był wzrost przy stosowaniu FMA3 i na Ryzen, i na Vishera więc nie rozumiem czemu u kogoś FMA3 na vishera działało gorzej. Odpalałem też FMA4 i był tak delikatny wzrost, że można by go wrzucić do niepewności pomiarowej. Jeśli nawet był jakiś błąd powodujący, że FMA3 na vishera działało znacząco wolniej niż AVX czy FMA4 to pewnie był dawno temu poprawiony w mikrokodzie przy aktualizacji BIOS. W przypadku apki z linka i R5 wynik pojedynczej precyzji ze 128bit AVX multiply + add to 33GFLOPS, 128bit FMA3 to 54GFLOPS. 256bit AVX multiply+add to 43.9GFLOPS, a 256bit FMA3 to 54GFLOPS. Nic zatem nie wskazuje by FMA3 na AMD było obarczone jakimś narzutem wydajnościowym, co najwyżej była możliwość crasha, ale też została zlikwidowana łatką w BIOS.
edit - na ryzen odpaliłem binarkę skompilowaną dla piledrivera i wynik FMA4 dla single precision 128bit to 46GFLOPS czyli gorzej niż FMA3.
Edytowane przez autora (2018.10.15, 16:30)
waszu (2018.10.15, 16:53)
Ocena: 1

0%
Promilus1984 @ 2018.10.15 16:26  Post: 1170009
@waszu - uruchomiłem apkę z
https://github.com/Mysticial/Flops
swego czasu jak miałem visherę też odpalałem i jak najbardziej był wzrost przy stosowaniu FMA3 i na Ryzen, i na Vishera więc nie rozumiem czemu u kogoś FMA3 (...)

Biorąc pod uwagę, że apka bazuje na pracy Agnera, czyli kolesia który odkrył takie zachowanie się tych instrukcji to albo faktycznie fix w mikrokodzie, albo optymalizacje i obejścia pod 'amdyzmy' - z tego co widze projekt jest optymalizowany pod maksymalne ilości gigaflopów, więc możliwe że Agner podał jakiś mocno skrajny przypadek, albo flopsy leca pod jakiś mocno skrajny.
Może się przekopie przez źródła i zobaczę jeśli nie zapomnę :E
Zaloguj się, by móc komentować
Aktualności
Zgadniecie, jakie marki z Państwa Środka cieszą się u nas największym wzięciem? 6
Dobra wiadomość, ale czy na to tak naprawdę czekają użytkownicy Switcha? 7
Dzięki internetowi jest ona niepotrzebna. 11
Przewody już są, potrzeba jeszcze sprzętu. 26
Wiedźmin 3 z kolejną nagrodą. 19
Firma rośnie jak na drożdżach. 11
Artykuły spokrewnione
Facebook
Ostatnio komentowane