4

我注意到我收到的一段代码中有一些东西:

var D: domain(2) dmapped Block(boundingBox=Space) = Space;
var A: [D] int;
[a in A] a = a.locale.id;

[a in A]相当于forall a in A a = a.locale.id?_

4

1 回答 1

3

多半是对的。在 Chapel 中,[a in A] expr可以认为是forall a in A do expr. 但是,略有不同的是,如果A不支持并行迭代,forall表单将生成编译时错误,而[a in A]表单将退回到串行迭代。

关于这个问题的标题,请注意,这种行为与是否A分发无关。例如,您也可以编写[i in 1..n]而不是forall i in 1..n do即使像这样1..n的范围从未分布在 Chapel 中。

Chapel 中的数组类型,类似[D] real地可以理解为“对于 中的所有索引D,分配类型的元素real”。

于 2017-05-02T03:35:08.527 回答