Das gleiche digitale Gleitkomma-AMD X86-64-Signalverarbeitungssystem, das in meiner vorherigen Frage erwähnt wurde, hat ein Problem, bei dem es manchmal erheblich langsamer wird, wenn Signale Werte erreichen, die sehr nahe (aber nicht genau) Null sind.
Das Problem ist, dass denormalisierte Gleitkommawerte eine spezielle Verarbeitung durch die CPU erfordern, die erheblich langsamer ist als der Umgang mit normalen Gleitkommawerten. Dies kann dazu führen, dass das DSP-System zu langsam läuft. Es dauert länger als , um alles zu berechnen, was in einem Zyklus berechnet werden muss.
Eine Problemumgehung besteht darin, allen Zahlen einen kleinen Versatz hinzuzufügen, um sie in den Bereich normaler Zahlen zu zwingen. Gibt es eine Möglichkeit, die FPU stattdessen anzuweisen, überhaupt keine denormalen Zahlen zu generieren?
Das Betriebssystem ist Linux und der Compiler ist gcc
.
EDIT: Welche numerischen Konsequenzen hat die Deaktivierung von Denormalzahlen?
quelle
sincos
usw. zu erhaltenAntworten:
Sie können denormale Zahlen auf Null setzen, indem Sie die Bits "Flush to Zero" und "Denormals are Zero" (15,6) im MXCSR- Register setzen.
quelle