neustes

Die stille Revolution der Gleitkommarechnung: Wie Fused Multiply-Add die numerische Welt verändert

Von DerSchneider

Es gibt Entscheidungen in der Computergeschichte, die so unscheinbar daherkommen, dass sie selbst von Fachleuten oft nur als Fußnote wahrgenommen werden. Die Einführung der Fused-Multiply-Add-Instruktion (FMA) in breite Consumer-Prozessoren mit Intels Haswell-Architektur im Jahr 2013 gehört zweifellos dazu. Auf den ersten Blick mag es wie eine weitere Optimierung unter vielen wirken: eine Hardware-Operation, die a × b + c in einem einzigen Schritt berechnet. Doch wer genauer hinsieht, erkennt, dass hier nicht bloß eine Rechenoperation beschleunigt wurde. Es wurde das fundamentale Verhältnis zwischen Geschwindigkeit und Genauigkeit neu verhandelt – mit Konsequenzen, die von der Klimamodellierung über die kryptographische Sicherheit bis hin zur Frage reichen, ob zwei Computer überhaupt jemals dasselbe Ergebnis liefern können.

Was FMA tatsächlich tut – und warum das mehr ist als eine Abkürzung

Die konventionelle Berechnung von a × b + c erfolgt in zwei getrennten Schritten: Zuerst wird das Produkt a × b berechnet und auf die Zielgenauigkeit gerundet. Dann wird dieses gerundete Produkt zu c addiert und das Ergebnis erneut gerundet. Jeder dieser Schritte führt zu einem Informationsverlust, der sich in der numerischen Analyse als „Rundungsfehler“ manifestiert. FMA hingegen berechnet das Produkt mit voller interner Präzision – das heißt, der Zwischenwert der Multiplikation bleibt mit allen signifikanten Stellen erhalten – und führt erst bei der finalen Addition die Rundung durch. Das Ergebnis ist eine Operation mit nur einer einzigen Rundung statt zweier.

Diese scheinbar triviale Differenz hat es in sich. Die IEEE-754-Norm für Gleitkommaarithmetik, die seit 2008 auch die fused multiply-add Operation spezifiziert, fordert explizit, dass (A × B) + C so berechnet wird, „als ob mit unbegrenzter Genauigkeit und Reichweite gerechnet und erst am Ende auf das Zielformat gerundet würde“ . In der Praxis bedeutet dies: Der maximale Fehler halbiert sich im Vergleich zur konventionellen Methode. Für eine einzelne Operation mag das vernachlässigbar erscheinen. Für eine Matrixmultiplikation mit Millionen von Operationen, für ein Skalarprodukt in einem iterativen Lösungsverfahren oder für die Auswertung eines Polynoms hohen Grades summiert sich dieser Vorteil jedoch zu einem qualitativen Sprung in der Vertrauenswürdigkeit numerischer Ergebnisse.

Besonders anschaulich wird die Bedeutung an einem klassischen Problem der numerischen Mathematik: der Berechnung der Diskriminante einer quadratischen Gleichung. Die Formel Δ = b² - 4ac ist berüchtigt für katastrophale Auslöschung, wenn b² und 4ac nahezu gleich groß sind. Wird b² zunächst gerundet und dann von einem ebenfalls gerundeten 4ac subtrahiert, können die entscheidenden Stellen im Rauschen untergehen. FMA hingegen erlaubt es, den Fehler der Operation zu extrahieren und für eine kompensierte Berechnung zu nutzen – ein Verfahren, das als „Error-Free Transformation“ bekannt ist und die Genauigkeit signifikant erhöht . Der französische Informatiker Claude-Pierre Jeannerod und seine Kollegen haben gezeigt, dass sich mit FMA sogar Algorithmen konstruieren lassen, die das exakte Ergebnis einer Gleitkommaoperation in zwei Zahlen aufspalten – eine Technik, die als „Double-Word-Arithmetik“ die Grundlage für hochpräzise Berechnungen auf Standardhardware bildet .

Der lange Weg von der Idee zur Siliziumfläche

