FLOPS - o co chodzi?

Umiesz liczyć, nie licz FLOPs-ów

Michał Porębski | 29.04, 23:00

PS5 Pro i Switch 2 powoli wyłaniają się zza linii horyzontu, a więc i nadszedł czas na przepychankę o legendarne już flopsy. Bogiem a prawdą, strasznie to naiwne i wyjaśnię czemu.

Młodsi czytelnicy mogą tego nie pamiętać, ale jeszcze w latach 90. XX wieku konsole zazwyczaj reklamowano liczbą bitów. Z definicji chodziło o to, jak duże liczby są w stanie pomieścić rejestry zainstalowanego w nich procesora, choć oczywiście działy marketingu potrafiły też stosować matematykę kreatywną. Jak w przypadku Atari Jaguar, które bazuje na 32-bitowym układzie Motorola 68k, ale skoro ma je na pokładzie dwa i do tego komunikują się one z pamięcią operacyjną po 64-bitowym torze sygnałowym, to producentowi nie przeszkadzało chwalić się konsolą właśnie 64-bitową.

Dalsza część tekstu pod wideo

Z czasem jednak straciło to sens, gdyż już 32-bitowy system pozwala zapisać liczbę tak ogromną jak 2 147 483 647, i to ze znakiem. Limitem przestała być wówczas czysta arytmetyka, a prym przejęły listy wykonywanych rozkazów i szybkość ich przetwarzania. Najlepszym tego dowodem jest fakt, że 64-bitowe Nintendo 64 zastąpił GameCube, wyposażony w 32-bitowy układ z rodziny PowerPC 750. Później w dodatku wypudrowany jeszcze na potrzeby Wii oraz Wii U i dopiero w Switchu zastąpiony jednostką 64-bitową. Zatem, marketing bitowy stał się już nie tylko irracjonalny, ale także, a może przede wszystkim potencjalnie samobójczy.

FLOPs – co to właściwie jest i co oznacza?

FLOPs

No, ale teraz nikt już nie mówi o bitach, chyba że w kontekście retro. Dzisiaj ich rolę przejęła jednostka FLOPs, która na dobrą sprawę jest równie naiwna, ale chociaż można ją bezrefleksyjnie zwiększać. Tylko, czy aby na pewno? W każdym razie, mając na horyzoncie PlayStation 5 Pro i Nintendo Switch 2, nie można się przesadnie dziwić powrotem tematu na piedestał. Warto go jednak wyjaśnić, by uniknąć ewentualnych nieporozumień.

FLOPs to skrótowiec od anglojęzycznego terminu Floating-point Operations per second, co w dosłownym tłumaczeniu brzmi liczba operacji zmiennoprzecinkowych na sekundę. Ale jakich konkretnie operacji? Liczby zmiennoprzecinkowe to liczby rzeczywiste zapisane w notacji naukowej, a mówiąc bardziej obrazowo, liczby przedstawione w formie ułamka złożonego z licznika i mianownika. Dla opornych: takie z przecinkiem. Oczywiście liczbę zmiennoprzecinkową, zważywszy na binarną naturę komputerów, ostatecznie też zapisujemy w bitach. Ilu? To już zależy od precyzji wykonywanych obliczeń.

Przyjęło się, że punkt wyjścia stanowi format 32-bitowy (FP32), ale współczesne układy, mając do dyspozycji zazwyczaj 64-bitowe rejestry, są pod tym względem bardzo elastyczne. Dążąc do optymalizacji kodu, stosuje się coraz częściej format FP16. W zastosowaniach naukowych, które wymagają wysokiej dokładności obliczeń, używany bywa z kolei zapis FP64. Bo tak, skoro procesory strumieniowe układu graficznego mają rejestry 64-bitowe, to każdy z nich w cyklu zegara może wykonać dwie operacje FP32 i aż cztery FP16. Proste, przyznajcie.

Liczyć każdy może

PS4 GPU

Proste jest tym samym także samo zliczenie flopsów, gdyż jest to po prostu iloczyn liczby jednostek wykonawczych i częstotliwości zegara taktującego, która to wyznacza liczbę cykli wykonywanych w ciągu sekundy. Weźmy za przykład PlayStation 4, wyposażone w GPU z 1152 potokami o taktowaniu 800 MHz: 1152 x 800 = 921 600. Ale pamiętajcie o zasadzie z dwoma operacjami w cyklu, więc podnieśmy to jeszcze x2 i oto mamy 1 843 200. Teraz tylko wystarczy podzielić całość przez 1 000 000, bo wynik uzyskaliśmy z przedrostkiem wielokrotności mega (od megaherców), a chcemy mieć teraflopsy. I voila – 1,84 TFLOPs jak w specyfikacji.

