簡體   English   中英

Haskell是否自動執行SIMD優化?

[英]Does Haskell perfom SIMD optimizations automatically?

可以使用https://hackage.haskell.org/package/ghc-prim-0.4.0.0/docs/GHC-Prim.html#g:28在Haskell中編寫基於SIMD的矢量庫,但它是否有意義? 我在Haskell中發現了幾篇致力於自動SIMD優化的論文,但目前的狀況是什么(2014年)? 例如, https: //hackage.haskell.org/package/vector是否使用SIMD,或者最好使用低級SIMD原語手動編寫優化庫?

第一:我不知道GHC甚至有SIMD的初學者。 很好找!

無論如何,除此之外,我的理解是這樣的:

  • GHC本機代碼后端永遠不會自己發出SIMD指令。
  • 可選的LLVM后端可能會產生SIMD,我不知道。 但那不是默認的編譯路線; 我的理解是它仍然是實驗性的。
  • 鑒於您提到的primops的存在,Vector庫可以想象生成SIMD代碼。 我懷疑它不是,但真正知道的唯一方法是詢問作者或只是grep源代碼......
  • 如果你想要特定的東西,自己編寫代碼似乎是完全合理的。 我不知道會有多少工作......

目前ghc中沒有SIMD自動矢量化。 沒有

當與本機代碼一起使用時,當前的simd primops將觸發GHC恐慌,盡管它們將與-fllvm后端一起使用。

那些simd primops至關重要地缺乏數據改組的良好數據模型,當前的數據模型將需要相當大的改造才能正確地支持simd shuffle。

llvm后端可以對代碼進行某些自動矢量化優化,但我通常將自動矢量化視為獎勵而不是代碼如何優化的核心假設,它需要一些仔細的審核來驗證!

暫無
暫無

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

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