[英]Do denormal flags like Denormals-Are-Zero (DAZ) affect comparisons for equality?
如果我有2個具有不同位模式的非正規浮點數並將它們進行相等性比較,那么結果是否會受到Denormals-Are-Zero標志,Flush-to-Zero標志或常用處理器上的其他標志的影響?
或者這些標志只影響計算而不影響相等性檢查?
DAZ(Denormals Are Zero)影響讀取輸入,因此DAZ會影響比較 。 根據他們的符號,所有非正規數字面上都被視為-0.0
或+0.0
。
FTZ(Flush To Zero)僅影響寫入輸出,因此FTZ不會影響比較 。 比較不會產生FP輸出,因此無需刷新。
(DAZ和FTZ是SSE MXCSR控制/狀態寄存器中的標志。對於x87沒有等價物。)
為什么兩個標志分開存在,而不是一個控制兩個標志的標志? 我不知道,但你肯定需要兩種效果。
您可能正在從文件或網絡中讀取FP數據,因此您可以直接獲得非正常輸入,而不是計算結果。 所以你需要DAZ。
產生正確的非正規輸出(例如,從減去附近的正常數字,或乘以兩個小的正常數字)可能很慢,因此您需要FTZ允許CPU下溢至+-0.0
而不是采用微碼輔助來獲得正確的值。
或者你可能有一個線程運行快速數學(FTZ + DAZ),而另一個線程運行精確數學運算需要它的一些計算。 如果快速數學線程讀取精確線程產生的數據,那么這些數字可能是非正規數。
我不確定設置DAZ的用例是什么,而不是FTZ,反之亦然。 它肯定會涉及讀取你自己沒有產生的數據,或者為你自己以外的讀者寫數據,否則只需要FTZ就足以避免任何減速。
(僅僅DAZ是不夠的:從正常輸入產生非正規輸出仍然很慢,即使下一個操作將其視為0)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.