R: Für Hobby-Bastler


2004-03-01 18:41 #1
Hat eigentlich schon 'mal jemand Crazy-Machines (http://www.crazy-machines.com/) ausprobiert?
Wer sich noch an The Incredible Machine erinnert, findet hier einen ehrwürdigen Nachfolger.
Wer aber einen PIV-Besitzt wird in manchen Leveln ziemlich intensiv mit dem Denormal-Problem bekanntschaft machen, wodurch die Framerate auf Sekunden pro Frame heruntergeht...😞

waiting www.tom-productions.de - www.tofahrn-foto.de - www.tofahrn.de

2004-03-01 21:25 #2
1.) Denormal Problem; PIV? Und ich dachte, ich hab nen schnellen Prozessor?

P IV 2,53 GHz
ATI Radeon 9800 XT Grafikkarte

Unglaublich, wie da sowas passieren können soll. Diese Grafikkarte ist doch ziemlich neu (wie auch der Prozessor).
Das ganze sollte doch ein paar Jahre lang so ziemlich alles mitmachen?



und 2.) Ja ich habe das Spiel schon ausprobiert und sehr schnell wieder vergessen... Das Original finde ich einfach besser. 😉

www.windowsclone.de.vu

  • games & progs for casio cfx-calculators
  • some old games coded in QBasic

Linux is for people who want to know why it works.
Mac is for people who don't want to know why it works.
DOS is for people who want to know why it does not work.
Windows is for people who don't want to know why it does not work.

2004-03-01 21:28 #3
Also:

Offenbar tritt das Problem bein Rechnen mit sehr kleinen Zahlen auf. Dadurch wechselt der Prozessor automatisach in einen High-Precision-Modus, der sehr viel CPU Leistung beansprucht.

Nun gibt es gleich 2 Gruppen die da zu kritiseren wären. Ein High Precision Modus ist ja unter Umständen nicht schlecht, aber wenn er die CPU Leistung so drastisch senkt, hätte Intel vielleicht nochmal überdenken sollen, ob sich dieser wirklich automatisch aktivieren muss.

Andererseits ist der P IV gar nicht mehr so extrem neu, so dass die Programmierer von dem Problem wissen könnten (wenn sie schon für solche Hardware programmieren). Ich denke dass das Problem evtl. durch rechtzeitiges Runden der Zahlen hätte beseitigt werden können.

Erklärt dieses Problem evtl. auch das Ruckeln in einigen 3D Spielen in genau den Momenten, wo der Sound von zum Bsp. dem Abschuss einer Waffe abgespielt werden sollte? Ich dachte bisher, dass meine Onboard Soundkarte dafür nicht die richtige Performance liefern würde.

www.windowsclone.de.vu

  • games & progs for casio cfx-calculators
  • some old games coded in QBasic

Linux is for people who want to know why it works.
Mac is for people who don't want to know why it works.
DOS is for people who want to know why it does not work.
Windows is for people who don't want to know why it does not work.

2004-03-01 22:20 #4
Das heisst, wenn ich mir mit Java ein Programm schreibe und eine Federschwingung simulieren lasse, bekomme ich dieses Problem auch schon mit oder nur bei Sprachen, wie C++, die wirklich für den Prozessor kompilieren und nich für ne VM?


UND: Vielleicht könnte ja Microsoft das auch mal ins Betriebssystem integrieren, dass man das evtl. im Gerätemanager regeln kann, ob der High-Precision-Modus aktiviert werden darf oder nicht. So könnte man das generell für alle Spiele vorher einfach mal abschalten. Bei schnellen 3D Spielen merkt das ja eh keiner, ob mit High Precision oder mit leichtem Verlust an Genauigkeit gerechnet wird, da die Abweichungen ja doch ziemlich gering sind😉

www.windowsclone.de.vu

  • games & progs for casio cfx-calculators
  • some old games coded in QBasic

Linux is for people who want to know why it works.
Mac is for people who don't want to know why it works.
DOS is for people who want to know why it does not work.
Windows is for people who don't want to know why it does not work.

2004-03-01 23:21 #5
Alles völlig richtig. Wer es ganz genau wissen möchte:

