Maailma kõige võimsama superarvuti FLOPs mõõde vastavalt aastale
**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.

Mõõte arvutamine
----------------

Tavaliselt on mikroprotsessori FLOPs arvutatud järgneva valemiga:

{\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:

{\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:

{\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:

{\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:

{\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:

{\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.

Ujukoma arvude esitus
---------------------

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. 
Bittide jaotuvus ühekordse täpsusega ujukomaarvus

Need bitid moodustavad ujukoma arvu järgneva seosega:

{\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.

| Formaat | Alumine piir | Ülemine piir | Täpsus |
| --- | --- | --- | --- |
| Poole täpsusega | {\displaystyle 2^{-14}\approx 6,1\cdot 10^{-5}} | {\displaystyle (2-2^{-10})\cdot 2^{15}\approx 6,5\cdot 10^{4}} | {\displaystyle 2^{-10}\approx 10^{-3}} |
| Ühekordse täpsusega | {\displaystyle 2^{-126}\approx 10^{-38}} | {\displaystyle 2^{128}\approx 3\cdot 10^{38}} | {\displaystyle 2^{-23}\approx 10^{-7}} |
| Topelt täpsusega | {\displaystyle 2^{-1022}\approx 2\cdot 10^{-308}} | {\displaystyle 2^{1024}\approx 2\cdot 10^{308}} | {\displaystyle 2^{-52}\approx 10^{-16}} |

Viited
------

1. ↑  Nick Evanson. "Explainer: What are MMX, SSE, and AVX?". *Techspot* (inglise). Vaadatud 28. aprill 2022.
2. ↑  "SVE architecture fundamentals" (inglise). Vaadatud 28. aprill 2022.
3. ↑  "Floating-Point Operations Per Second (FLOPS)" (inglise). Vaadatud 30. aprill 2022.
4. ↑  Mark Fernandez, Ph.D. "Nodes, Sockets, Cores and FLOPS, Oh, My!" (inglise). Vaadatud 30. aprill 2022.
5. ↑  "What is half precision?" (inglise). MathWorks. Vaadatud 8. mai 2022.
6. ↑  Steven W. Smith, Ph.D. "The Scientist and Engineer's Guide to Digital Signal Processing" (inglise). Vaadatud 30. aprill 2022.