当我运行这个Haskell片段时,它只能加载1个CPU。 f
和g
都是无意义的,但是它们不应该在可用时加载两个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
答案 0 :(得分:9)
您需要使用线程选项编译,即ghc -O2 -threaded snippet.hs
,然后在命令行上传递可执行文件的内核数量,如下所示:
./snippet +RTS -N4
或者您可以让机器仅使用-N
选择核心数。
请参阅http://www.haskell.org/haskellwiki/Haskell_for_multicores