8

当我运行这个 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
4

1 回答 1

9

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

./snippet +RTS -N4

或者,您可以让机器仅使用-N.

http://www.haskell.org/haskellwiki/Haskell_for_multicores

于 2012-09-03T15:01:09.923 回答