簡體   English   中英

SSE int vs. floats實踐

[英]SSE ints vs. floats practice

在SSE(AVX)中處理int和float時,將所有int轉換為float並僅使用float是一種好習慣嗎? 因為此后我們只需要幾條SIMD指令,而我們所需要的只是加法和比較指令( <, <=, == ),我希望此轉換應完全保留。

將我的評論擴展為答案。

基本上,您需要權衡以下因素:

堅持整數:

  • 整數SSE具有低延遲,高吞吐量。 (關於桑迪橋的雙重問題)
  • 限制為128位SIMD寬度。

轉換為浮點數:

  • 受益於256位AVX。
  • 更高的延遲,並且僅單次加/減(在Sandy Bridge上)
  • 產生初始轉換費用。
  • 將輸入限制為適合float輸入,而不會造成精度損失。

我現在說堅持整數。 如果您不想使用float版本復制代碼,那就叫您。

我唯一看到過用浮點數模擬整數變得更快的情況是必須進行除法運算。


請注意,我沒有提到可讀性,因為進入手動矢量化可能意味着性能更為重要。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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