如何在Chapel中使用原子变量设置数组大小?

时间:2018-04-17 16:23:15

标签: parallel-processing chapel

在追求A3C时,我需要设置多个全局和局部参数。全局参数需要具有共享大小。我认为这意味着atomic个变量,但它对我来说还是新的。

var n: atomic int,
    x: [1..n] real;  # a vector of global size

proc localDude(){
  n +=1;  # increase the size of n
}

我理解数组将随domain增长和缩小,但我很难将语义结合在一起。谢谢!

1 个答案:

答案 0 :(得分:3)

所以有一些事情。

  1. 域名按价值而非参考。因此,修改域使用的变量来构造其边界修改域(example)。
  2. 数组 通过引用获取其域名,因此分配到已使用的域变量 会使数组更改(example)。
  3. 域尚不是受支持的原子类型,因此拥有全局原子域将无效。但是,您可以使用sync variable作为锁定,以便对序列化进行修改。 learn Chapel in Y minutes tutorial上有一个例子,靠近底部(搜索互斥量)