script私はマシン内の複数のプロセッサをmapM
と交換して、Async.mapConcurrently
と交換したいと考えていました。スタックrunghcを使用したマルチコア並列
このケースでは速度の増加は見られませんでしたが、runghc
が実際に複数のコアを使用できることを確認したかったのです。私は次のようにファイルをコンパイルする場合
import Control.Concurrent
main = print =<< Control.Concurrent.getNumCapabilities
:
stack ghc -- -threaded Foo.hs
をし、それを実行し、次のように:
は、ファイルFoo.hs
を考えると
./Foo
それが結果を返す1
。これは、RTSオプションが提供されていないため、予想されます。次のように代わりにそれを実行している:私のマシンで6つのプロセッサがあるよう
./Foo +RTS -N
は、数6
を返します(nproc
と一致)。私はそうのように「インタプリタモード」でスクリプトを実行すると
はしかし、:
GHCRTS="-N" stack runghc Foo.hs
これは、次のエラーテキストを得られます。
Running /home/kostmo/.stack/programs/x86_64-linux/ghc-nopie-8.0.2/bin/ghc-pkg --no-user-package-db list --global exited with ExitFailure 1
ghc-pkg: the flag -N requires the program to be built with -threaded
はスタックに複数のコアを利用することが可能です」スクリプト "?この質問を尋ねるため