So elegant die mathematische Idee auch ist, so anspruchsvoll ist ihre hardwaretechnische Umsetzung. Ein FMA-fähiger Gleitkommaprozessor muss das Produkt der beiden Operanden mit voller Breite berechnen – bei doppelter Genauigkeit sind das 106 Bit für das Produkt aus zwei 53-Bit-Mantissen – und dieses breite Zwischenergebnis dann mit dem dritten Operanden alignen, addieren, normalisieren und runden. Die Herausforderung besteht darin, diese Schritte zu pipelinisieren, ohne dass die Latenz unakzeptabel wird oder die Chipfläche explodiert. Eine Studie aus dem Jahr 2012 zeigte, dass eine IEEE-konforme FMA-Einheit etwa 5 bis 10 Prozent mehr Ressourcen benötigt als eine nicht-fusionierte Implementierung, dafür aber den entscheidenden Genauigkeitsvorteil liefert .

Interessant ist dabei die historische Entwicklung: Während FMA in der Welt der Hochleistungsrechner und Grafikprozessoren bereits deutlich früher Einzug hielt – IBM bot entsprechende Instruktionen in der Power-Architektur, und GPUs nutzten FMA intensiv für Grafikberechnungen –, dauerte es bis zur x86-Welt deutlich länger. AMD führte FMA3 mit der Piledriver-Architektur ein, Intel zog mit Haswell nach . Die Ironie dabei: Intel hatte zuvor mit FMA4 eine konkurrierende Variante unterstützt, die vier Operanden verwendete, während FMA3 mit drei Operanden auskommt. Der Markt entschied sich schließlich für FMA3, und mit Haswell wurde die Instruktion über die AVX2-Befehlssatzerweiterung breit verfügbar .

Die Auswirkungen auf die Rechenleistung waren beträchtlich. Wie das NAS Supercomputing Support Center dokumentiert, konnte ein Haswell-Kern durch die Kombination von 256-Bit-Vektorregistern mit zwei FMA-fähigen Gleitkommaeinheiten bis zu 16 Gleitkommaoperationen pro Taktzyklus ausführen – doppelt so viele wie die Vorgängergeneration Sandy Bridge . Für wissenschaftliche Anwendungen, die von dichten Matrixmultiplikationen dominiert werden, bedeutete dies eine Verdopplung des theoretischen Spitzen durchsatzes. Doch der eigentliche Gewinn lag nicht in der Geschwindigkeit, sondern in der Möglichkeit, bei gleicher Geschwindigkeit genauere Ergebnisse zu erzielen – oder bei gleicher Genauigkeit schneller zu rechnen.

Die Schattenseite der Genauigkeit: Reproduzierbarkeit als Opfer

Hier beginnt die eigentliche Kontroverse, die bis heute nachhallt. Denn so segensreich FMA für die numerische Genauigkeit einzelner Operationen ist, so problematisch ist seine Einführung für die Reproduzierbarkeit von Berechnungen. Das liegt an einer fundamentalen Eigenschaft der Gleitkommaarithmetik: Sie ist nicht assoziativ. Die Reihenfolge, in der Operationen ausgeführt werden, beeinflusst das Ergebnis. Wenn ein Compiler nun entscheidet, ob er a × b + c als FMA-Instruktion oder als zwei getrennte Operationen ausführt, kann dies das Ergebnis verändern – und zwar nicht nur im letzten Bit, sondern unter Umständen dramatisch, wenn die Berechnung sensitiv auf Rundungsfehler reagiert.

Der französische Informatiker Florent de Dinechin hat dieses Problem pointiert zusammengefasst: Wenn Sie sqrt(b*b - 4*a*c) schreiben, wissen Sie dann, wie es kompiliert wird? Die Antwort hängt vom Compiler, den Optimierungsflags und der Zielarchitektur ab . GCC etwa deaktiviert die FMA-Nutzung standardmäßig, es sei denn, spezielle Flags wie -mfma oder -march=haswell werden gesetzt. Doch selbst dann bleibt die Frage, ob der Compiler eine gegebene Operation tatsächlich fusioniert oder nicht, oft undurchsichtig. Das NASA-Support-Dokument bringt es auf den Punkt: „Turn off FMA if you want your results to match legacy ones“ . Mit anderen Worten: Wer reproduzierbare Ergebnisse über verschiedene Architekturen hinweg benötigt, muss auf den Genauigkeitsvorteil von FMA verzichten – ein Dilemma, das particularly in der Klimaforschung, der Finanzmodellierung und allen Bereichen schmerzt, in denen numerische Simulationen über Jahre hinweg vergleichbar bleiben müssen.

