【发布时间】:2011-06-09 17:29:24
【问题描述】:
特别是在 GHC 中的状态如何?它是不是很流行,还是还在试验阶段?
编译器在决定何时以及如何进行并行化时有多谨慎/细粒度?运行时是否适当地选择了线程池的大小,还是我们必须通过命令行指定?
【问题讨论】:
-
天哪,谁刚刚对我投了反对票?我失去了 2 次代表!!!
标签: optimization haskell parallel-processing multicore ghc
特别是在 GHC 中的状态如何?它是不是很流行,还是还在试验阶段?
编译器在决定何时以及如何进行并行化时有多谨慎/细粒度?运行时是否适当地选择了线程池的大小,还是我们必须通过命令行指定?
【问题讨论】:
标签: optimization haskell parallel-processing multicore ghc
长答案是 Don 的回复中链接的论文。简短的回答:
GHC 不会自动并行化您的程序。
但是,通过 par 组合器引入并行性变得非常容易。对此的更高级别接口是提到的"strategies" Don。
简单地添加par 是否会加速你的程序很大程度上取决于你的算法。好处是,没有陷阱——你不能引入死锁或竞争(除非你在欺骗类型系统)。
【讨论】:
GHC 目前的调度、线程池和迁移策略在论文“Runtime Support for Multicore Haskell”中有描述。在撰写本文时,“策略”风格半-自动并行已被广泛使用。
【讨论】:
也许你所说的“自动并行”是指Data Parallel Haskell?据我所知,从 2010 年 4 月起,a video presentation by Simon Peyton Jones 提供了有关此项目的最新信息。
【讨论】: