Wat is FMA (fused multiply-add)?

Bewerking die a × b + c met één instructie berekent en alleen aan het eind één keer afrondt, zonder het tussenproduct af te ronden. Sneller en met een kleinere fout dan vermenigvuldigen en optellen apart. Veel gebruikt bij onder meer matrixberekeningen.

Japanse benaming: FMA(融合積和演算)

“FMA (fused multiply-add)” komt voor in 2 oefenvragen uit 2 onderwerpen, bijv. Computerarithmetiek, Compilers.

Vakgebied: Computerarithmetiek

Nu oefenen: vragen over FMA (fused multiply-add)

Wat is het juiste voordeel van de FMA-instructie (fused multiply-add) bij de berekening van a × b + c?

  1. AHet tussenliggende product wordt niet afgerond maar slechts één keer aan het einde, zodat de fout kleiner is en het sneller gaat
  2. BHet resultaat van de vermenigvuldiging wordt altijd eerst een geheel getal, zodat er helemaal geen fout optreedt
  3. CDe optelling wordt weggelaten en alleen vermenigvuldigd, zodat de berekening de helft kost
Antwoord en toelichting tonen

Antwoord: A. Het tussenliggende product wordt niet afgerond maar slechts één keer aan het einde, zodat de fout kleiner is en het sneller gaat

Wanneer vermenigvuldigen en optellen met afzonderlijke instructies gebeuren, wordt het resultaat van a × b eerst afgerond en daarna het resultaat van de optelling van c opnieuw, dus er vindt twee keer afronding plaats. FMA houdt het product intern ongerond, telt c erbij op en rondt slechts één keer af, zodat de fout kleiner is. Omdat het één instructie is, is het ook sneller en wordt het veel gebruikt bij matrixvermenigvuldiging, polynoomberekening en AI-berekeningen. Het product wordt niet een geheel getal en de optelling wordt niet weggelaten. Door het verschillende aantal afrondingen kan het resultaat echter licht afwijken van afzonderlijk berekende resultaten.

“FMA (fused multiply-add)” in de toelichting

Vragen met “FMA (fused multiply-add)” (2)

  1. Wat is het juiste voordeel van de FMA-instructie (fused multiply-add) bij de berekening van a × b + c?
  2. Welke uitspraak over instructieselectie (instruction selection), een van de fasen van codegeneratie, is juist?

Verwante termen

Adresseringsmodus Afronden naar even (round to nearest even) bfloat16 Booth-algoritme Cancellation (verlies van significantie) Carry-lookahead-opteller Carry-save-opteller (CSA) Exponent FP8 Gedenormaliseerd getal (subnormaal getal)

Naar de woordenlijst