問題タブ [repa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
haskell - GHC 7.10.2 Data.Vector.Unboxed が REPA 3.4.0.1 と競合する
Vectorパッケージをインストールし、REPAGHC 7.10.2 の Cabal を使用しました。このプログラムの実行:
次のエラーが表示されます。
を実行ghc-pkg list | grep vectorすると、ベクター パッケージの 2 つのバージョンに気付きました。
実行ghc-pkg hide vector-0.10.12.3して再コンパイルを試みましたが、エラーが続きます。すでにインストールされているようですvector-0.10.12.3が (Base の一部ですか?)、公開されていませんでしたData.Vector.Unboxed。この問題を解決するにはどうすればよいですか?
haskell - Repa のネストされた並列処理
次のコードは、 repa-3.4.0.1で (恐ろしい) 「ネストされた並列処理」エラーを生成します。
正確なエラーは次のとおりです。
でコンパイルしghc Main -threadedて実行していMain +RTS -N2ます。deepSeqArrayの定義でを使用してみましたfmapTが、役に立ちません。テストは独立しているため (ランダム性の順序付けは別として)、この例でネストされた並列処理がどのように可能であるかは明確ではありません。
興味深いことに、mainjust に変更するとquickCheck prop_fmap、100 回のテストが正常に完了します。そのため、テスト フレームワーク (おそらくモナド シーケンスのより一般的な問題) とは異なる何かが起こっているようですQuickCheck。
このエラーが発生する理由と、並列計算を実行しながらエラーを回避する方法についてのアイデアはありますか?
haskell - 型宣言 (Repa) での演算子の使用を解決する方法は?
私は Repa をいじっていますが、以下のコードはコンパイルして実行できます。
(ghci のチェックから) x には、t にあると宣言した型シグネチャがあると思いますが、t に関連付けられているすべてのコメントを外すと、このエラーが発生します。
型宣言での型演算子/コンストラクターの使用を解決する正しい方法は何ですか? (私はもう少しグーグルしますが、とにかくもっと知りたいです)
haskell - この場合、Data.Array.Repa.Algorithms.Matrix.mmultP で型エラーが発生するのはなぜですか?
これは愚かなタイプの間違いに要約されると思いますが、私にはわかりません。次のコードがあります。
これにより、10 行 3 列の 2D 配列の Repa 表現が作成されます。これは、列の長さが等しい乱数 (0,1 の間) の 1D 配列で (M.mmultP を使用して) ドット積を取得したいと考えています。 2D 配列の行番号に。ghci で動作するのと同様の結果が得られますが、これによりこのエラーが発生する可能性があります。
これはタイプエラーですが、私には理解できないようです。誰か助けてくれませんか?
arrays - 1次元のリストから2次元のボックス化されていない配列を作成する方法は?
Repa にはfromListUnboxed、値のリストから 1 次元配列を作成できる機能があります。しかし、ボックス化されていない 1 次元のもの (長さが等しい) のリストを指定して、2 次元のものを作成するにはどうすればよいでしょうか?
haskell - Haskell / repa - 行列をきれいに印刷する方法はありますか?
haskellでrepaを使用して、行列を印刷して、行列の行が別々の行にあるように適切にフォーマットする方法はありますか(Rやmatlabなどのほとんどの数値計算環境のデフォルト)?
1つ書くことはできますが、すでに存在するもののようです。
このタイプの出力は、操作が扱いにくいものです。
haskell - generate を使用して値を個別の Vector に散在させる
Vectorインデックスから値のカスタム データ型 (またはタプル) を作成する関数を使用して、s のタプルを生成しようとしています。望ましい結果を達成するアプローチは次のとおりです。
以下に示すように、Vector ごとに 1 回の反復で実行したいことを除いて、 function の複数回の評価は避けますf。
注意として、Vectorライブラリが融合をサポートしていることは理解しており、最初の例はすでにかなり効率的です。概念の解決策が必要ですgenerate。他のライブラリには非常によく似たコンストラクターがあり (RepafromFunctionなど)、Vectorここでは単に問題を示すために s を使用しています。
関数呼び出しのある種のメモ化が機能するかもしれfませんが、何も考えられません。
編集:
Repa を使用した問題の別のデモ:
ベクトルと同じように、フュージョンはパフォーマンスを節約しますarrが、タプルの中間配列が依然として必要であり、これを回避しようとしています。
編集2:(3年後)
fromFunction上記の Repa の例では、遅延配列が作成されるため、中間配列は作成されません。代わりに、さらに悪いことに、fインデックスごとに 2 回評価されます。1 回目は最初の配列、2 回目は 2 番目の配列です。このような作業の重複を避けるために、遅延配列を計算する必要があります。