Reproduzierbarkeit von Fließkommaberechnungen

  • Themenstarter Themenstarter Gelöschtes Mitglied 16444
  • Beginndatum Beginndatum
G

Gelöschtes Mitglied 16444

Guest
Ich beschäftige mich im Moment ein wenig mit der Reproduzierbarkeit von Fließkommaberechnungen unter C++. Diese Berechnungen beinhalten auch Zufallszahlen, was aber wohl das kleinere Problem darstellen sollte. Soweit ich das bisher in Erfahrung gebracht habe gibt es eine ganze Reihe von Faktoren, die die tatsächliche Reproduzierbarkeit solcher Berechnungen beeinflussen können.


  • Random Seed
  • FPU
  • Implementierungsdetails von IEEE754
  • Implementierung der cstdlib/libm
  • Kompiler(flags)
  • Approximierung von Denormalen durch SSE
Ich finde dazu zwar eine Menge Material im Internet, aber leider nicht wirklich zitierfähiges Material. Kennt vielleicht jemand von euch ein Buch oder ähnliches zu diesem Thema?
 
Ja, so in diese Richtung. Die Ergänzung zu diesem Artikel (Differences Among IEEE 754 Implementations) beschäftigt sich ja mit dem Problem unterschiedlicher IEEE Implementierungen. Das Paper selbst hatte ich schon gefunden, aber da wird so wie ich das sehe auf dieses Problem leider nicht näher eingegangen.

Reproduzierbarkeit ist vielleicht auch ein missverständlicher Begriff, aber Portierbarkeit trifft es auch nicht so wirklich.
 
Nun, es geht um einen Algorithmus, bei dem es von wesentlicher Bedeutung ist, dass er auf Benutzerebene deterministisch ist. Wenn jetzt jedoch die verwendete Hardware oder Systembibliotheken, die nicht direkt mit der eingesetzten Software zusammenhängen, einen Einfluss auf das Ergebnis haben, dann ist dieser Determinismus nicht mehr gegeben.

Hier gibts z.B. eine Art Linksammlung zu dem Thema: Floating Point Determinism

Ich suche jetzt zunächst nach Quellen, die belegen, dass ein in C++ geschriebener Algorithmus auf Quelltextebene indeterministisch ist. Ich meine, dass das so ist ist mir ja eigentlich schon klar, aber ich brauche eben leider etwas zitierfähiges :rolleyes:

Ich bin mir inzwischen aber auch nicht mehr so sicher, ob die hardwarspezifischen Unterschiede auch dann noch gelten, wenn es sich z.B. um zwei x86 Systeme handelt.

~EDIT~
Ich hab es noch nicht bis zum Ende gelesen, aber in diesem Paper wird zumindest schon mal auf die Probleme durch unterschiedliche Kompiler bzw. Kompileroptionen eingegangen: http://hal.archives-ouvertes.fr/docs/00/28/14/29/PDF/floating-point-article.pdf
 
Zuletzt bearbeitet von einem Moderator:
Zurück
Oben