Diese Spannung zwischen Genauigkeit und Reproduzierbarkeit ist keineswegs ein nebensächliches Implementierungsdetail. Sie berührt eine Grundfrage der wissenschaftlichen Informatik: Was bedeutet es, wenn zwei Computer dasselbe Programm ausführen und unterschiedliche Ergebnisse liefern? Die IEEE-754-Norm hat durch die Einführung von FMA eine neue Dimension der Unsicherheit geschaffen – nicht weil die Norm fehlerhaft wäre, sondern weil sie eine Operation definiert, deren Verwendung im Ermessen des Compilers liegt. Die Folge ist eine Situation, in der die numerische Analyse zwar immer präzisere Fehlerschranken liefern kann, die tatsächliche Fehlercharakteristik einer konkreten Berechnung jedoch von Faktoren abhängt, die für den Anwender oft intransparent bleiben.

Jenseits der CPU: FMA als universelles Prinzip

Während die x86-Debatte um FMA3 und FMA4 längst Geschichte ist, hat die Idee der fusionierten Multiply-Add-Operation längst weitere Kreise gezogen. In der Welt der künstlichen Intelligenz ist FMA aus den Tensor-Prozessoren nicht mehr wegzudenken. Google’s TPU, NVIDIAs Tensor Cores und eine Vielzahl von KI-Beschleunigern setzen auf Varianten der fusionierten Multiplikation-Addition, oft in reduzierten Genauigkeiten wie FP16 oder sogar FP8. Ein Patent aus dem Jahr 2023 beschreibt eine Mixed-Precision-FMMA-Einheit, die zwei FP8-Produkte gleichzeitig mit einem FP16-Addenden verrechnet – eine Operation, die für das Training tiefe neuronaler Netze essenziell ist . Die Ironie: Während die wissenschaftliche Gemeinschaft über die Reproduzierbarkeitsprobleme von FMA auf CPUs diskutiert, hat die KI-Hardware FMA längst als selbstverständlichen Grundbaustein integriert – mit ganz eigenen Genauigkeitsimplikationen, die noch kaum systematisch untersucht sind.

Auch auf FPGAs und in eingebetteten Systemen spielt FMA eine wachsende Rolle. Eine Arbeit über die Implementierung einer Single-Precision-FMA-Einheit auf einem Virtex-4-FPGA zeigt, dass die fusionierte Architektur dort besonders attraktiv ist, weil die Pipeline-Struktur von FPGAs die zusätzlichen Pipelinestufen der FMA-Einheit quasi kostenlos bereitstellt . Für Anwendungen in der Fahrzeugtechnik oder der industriellen Steuerung, wo Zuverlässigkeit und Determinismus oft wichtiger sind als rohe Rechenleistung, eröffnet dies neue Möglichkeiten – vorausgesetzt, die Entwickler sind sich der veränderten Rundungseigenschaften bewusst.

Die unbeantwortete Frage der Verantwortung

Nach über einem Jahrzehnt breiter FMA-Verfügbarkeit in Consumer-Hardware bleibt eine Frage erstaunlich unbeantwortet: Wie viele der unzähligen Programme, die tagtäglich auf FMA-fähigen Prozessoren laufen, wurden tatsächlich im Hinblick auf die veränderten Rundungseigenschaften überprüft? Die ehrliche Antwort lautet: vermutlich die wenigsten. Die meisten Entwickler verlassen sich darauf, dass ihre Compiler „das Richtige“ tun, ohne zu wissen, ob FMA aktiviert ist oder nicht. Die meisten Numerik-Bibliotheken – von BLAS über LAPACK bis zu den mathematischen Funktionen der Standard-C-Bibliothek – wurden längst für FMA optimiert, oft mit dem Argument der höheren Genauigkeit. Doch die Kehrseite, die veränderte Reproduzierbarkeit, wird selten kommuniziert.

