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);
不過,我想提取d
其中e[d] < p
到vs
。有沒有像?
vs = [i in d where e[i] < p]
writeln(vs); // {2,3,5,7,8}
個迷人的東西,奔。 **這種「嵌入式迭代器」**的實際成本是什麼?爲了在單個區域(本地主機)上加載關於10TB數據集(64位IEEE值)的關聯域,到8節點分佈式處理羣集上? – user3666197
剛剛添加了一個例子,闡明'嵌入式迭代器'變成了一個串行循環,爲相關域添加索引。關聯域與其他語言中的「集合」非常相似,希望可以幫助您瞭解添加索引的成本。 var vs:domain(int,parSafe = false);這可以通過關閉並行安全性來加快速度。 – benharsh