Haskell中自动并行的当前状态

Phi*_*hil 10 parallel-processing optimization haskell multicore ghc

可能重复:
Haskell中多核编程的状态是什么?

特别是在GHC中的地位如何?它还很受欢迎,还是仍在试验?

编译器在决定何时以及如何并行化时有多细致/细粒度?运行时是否适当选择了线程池的大小,或者我们必须通过命令行指定?

nom*_*olo 5

答案很长,这篇论文与Don的回应有关.简短的回答:

  1. GHC不会自动并行化您的程序.

  2. 但是,它很容易通过par组合器引入并行性.更高级别的接口是Don提到的"策略".

  3. 是否简单添加par会加快程序的速度在很大程度上取决于您的算法.好处是,没有陷阱 - 你不能引入死锁或种族(除非你在欺骗类型系统).


Don*_*art 4

GHC 当前的调度、线程池和迁移策略在论文《Runtime Support for Multicore Haskell》中进行了描述。在撰写本文时,“策略”风格的半自动并行性已得到相当广泛的使用。