Das einzige, was ich bisher gefunden habe, sind "fehlerfreie Transformationen". Für Gleitkommazahlen sind Fehler von , a-b
und a*b
auch Gleitkommazahlen (in der runden zum nächsten Modus, vorausgesetzt, kein Überlauf/Unterlauf usw. usw.).
Addition (und offensichtlich Subtraktion) Fehler ist einfach zu berechnen; Wenn abs(a) >= abs(b)
, Fehler ist genau b-((a+b)-a)
(2 Flops oder 4-5, wenn wir nicht wissen, welche größer ist). Multiplikation Fehler ist trivial zu berechnen mit fma
- es ist einfach fma(a,b,-a*b)
. Ohne fma
ist es 16 Flops von ziemlich bösen Code. Und vollständig generische Emulation von korrekt gerundet fma
ist sogar langsamer als das.
Extra 16 Flops Fehler Tracking pro Flop der realen Berechnung ist ein riesiger Overkill, aber mit nur 1-5 Pipeline-freundliche Flops ist es durchaus sinnvoll, und für viele Algorithmen auf der Grundlage dieser 50% -200% Overhead der Fehlerverfolgung und die Kompensation ergibt einen Fehler, der so klein ist, als ob alle Berechnungen in doppelter Anzahl von Bits durchgeführt würden, wodurch in vielen Fällen eine schlechte Konditionierung vermieden würde.
Interessanterweise wird fma
nicht immer in diesen Algorithmen verwendet, um Ergebnisse zu berechnen, nur Fehler zu finden, weil die Suche nach Fehler von fma
ist ein langsamer als Fehler der Multiplikation ohne fma
war zu finden.
Relevante Schlüsselwörter zu suchen wäre "kompensiertes Horner-Schema" und "kompensiertes Dot-Produkt", mit Horner-Schema profitieren viel mehr.
Frage geht es um Auswirkungen der Rundung, nicht darüber. Ihre Antwort ist auch falsch, da fma 3 Eingabe-Fließkomma-Einheit anstelle von 2 Standard-Eingaben, Extraport in Fließkomma-Registerdatei und breitere Gleitkomma-Addierer benötigt. Dies ist nicht kostenlos, es ist ein Kompromiss von fma-Unterstützung auf Kosten von einigen andere Hardware. – taw
taw: Sie haben gefragt, welche Algorithmen von FMA profitieren und für einige Beispiele, wo die Rundung ein nicht-trivialer Vorteil ist. Ich habe den ersten Teil beantwortet, was bedeutet, dass die meisten Algorithmen davon profitieren werden. – Gabe