2012-09-03 92 views
8

當我運行這個Haskell片段時,它只能加載1個CPU。 fg都是無意義的,但是不應該在可用時加載兩個CPU?編爲ghc -O2 snippet.hsHaskell中的並行計算

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 

回答

9

您需要用螺紋選項編譯,即ghc -O2 -threaded snippet.hs,然後傳遞可執行的內核數量在命令行上爲四個核如下:

./snippet +RTS -N4 

或者你也可以擁有機器只使用-N選擇核心數量。

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

+0

試過,但我仍然只看到100%的負載,而不是200%負載(有我的CPU在4個核心)。 – Cartesius00

+0

等一下,我忘了你還需要傳遞可執行文件的內核數量,像這樣:'./snippet + RTS -N4'用於四個內核。 –

+0

就是這樣!謝謝:) – Cartesius00