AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Floatingpoint exception nur auf einem CPU
Thema durchsuchen
Ansicht
Themen-Optionen

Floatingpoint exception nur auf einem CPU

Ein Thema von user0 · begonnen am 6. Jul 2007 · letzter Beitrag vom 30. Jul 2007
Antwort Antwort
user0

Registriert seit: 28. Okt 2005
25 Beiträge
 
Delphi 7 Personal
 
#1

Floatingpoint exception nur auf einem CPU

  Alt 6. Jul 2007, 17:17
Hallo Leute,

ein mit Delphi geschriebenes Programm für umfangreiche numerische berechnungen, liefert unerklährliche Floatingpoint-Exceptions zurück und wird danach instabil. Dies geschieht aber nur auf einem einzigen PC. Die selbe Rechnung wurde auf mindestens 10 anderen Rechnern problemlos gelaufen.

Der fragliche PC hat einen Intel Pentium 4 (2,8 GHz).

Woran kann das liegen? Können irgend welche BIOS-Einstellungen das Problem verursacht haben?

user0
  Mit Zitat antworten Zitat
Benutzerbild von 3_of_8
3_of_8

Registriert seit: 22. Mär 2005
Ort: Dingolfing
4.129 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Floatingpoint exception nur auf einem CPU

  Alt 6. Jul 2007, 17:22
Wie wärs, wenn du etwas Code zeigst?
Manuel Eberl
„The trouble with having an open mind, of course, is that people will insist on coming along and trying to put things in it.“
- Terry Pratchett
  Mit Zitat antworten Zitat
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#3

Re: Floatingpoint exception nur auf einem CPU

  Alt 6. Jul 2007, 17:22
Gibt es auf besagtem PC auch mit anderen Programmen Probleme ?
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
user0

Registriert seit: 28. Okt 2005
25 Beiträge
 
Delphi 7 Personal
 
#4

Re: Floatingpoint exception nur auf einem CPU

  Alt 9. Jul 2007, 10:54
Zitat von 3_of_8:
Wie wärs, wenn du etwas Code zeigst?
Der Programmcode ist bereits über 192300 Zeilen lang, den gebe ich hier lieber nicht als kommentar an


Zitat von Ghostwalker:
Gibt es auf besagtem PC auch mit anderen Programmen Probleme ?
Nein, jedenfalls sind noch keine aufgefallen.

Ich glaube das Problem liegt an der Initialisierung der FPU, genauere Infos dazu gibts in diesem Bug-Report.
Wir probieren gerade den dort vorgeschlagenen Workaround aus.
  Mit Zitat antworten Zitat
Elvis

Registriert seit: 25. Nov 2005
Ort: München
1.909 Beiträge
 
Delphi 2010 Professional
 
#5

Re: Floatingpoint exception nur auf einem CPU

  Alt 9. Jul 2007, 12:27
Nicht so ganz on-topic: Habt ihr schonmal FreePascal angesehen für eure Berechnugnen?
Der FPC compiler ist, im Gegensatz zu Delphi, in der Lage auch Instruktionssätze zu nutzen, die nach dem 386 erfunden wurden.
Du könntest die Berechnungen also einfach in eine FPC-kompilierte DLL auslagern, und den GUI-Krams in Delphi lassen.
Robert Giesecke
I’m a great believer in “Occam’s Razor,” the principle which says:
“If you say something complicated, I’ll slit your throat.”
  Mit Zitat antworten Zitat
user0

Registriert seit: 28. Okt 2005
25 Beiträge
 
Delphi 7 Personal
 
#6

Re: Floatingpoint exception nur auf einem CPU

  Alt 11. Jul 2007, 15:52
Das mit dem FPU-CW hat nicht geklappt.

Kann irgend eine Einstellung in einem BIOS dazu führen, dass mein Programm Fehler ausgibt, oder schlimmer noch: einfach falsch rechnet!?

Nur auf einem PC (von 12) treten Fehler bei der Berechnung auf. Der Debugger springt bei der _TRUNC prozedur in System.pas raus, was nun wirklich nicht sein sollte. Auf allen anderen PCs läuft die Berechnung mit exakt den selben Parametern fehlerfrei.

user0
  Mit Zitat antworten Zitat
user0

Registriert seit: 28. Okt 2005
25 Beiträge
 
Delphi 7 Personal
 
#7

Re: Floatingpoint exception nur auf einem CPU

  Alt 30. Jul 2007, 10:52
Alle Probleme sind nun behoben, indem das control-word immer wieder auf double-precision gesetzt wird.
Die trunc-Funktion liefert falsche ergebnisse, wenn ihr double-Werte übergeben werden:

double x = 1020
Trunc(x) = 1019 !

falls das FPUCW auf Extendet-Precision gestellt ist. Das liegt wahrscheinlich daran, dass beim Konvertieren von x nicht 1020.000..., sondern 1019.999999... raus kommt, was widerum möglicherweise nur auf bestimmten Prozessoren passiert.

user0
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:05 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz