stack で+RTSオプションを使ってベンチマークをとりました。
Haskell 初心者です。1日くらい記事探し回ってようやく、stackでRTSオプションを使える方法を見つけたので、残しておきます。
きっかけは、「Haskellによる並列・並行プログラミング」 O'Reilly 。
読んだら、サンプルを走らせようと思うのは必然の流れ。ということでサンプルをstackでインストールしました。
stack本体のインストール、設定などは詳しく紹介してくださっている人がいらっしゃるのでそちらを参考に
stackの紹介
インストールから実行まで
$stack install parconc-examples
$stack build
さて、ここまででも紆余曲折ありましたが、そこはとりあえず置いておきます。
$stack exec parinfer < benchmark.in +RTS -s
ん?
不穏な空気がひしひしと伝わる。
結果から言うと、これはうまく行きませんでした。
いろいろ調べた結果、なるほど、ghcオプション で --rtsoptを指定してやればいいのか。ふむふむ。とおもって、paraconc-examples.cabal でghcオプションに追加。
実行してみますが、またもうまく行きません。
今まで英語のため逃げ続けてましたが、stack のHPに飛んでRTSで検索してみます。
The stack executable is no longer built with -rtsopts. Before, when -rtsopts was enabled, stack would process +RTS options even when intended for some other program, such as when used with stack exec -- prog +RTS. See #2022.
とのことで、-- progを付けなさいと。。。
$stack exec parinfer < benchmark.in -- prog +RTS -s
これはうまく行きました。、、、長い道のりだった。
自分のための覚書きです。
今回私が得た教訓は、わからなかったらとりあえず公式にいけ。 以上です。