Haskell中的并行计算

时间:2012-09-03 14:54:54

标签: haskell parallel-processing ghc

当我运行这个Haskell片段时,它只能加载1个CPU。 fg都是无意义的,但是它们不应该在可用时加载两个CPU吗?编译为ghc -O2 snippet.hs

f x = 1 + (f $! x)
g x = 5 + (g $! x)

z = a `par` b `seq` a+b
        where
        a = f 3
        b = g 5

main = do
    print z

1 个答案:

答案 0 :(得分:9)

您需要使用线程选项编译,即ghc -O2 -threaded snippet.hs,然后在命令行上传递可执行文件的内核数量,如下所示:

./snippet +RTS -N4

或者您可以让机器仅使用-N选择核心数。

请参阅http://www.haskell.org/haskellwiki/Haskell_for_multicores