Je voudrais créer un sous-ensemble d'un domaine basé sur un conditionnel. Je pourrais faire une boucle, mais je cherche à voir si je peux utiliser un inline si.Comment faire un constructeur de tableau IF en ligne dans Chapel?
Il suffit de re-créer le tableau d
ressemble
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);
Cependant, je veux extraire le d
où e[d] < p
en vs
. Y a-t-il une approche similaire?
vs = [i in d where e[i] < p]
writeln(vs); // {2,3,5,7,8}
Une belle pièce, Ben. ** Quels sont les coûts réels d'un tel "itérateur incorporé" ** qui devraient être accumulés afin de traiter un domaine associatif pour environ un ensemble de données de 10 To (valeurs IEEE 64 bits) sur une seule locale (localhost) v/s chargé sur un cluster de traitement réparti à 8 nœuds? – user3666197
Juste ajouté un exemple clarifiant que «l'itérateur incorporé» se transforme en une boucle en série qui ajoute des indices au domaine associatif. Un domaine associatif est très similaire à un «ensemble» dans d'autres langues, ce qui, espérons-le, vous donne une bonne idée du coût de l'ajout d'indices. Cela pourrait être rendu plus rapide en désactivant la sécurité parallèle: var vs: domain (int, parSafe = false); – benharsh