Dabei gäbe es durchaus Ansätze, das Dilemma zu entschärfen. Die Forschung zu „Error-Free Transformations“ und Double-Word-Arithmetik zeigt, dass sich mit FMA nicht nur genauere, sondern auch robusterere Algorithmen konstruieren lassen – Algorithmen, die den Rundungsfehler explizit berechnen und kompensieren, anstatt sich auf das Standardverhalten zu verlassen . Doch diese Techniken sind rechenintensiver und haben sich in der Breite nicht durchgesetzt. Solange der Markt Geschwindigkeit über Vorhersagbarkeit stellt, wird die stille Revolution der Gleitkommarechnung weitergehen – mit allen Segnungen und allen Unsicherheiten, die sie mit sich bringt.

Fazit: Eine Operation, die mehr verändert hat, als sie berechnet

Fused Multiply-Add ist mehr als eine Hardware-Instruktion. Es ist ein Kompromiss, der die numerische Genauigkeit einzelner Operationen erhöht, indem er die Reproduzierbarkeit über Architekturgrenzen hinweg opfert. Es ist ein Beispiel dafür, wie eine scheinbar technische Entscheidung – die Definition einer IEEE-Norm und ihre Umsetzung in Silizium – weitreichende Konsequenzen für die wissenschaftliche Praxis hat. Und es ist eine Erinnerung daran, dass Fortschritt in der Informatik selten eindimensional ist: Jede Erhöhung der Rechenleistung oder Genauigkeit bringt neue Komplexität mit sich, die verstanden und beherrscht werden muss.

Die nächste Generation von Prozessoren wird FMA nicht mehr als optionale Erweiterung betrachten, sondern als selbstverständliche Grundlage. In einer Welt, in der KI-Modelle mit Billionen von Parametern auf Hardware trainiert werden, die auf fusionierte Multiply-Add-Operationen optimiert ist, wird die Frage nach der Reproduzierbarkeit dieser Berechnungen nicht leiser werden. Vielleicht ist es an der Zeit, dass die Informatikgemeinschaft beginnt, FMA nicht nur als Werkzeug zu nutzen, sondern seine Implikationen ebenso ernsthaft zu diskutieren wie die Algorithmen, die darauf aufbauen. Denn am Ende zählt nicht nur, wie schnell wir rechnen, sondern ob wir den Ergebnissen trauen können.


Quellen:

  1. Boldo, S., & Melquiond, G. (2008). Emulation of FMA and correctly-rounded sums: proved algorithms using rounding to odd. IEEE Transactions on Computers, 57(4), 462-471. (sowie die darauf aufbauende Arbeit: „Emulation of the FMA in rounded-to-nearest floating-point arithmetic“, HAL preprint hal-04575249, 2024)
  2. IEEE Computer Society. (2008). IEEE Standard for Floating-Point Arithmetic (IEEE 754-2008). DOI: 10.1109/IEEESTD.2008.4610935.
  3. Ozaki, K., & Koizumi, T. (2025). Fast and accurate algorithm for matrix multiplication using fused multiply-add. JSIAM Letters, 17, 13-16.
  4. De Dinechin, F. (2013). FMA: the good, the bad, and the ugly. Präsentation, CNRS/INRIA.
  5. NASA High-End Computing Capability. (2020). Haswell Processors: Main Features of AVX2. NAS Support Knowledge Base.
  6. Galal, S., & Horowitz, M. (2011). Energy-Efficient Floating-Point Unit Design. IEEE Transactions on Computers, 60(7), 913-922. (sowie die zugehörige Stanford-Dissertation „Floating Point Arithmetic is Crucial to Computer Performance“)
  7. EPFL Graph Search. FMA instruction set – Überblick über FMA3/FMA4 und Prozessorunterstützung.
  8. Patent US 11,455,142 B2 (2023). Mixed-precision fused multiply-add (FMMA) architecture for neural network acceleration.
  9. FPGA-Implementierung: „Floating-Point Single-Precision Fused Multiplier-adder Unit on FPGA“, Max-Planck-Institut für Plasmaphysik / IPFN-ATCA Projekt

Post Comment

You May Have Missed