7

Repa同時実行機能に関係なく、私は のインターフェースが本当に好きです。私の配列は比較的小さいものであり、それらの並列化は役に立たず、有害でさえあるためです。

ただし、parallel-io を使用してプログラムで並列化を使用しているため、コンパイルし-threadedて実行し+RTS -Nxます。これにより、repa の並列化が可能になります。repa の同時実行機能をオフにする方法はありますか?

うーん、これを書いているうちに、それ以外のものが必要になる可能性は低いことがわかったDIM1ので、 に切り替える必要があるかもしれませんVector。それにもかかわらず、質問への答えは役に立ちます。

並列実行で表示される警告メッセージは

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.

私は実際にはforce私のコードにはありません。

4

1 に答える 1

3

http://code.ouroborus.net/repa/repa-headから Repa 3 の開発バージョンを使用します。配列を順番に評価する「force」(computeSと呼ばれる方法)のバージョンがあります。

Repa は、小さな配列に対する操作を自動的に順次処理しません。(map f xs) を使用すると、実行時間は「xs」のサイズと同じくらい「f」の動作に依存します。Repa は 'f' が何をしているのかを解明しようとはしません (それは難しいでしょう)。

于 2012-01-06T09:00:38.037 に答える