FLOPS

Ujukomatehete arv sekundis (inglise floating point operations per second, lühend FLOPs) on mõõtühik, mida kasutatakse andmetöötluses näitamaks numbriliselt, kui palju aritmeetilisi tehteid ujukomaarvudega suudab tuum, mikroprotsessor või süsteem sekundis teostada. Seda ühikut kasutatakse tihti kõrgjõudlusega andmetöötluses (inglise high-performance computing, lühend HPC) hindamaks süsteemi teoreetilist maksimaalset jõudlust teadusarvutuslikes rakendustes. Tavaliselt on mikroprotsessori FLOPs arvutatud järgneva valemiga: F L O P S t u u m = F L O P s t s u ¨ k k e l × t s u ¨ k l i d s e k u n d {\displaystyle FLOPS_{tuum}={FLOPs \over ts{\ddot {u}}kkel}\times {ts{\ddot {u}}klid \over sekund}} Mitme tuumaliste ja mitme pesaliste arhitektuuride tulekuga on valemisse juurde arvestatud ka paralleelarvutuste võimekus: F L O P S s o ~ l m = F L O P s t s u ¨ k k e l × t s u ¨ k l i d s e k u n d × t u u m a d s o ~ l m {\displaystyle FLOPS_{s{\tilde {o}}lm}={FLOPs \over ts{\ddot {u}}kkel}\times {ts{\ddot {u}}klid \over sekund}\times {tuumad \over s{\tilde {o}}lm}} ja süsteemi jaoks: F L O P S s u ¨ s t e e m = F L O P s t s u ¨ k k e l × t s u ¨ k l i d s e k u n d × t u u m a d s o ~ l m × s o ~ l m e d s u ¨ s t e e m {\displaystyle FLOPS_{s{\ddot {u}}steem}={FLOPs \over ts{\ddot {u}}kkel}\times {ts{\ddot {u}}klid \over sekund}\times {tuumad \over s{\tilde {o}}lm}\times {s{\tilde {o}}lmed \over s{\ddot {u}}steem}} Tänapäeva mikroprotsessorid rakendavad paralleelarvutuste teostamiseks lisaks veel käsustiku laiendusi, mis lubavad ühes käsus teostada rohkem, kui ühe ujukomaarvutuse. Näiteks x86 arhitektuuri AVX (inglise Advanced Vector Extensions) ja ARM arhitektuuri SVE (inglise Scalable Vector Extension) laiendused. Võttes arvesse käsustiku laiendused saab ühe tuuma jaoks avaldada sellise valemi: F L O P S t u u m = k a ¨ s u d t s u ¨ k k e l × a r v u t u s e d k a ¨ s k × F L O P s a r v u t u s × t s u ¨ k l i d s e k u n d {\displaystyle FLOPS_{tuum}={k{\ddot {a}}sud \over ts{\ddot {u}}kkel}\times {arvutused \over k{\ddot {a}}sk}\times {FLOPs \over arvutus}\times {ts{\ddot {u}}klid \over sekund}} Laiendades valemi terve süsteemi jaoks: F L O P S s u ¨ s t e e m = k a ¨ s u d t s u ¨ k k e l × a r v u t u s e d k a ¨ s k × F L O P s a r v u t u s × t s u ¨ k l i d s e k u n d × t u u m a d s o ~ l m × s o ~ l m e d s u ¨ s t e e m {\displaystyle FLOPS_{s{\ddot {u}}steem}={k{\ddot {a}}sud \over ts{\ddot {u}}kkel}\times {arvutused \over k{\ddot {a}}sk}\times {FLOPs \over arvutus}\times {ts{\ddot {u}}klid \over sekund}\times {tuumad \over s{\tilde {o}}lm}\times {s{\tilde {o}}lmed \over s{\ddot {u}}steem}} HPC süsteemi FLOPs mõõte arvutamise jaoks on Dr. Mark R. Fernandez välja pakkunud sellise valemi, kus sektsioon sisaldab ühte või rohkem sõlme, sõlm sisaldab ühte või rohkem pesa, ühes pesas on üks protsessor ja protsessoris on üks või rohkem tuuma. Siinjuures sektsioonid on need, millest HPC süsteem koosneb: F L O P S = s e k t s i o o n e × s o ~ l m e d s e k t s i o o n × p e s a d s o ~ l m × t u u m a d p e s a × t a k t s a g e d u s t u u m × F L O P s t s u ¨ k k e l {\displaystyle FLOPS=sektsioone\times {s{\tilde {o}}lmed \over sektsioon}\times {pesad \over s{\tilde {o}}lm}\times {tuumad \over pesa}\times {taktsagedus \over tuum}\times {FLOPs \over ts{\ddot {u}}kkel}} Kusjuures sisestades taktsageduse gigahertsides on valemi tulemuseks GigaFLOPS ja megahertsides MegaFLOPS. Süsteemi FLOPs mõõtme juures on oluline tähele panna, millise täpsusega ujukoma arve on arvutustes kasutatud. Väiksema täpsusega arve kasutades suudab protsessor sekundis rohkem tehteid teostada ja vastupidi. Ujukoma arvude esitus andmetöötluses on sarnane teadusliku tähistusega, kus mantiss korrutatakse kümnega, mis on omakorda astendatud eksponendiga. Kuid erinevalt teaduslikust tähistusest on kümne asemel aluseks kaks ja opereeritakse kahendsüsteemis. Kõige levinum standard ujukoma arvude esitamiseks andmetöötluses on ANSI/IEEE Std. 754-1985. Selles formaadis on defineeritud 16-bitised ehk poole täpsusega (inglise half precision), 32-bitised ehk ühekordse täpsusega (inglise single precision) ja 64-bitised ehk topelt täpsusega (inglise double precision) ujukoma arvud. Ühekordse täpsusega ujukoma arvus on bitid jaotatud kolme gruppi: bitid 0 kuni 22 moodustavad mantissi, bitid 23 kuni 30 moodustavad eksponendi ja 31 on märgi bit. Need bitid moodustavad ujukoma arvu järgneva seosega: v = ( − 1 ) S × M × 2 E − 127 {\displaystyle v=(-1)^{S}\times M\times 2^{E-127}} kus v on esitatav number, S on märgi biti väärtus, M on mantissi väärtus ja E on eksponendi väärtus. Poole täpsusega ja kahekordse täpsusega arvudes on bitid jaotatud samamoodi kolme gruppi, erinevad vaid mantissi ja eksponendi jaoks eraldatud bitide arv. Kahekordse täpsusega arvus on mantissi jaoks eraldatud 52 bitti ja eksponendi jaoks 11 bitti, poole täpsusega arvus vastavalt 10 bitti ja 5 bitti. Kõigis kolmes formaadis esitatavate arvude suuruse ulatus ja täpsus on toodud alljärgnevas tabelis. Nick Evanson. "Explainer: What are MMX, SSE, and AVX?". Techspot (inglise). Vaadatud 28. aprill 2022. "SVE architecture fundamentals" (inglise). Vaadatud 28. aprill 2022. "Floating-Point Operations Per Second (FLOPS)" (inglise). Vaadatud 30. aprill 2022. Mark Fernandez, Ph.D. "Nodes, Sockets, Cores and FLOPS, Oh, My!" (inglise). Vaadatud 30. aprill 2022. "What is half precision?" (inglise). MathWorks. Vaadatud 8. mai 2022. Steven W. Smith, Ph.D. "The Scientist and Engineer's Guide to Digital Signal Processing" (inglise). Vaadatud 30. aprill 2022.