繁体   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