私は実際にはその同時性の能力にかかわらず、Repa
のインターフェイスが好きです。実際には、配列は比較的小さいので並列化が必要であり、並列化は役に立たず、有害です。並列化せずにRepAを
私は自分のプログラムでparallel-ioを使用しているので、-threaded
をコンパイルし、+RTS -Nx
で実行します。これにより、repaの並列化が可能になります。 repaの並行処理機能を無効にする方法はありますか?
Hm、これを書いている間は私はDIM1
以外のものが必要であるとは思っていなかったので、Vector
に切り替える必要があります。しかしそれにもかかわらず、その質問への答えは有用であろう。私は、並列実行してもらう
警告メッセージは、私が実際に自分のコードにはforce
を持っていない
Data.Array.Repa: Performing nested parallel computation sequentially.
You've probably called the 'force' function while another instance was
already running. This can happen if the second version was suspended due
to lazy evaluation. Use 'deepSeqArray' to ensure that each array is fully
evaluated before you 'force' the next one.
です。
興味深い質問ですが、リパを並列化するとパフォーマンスが低下することは確実ですか?あなたはそれをプロファイリングしましたか? –
@DanBurton少なくともN4では '+ RTS Nx'がない場合より3倍長く実行されます。それは警告メッセージが出力されたためです。私はポストに警告メッセージを入れます – Yrogirg
あまりにも小さいリポジトリでオペレーションをパラレル化すると、驚くことになります。私は、減速を引き起こす警告メッセージの出力に大きく賭けています。 – ehird