10

可能重复:
Haskell 中的多核编程现状如何?

特别是在 GHC 中的地位如何?它是流行的,还是仍在试验中?

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

4

3 回答 3

5

长答案是唐的回应中链接的论文。简短的回答:

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

  2. par然而,它使得通过组合器引入并行性变得非常容易。对此的更高级别的接口是唐提到的“策略”

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

于 2011-01-15T23:01:10.163 回答
4

GHC 目前的调度、线程池和迁移策略在论文“ Runtime Support for Multicore Haskell ”中有描述。在撰写本文时, “策略”风格的半自动并行性被广泛使用。

于 2011-01-15T18:35:07.247 回答
2

也许您所说的“自动并行性”是指Data Parallel Haskell?据我所知,有关该项目的最新信息可在Simon Peyton Jones 的视频演示中获得,从 2010 年 4 月开始。

于 2011-01-15T23:19:37.720 回答