Fliesskomma-Zahlen werden vom Prozessor in Exponenten-Darstellung verwendet, oder ganz präzise in der Form Vorzeichen * Mantisse * 2Exponent.
Das Vorzeichen ist logischerweise -1 oder +1, die Mantisse liegt normiert im Bereich zwischen 1 und 2, der Exponent, je nach Genauigkeit z.B. bei 32-Bit-Float zwischen -128 und +127.
Zahlen, deren Betrag in diesem Beispiel kleiner als 2-128 sind, lassen sich nicht mehr mit einer normalisierten Mantisse darstellen. Dies macht sich zunächst als Fliesskomma-Fehler (Underflow) bemerkbar.
Die Intel-FPU konnte schon immer problemlos mit einer nicht-normalisierten Mantisse (0..1) umgehen, allerdings bei Verlust von Genauigkeit.
Mit dem PIV hat Microsoft der FPU etwas Gutes tun wollen, und lässt diese solche Denormalen-Fliesskommazahlen deutlich aufwendiger, aber dafür auch wesentlich genauer berechnen.
Davon betroffen sind eigentlich alle Anwendungen, bei denen irgend etwas ausklingt. Das können z.B. Simulationen von Federn oder elastischen Stössen sein, oder auch ausklingende Audio-Signale, z.B. von einem Hall-Effekt.
Im Audio-Bereich tritt man diesem Effekt ziemlich pragmatisch gegenüber: Man mischt einfach Rauschen dazu, Allerdings mit einem ziemlich geringen Pegel von ca. -400dB, was weder hörbar noch mit üblicher Profi-Hardware abbildbar ist.

Klar, das Problem/Feature ist hinlänglich bekannt und muss von der Applikation berücksichtig werden. Normalerweise genügt es, einfach in der FPU ein Bit zu setzen, welches besagt, dass Denormals als Null behandelt werden sollten, und schon ist der Spuk vorbei. Nur muss man es eben machen, wenn man auf AMD oder PIII-Systemen entwickelt, bekommt man von dem Problem gar nichts mit. Bin mir nicht sicher, wie sich der Celeron diesbezüglich verhält...

waiting www.tom-productions.de - www.tofahrn-foto.de - www.tofahrn.de

2004-03-02 04:03 #6
Klar, obwohl die Genauigkeit von Floats nicht wirklich berauschend ist, sollten die Denormals bei Spielen eigentlich problemlos als 0 interpretierbar sein.
Ich bin mir auch nicht so sicher, in welcher FPU das Problem überhaupt auftritt. Laut Intel ist dieses "Denormals-Are-Zero"-Flag Bestandteil der SSE-Extensions (Spezialbefehle zur gleichzeitigen Bearbeitung mehrerer Variablen). Ich hab' mal ein wenig rumgespielt und konnte keinerlei Auswirkung auf die normalen Fliesskomma-Befehle feststellen. Da wurden die Denormals wie gewohnt stur mit der niedrigen Präzision weiterverarbeitet. Das sollte auch m.E. für Java-******s gelten.

Ob die MMX-Befehle davon betroffen sind, hatte ich noch nicht geprüft, ist aber wahrscheinlich. Denn nur so ist zu erklären, warum alle möglichen Audio-Plugins die auf einem PIII problemlos laufen, auf einem PIV zu viel Performance fressen.
Sicher, als User würde man sich wünschen, dass man das konfigurieren kann. Dumm ist nur, dass der jeweilige Prozess selber dafür verantwortlich ist, den FPU-Status zu initialisieren, und da lautet der Default eben Denormals präzise rechnen. Da kann man Microsoft nicht einmal einen Vorwurf machen, Intel wäre da der bessere Adressat.

Allerdings verhält sich der PIV mit dem neuen Verhalten eher wie andere Prozessoren, die ebenfalls Denormals ziemlich teuer und teilweise per Software berechnen müssen.

Ich müsste mir das aber noch einmal genauer anschauen. Stöbert man durch die verschiedenen (DSP-)Foren, findet man eigentlich immer den Hinweis, dass man Denormals manuell durch Vergleich des Absolut-Wertes erkennen und auf 0 setzen muss. Dass man einfach das SSE-Flag setzen kann, hatte ich dort noch nicht gelesen (mag auch Unwissenheit oder Plattformneutralität sein).

Würde man einen Mathematiker zu dem Thema befragen, käme dieser sicher zu einem völlig anderen Ergebnis, als der Framerate-Drop-Geschädigte Gamer... wink.gif

waiting www.tom-productions.de - www.tofahrn-foto.de - www.tofahrn.de

2004-03-02 08:30 #7
Jaja das is genauso, wie die Mathematiker und die Physiker... 😉

Der eine brauchs genau, der andere Zweckmäßig und einfach 😉

www.windowsclone.de.vu

  • games & progs for casio cfx-calculators
  • some old games coded in QBasic

Linux is for people who want to know why it works.
Mac is for people who don't want to know why it works.
DOS is for people who want to know why it does not work.
Windows is for people who don't want to know why it does not work.

2004-03-02 08:31 #8
R=Restore (Wiederherstellung)
Durch einen präzisen Angriff auf ezBoard sind sämtliche Beiträge der Foren verloren gegangen. Durch Restore-Prozesse seitens ezBoards konnte leider nur ein winziger Teil aller Beiträge gerettet werden. Das Robot-Forum hatte es auch schwer getroffen. Durch Google-Caches und Web.Archive.org konnten viele Beiträge wieder gefunden werden. Diese hier gehören dazu. Die Diskussion kann weitergeführt werden.