4
私は、条件に基づいてドメインのサブセットを作成したいと思います。私はループをすることができますが、私はインラインifを使用できるかどうかを調べています。ChapelでインラインIF配列コンストラクタを実行するにはどうすればよいですか?
ちょうど配列d
を再作成することは
var d = {1..8};
var e = [0.875, 0.625, 0.625, 1.0, 0.625, 0.875, 0.625, 0.625];
var p = 0.7;
var vs = for i in d do i;
writeln(" vs: ", vs);
のように見えますが、私はvs
にd
どこe[d] < p
を抽出したいです。のようなアプローチはありますか?
vs = [i in d where e[i] < p]
writeln(vs); // {2,3,5,7,8}
美しい作品、ベン:
この例では、このようなものに変わります。 ** 1つのロケール(localhost)v/sにロードされた約10TBのデータセット(64ビットIEEE値)の関連ドメインを処理するために、そのような「組み込みイテレータ」**の実際のコストはどれくらいになるか8ノードの分散処理クラスタに移行する – user3666197
「埋め込みイテレータ」が連想ドメインにインデックスを追加するシリアルループに変わることを明確にした例を追加しました。連想ドメインは、他の言語の「集合」と非常によく似ています。インデックスを追加するコストについての良い考えが得られればうれしいです。これは、並列安全性をオフにすることで、より高速化できます。var vs:domain(int、parSafe = false); – benharsh