cost 109 ms
手動浮點除法的強度降低

[英]Strength reduction on floating point division by hand

在我們本學期計算機科學的最后一項作業中,我們必須對一些代碼片段應用強度降低。 他們中的大多數都是直截了當的,尤其是在查看編譯器輸出時。 但是即使在編譯器的幫助下,我也無法解決其中一個問題。 我們的教授給了我們以下提示: 提示:查詢 IEEE 754 單精度浮點數在內存中的表示方式。 這是 ...

索引比指針更容易向量化嗎?

[英]Are indexes easier to vectorize than pointers?

是否有任何示例(例如在https://godbolt.org/ 上),當算法由指針迭代而不是數組索引表示時,CLang 會生成更糟糕的代碼? 例如,它可以在一種情況下矢量化/展開但不能在另一種情況下? 在簡單的例子中,這顯然無關緊要。 這是一個指針迭代樣式: 這是索引樣式的邏輯上相同的代碼: ...

為什么這個程序沒有被優化掉?

[英]Why is this program not optimized away?

考慮以下簡單程序(改編自此問題 ): 我相信它在功能上等同於以下一個: 然而clang 3.7.1 , gcc 5.3和icc 13.0.1似乎無法進行這樣的優化,即使使用-Ofast 。 (請注意編譯器之間生成的程序集如何大不相同!)。 但是,當從等式中刪除mul2和x2 ...

將此循環簡化為方程式

[英]Reduce this loop to an equation

此函數(為方便起見,用C語言編寫,但這對問題並不重要)決定了數組的大小。 我敢肯定它可以轉換為if-else鏈,甚至可以轉換為方程式,但是我不夠聰明,無法看到如何轉換。 (我試圖寫下明顯的if-else鏈,但在某些情況下陷入困境。) 如果存在將這種循環轉換為算術的通用,防呆子技術,那 ...

我怎樣才能將分裂強度降低2 ^ n + 1?

[英]How can I strength reduce division by 2^n + 1?

我需要在代碼的熱路徑中執行一些整數除法。 我已經通過分析和循環計數確定了整數除法對我造成的損失。 我希望我能做些什么來強化將分裂降低到更便宜的東西。 在這條路徑中,我除以2 ^ n + 1,其中n是可變的。 基本上我想優化此函數以刪除除法運算符: 如果我除以2 ^ n,我只需 ...


 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM