Double Precision in der Praxis?

h00bi

Fleet Admiral
Registriert
Aug. 2006
Beiträge
20.256
Hallo zusammen,

immer wieder liest man von künstlich beschnittener Double Precision LEistung und dass das für Spieler unintertessant ist und nur für professionelle Anwender wichtig wäre.

Was Double Precision ist weiß ich, das wird im Netz überall erklärt.
Was ich nicht verstehe ist WOFÜR man es im professionellen Umfeld nutzt und WARUM es bei dieser Anwendung besser ist als Single Precision.

Könnte mir das bitte jemand anhand eines Beispiels erklären?
 
Naja, Double Precision liefert doppelt so genaue Rechenergebnisse, was besonders im wissenschaftlichen Bereich sehr wichtig ist.
 
Toms schrieb:
Naja, Double Precision liefert doppelt so genaue Rechenergebnisse

Das ist eben falsch. Double Precision heißt dass das Ergebnis doppelt soviel bit haben darf und dadurch KANN das Rechenergebnis WESENTLICH genauer sein, nicht nur doppelt.

Aber BTT: Praxisrelevanz mit Bespiel wäre nett.
 
Das ist erstmal nicht falsch, das kommt auf deine Definition von doppelter Genauigkeit an. Es lassen sich natürlich mehr als doppelt soviele Werte darstellen wenn man die Länge des Datentyps verdoppelt.

Beispiele sind eigentlich überall dort zu suchen, wo die Realität numerisch approximiert wird, also bei Simulationen. Ob das nun Wetter, Moleküle oder Atomexplosionen sind ist dann egal.
 
IdR Simulationen bei denen z.B. Rundungsfehler bei ueber Millionen von Iterationen/Schritten das eigentlich hochpraezise gesuchte Ergebnis verfaelschen. Das koennen astro- oder quantenphysikalische, biologische oder medizinische Simulationen sein, bei denen relativ stark unterschiedliche Skalen auftreten.
Das Eigentliche Problem haengt ja damit zusammen wie Gleitkomma-Zahlen auf dem PC dargestellt werden, man hat dort ja einen Zahlenwert und einen Exponenten. D.h. eine hypothethische unsigned 6-bit float koennte 4 bit fuer die Zahl und 2 bit fuer den Exponenten speichern, die Zahl einhundert waere dann 101010, die ersten vier Zeichen entsprechen 10 und die letzten beiden 2 also 10E2. Die Problematik tritt dann auf, wenn nun diese Zahl um zwei erhoeht werden soll. Denn bei der Addition von 101010 und 001000 muss gerunded werden, da die Zahl 102 nicht mit diesem hypothethischen float dargestellt werden kann, dessen Genauigkeit reicht nicht aus. Dementsprechend aendert sich der Wert der Zahl durch Addition nicht und mein Ergebnis ist verfaelscht.
Ob eine solche Situation auftritt haengt von den Parametern der Simulation, insbesondere von der Schrittgroesse und Startparametern, ab. Versucht man die Trajektorie eines Raumschiffs vorherzusagen kann es z.B. noetig sein die Berechnungen mit DP durchzufuehren wenn man als Zeitschritt eine Minute statt einen Tag waehlt; denn dann aendert sich die Position pro Zeitschritt 120x weniger stark und man muss ein dementsprechend genaueres Ergebnis speichern.
 
h00bi schrieb:
Aber BTT: Praxisrelevanz mit Bespiel wäre nett.
Naja, wo Genauigkeit eine Rolle spielt.

Ein allgemeines Beispiel, was Genauigkeit bewirken kann:

Angenommen, du hast bei Zahlen 8 Stellen zur Verfügung und willst 1,23456789 – 1,23456543 berechnen.
Auf eben 8 Stellen gerundet würde es also so aussehen:
1,2345679 – 1,2345654 = 0,0000025

Und jetzt hast du aber nur 4 Stellen:
1,235 – 1,235 = 0

:freaky:
 
Zuletzt bearbeitet:
So ein float (single precision) ist für physikalische Berechnungen total ungeeignet. Den kann man mit simpler Schul-Physik und Mathematik schon überlisten. Die Genauigkeit beträgt 23bit, also ~7 Dezimalstellen, damit lässt sich also nichtmal die Lichtgeschwindigkeit korrekt darstellen. (299792458m/s)
 
Wenn man aber z.B. das, was man mit "GPU Computing" berechnet hat, visualisiert, hat man wieder "Grafikdinge". :)

Für Spiele ist das weniger relevant (bzw. hat sogar Nachteile), weil selbst wenn Abweichungen auftreten sollten, ist ein Pixel eben #3DACD5 statt #3EACD5 (jetzt ohne von falscher Genauigkeit anzufangen). Merkt natürlich kein Mensch. Wenn man andererseits wegen dieser höheren Genauigkeit nur 25 statt 35 fps hat, merkt man das evtl. schon.
 
Okay, also so wie ich das jetzt verstanden habe geht es dabei nicht um Grafikdinge sondern um GPU Computing?
Ich würde das eher so sehen: Es gibt in vielen Fällen neben der limitierten arithmetischen Genauigkeit (also SP und DP) noch eine Vielzahl von weiteren Fehlerquellen, deren Fehler insgesamt meist den Fehler der arithmetischen Genauigkeit um mehrere Größenordnungen übertrifft.

Betrachten wir zum Beispiel mal die 3D-Rastergraphik von heutigen Spielen: Da entstehen große Fehler durch die mangelnde Polygonzahl von Objekten, durch die mangelnde Texturauflösung, durch zu niedrige Bildauflösung/Abtastrate/FPS, durch zu einfache Materialien und Lichtberechnung (Reflexionen, Lichtbrechung, Schattenwurf bzw allgemeiner globale Beleuchtung). Verglichen dazu ist der Fehler der arithmetischen Genauigkeit mit der man alle Berechnungen durchführt in der Regel so extrem klein, dass er unter die Wahrnehmungsschwelle des Menschen fällt. Aus dem Grund erzielt man bei der Computergraphik durch DP keinen Nutzen.

Analogerweise gibt es physikalische Simulationen (zum Beispiel Fluidsimulationen), wo die übrigen Fehler wesentlich größer als der Fehler der arithmetischen Genauigkeit sind. Deshalb ist auch hier der Nutzen von DP nicht vorhanden. Wahrscheinlich sogar noch schlimmer: Unter der Annahme, dass die maximale Rechenzeit und der maximale Speicherplatzverbrauch der Simulation die insgesamte Genauigkeit beschränken, kann das Ergebnis mit DP sogar ungenauer als mit SP sein.
 
Zurück
Oben