Inny przykład – Switch 2. Gdyby, jak wynika z przecieków, otrzymał układ z 1536 procesorami strumieniowymi, aka jednostkami CUDA, to przy taktowaniu 1 GHz miałby około 3,07 TFLOPs dla wiodącego formatu FP32. Ale czy to oznacza, że taki hipotetyczny NSW2 może być tych 60-parę producent wydajniejszy od PS4? W żadnym wypadku. Prawdę powiedziawszy, to w ogóle zbyt wiele nie oznacza.

Już same flopsy można liczyć kreatywnie, o czym przekonać możecie się przy okazji przecieków dotyczących PS5 Pro. Procesory strumieniowe układu graficznego w architekturze RDNA 3, przypisywanego tej konsoli, mają mieć zdolność do wykonywania w cyklu więcej niż dwóch operacji FP32. W jaki sposób? – zapytacie. W dużym uproszczeniu chodzi o to, że pobierane rozkazy 32-bitowe GPU ma rozbijać na mniejsze mikrorozkazy, a potem szukać zbieżności pomiędzy tymi częściami, by te powielające się wykonywać tylko raz, a co za tym idzie odciążyć rejestry. Nie muszę chyba jednak dodawać, jak życzeniowe jest myślenie, że absolutnie każdy kod uda się w ten sposób sprasować. A przecież to tylko wierzchołek góry lodowej.

Tylko, matematyka może cię okłamać

Xboksa Series S

Podobnie jak niegdyś bity, tak i teraz flopsy nie mówią nic na temat niuansów architektonicznych platformy. Począwszy od tak przyziemnych kwestii jak jakość API, która co by nie mówić rzutuje na komfort deweloperów i możliwości wykorzystania systemu, poprzez listy wykonywanych rozkazów, a skończywszy na potencjale podsystemu pamięci. Konsola może być demonem w sekwencyjnym przetwarzaniu rozkazów binarnych i zdławić się w obliczu braku zdolności pomieszczenia odpowiednich tekstur. Abstrahując już od tego, że szermierka liczbowa cały czas dotyczy wyłącznie karty graficznej i nie mówi nic chociażby o procesorze centralnym.

A jak chcecie dowodu, spójrzcie na Xboksa Series S, który w teorii ma ledwie dwie-trzecie mocy starszego One X – 4 kontra 6 TFLOPs. Mimo to jako platforma jest znacznie bardziej od poprzednika nasycony grami w 60 fps, w dodatku uruchamia je szybciej i ma krótsze ekrany ładowania – ale jednocześnie posiada ledwie połowę procesorów strumieniowych starszego modelu. Tyle że wyższej taktowanych i w nowszej architekturze. Jasne, trafiają się gry, które na XBX mają wyższą rozdzielczość niż na XSS, jak Halo Infinite. Ale za to oferują tam mniej efektów graficznych i niższy klatkaż. W każdym razie nie da się znaleźć ani jednego parametru, który po klasycznej proporcji korespondowałby z liczbą flopsów. 

Mało? To niech właściciele pecetów odpalą sobie teraz jakiś MSI Afterburner i podkręcą kartę graficzną o 10 proc. Większość modeli to przyjmie i wedle wzoru powinno tak w proporcjonalnym stopniu zyskać na wydajności. Z licznych testów wiemy jednak, że to tak nie działa.

Lekcja praktyczna: podkręć kartę w PC, policz a potem oceń

O zasadzie działania układów graficznych można by napisać opasły podręcznik, ale do zrozumienia tematu wystarczy kolejny prosty przykład. Karta graficzna bowiem nie tylko musi wykonywać masowo równoległe obliczenia, ale też przekazać stworzone dzieło na ekran. Jak wiele pikseli zapisze w buforze ramki w jednym cyklu, definiują m.in. jednostki rasteryzujące (ROP)  – parametr kompletnie pomijany w liczeniu flopsów.

Ostatecznie zwróćcie uwagę, że ostatnie tworzy to perspektywę niemal bliźniaczą do tej z czasów wojen bitowych. Co prawda zliczamy nie długość rozkazów, lecz ich teoretyczną liczbę w ciągu sekundy, ale w istocie rzeczy problem numer jeden pozostaje. Mianowicie podawane wartości nijak nie dają się odnieść do realnych możliwości sprzętu, a jedyna istotna różnica jest taka, że w dobie coraz bardziej zaawansowanych procesów litograficznych parametr FLOPs może nieprzerwanie rosnąć. Nie ma więc ryzyka, że skończy się tak jak z 64-bitowym N64 i 32-bitowym GC. 

Źródło: własne
Michał Porębski Strona autora
Pasjonat technologii, telekomunikacji, smartfonów i filmów science-fiction. Odbył staż w domach mediowych i portalach informacyjnych, a hobbystycznie zajmuje się zgłębianiem wiedzy o grach planszowych. 
cropper