8

この Haskell スニペットを実行すると、1 つの CPU しかロードされません。fとはどちらもg無意味ですが、使用可能な場合は 2 つの 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 オプション、つまり を使用してコンパイルする必要があります。ghc -O2 -threaded snippet.hs次に、4 つのコアの場合、次のようにコマンド ラインでコア数を実行可能ファイルに渡します。

./snippet +RTS -N4

または、単に を使用してマシンにコア数を選択させることもできます-N

http://www.haskell.org/haskellwiki/Haskell_for_multicoresを参照してください。

于 2012-09-03T15:01:09.923 に答える