Haskell中的并行计算

Car*_*s00 8 parallel-processing haskell 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
Run Code Online (Sandbox Code Playgroud)

Vic*_*ith 9

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

./snippet +RTS -N4
Run Code Online (Sandbox Code Playgroud)

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

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

  • 如果您希望程序为您计算核心,则只传递`-N`. (10认同)