5

我正在对自定义分布层次结构进行一些性能测试,我需要访问支持映射数组的数组类。我可以通过array.domain,但后备数组类似乎没有任何东西。

例如,如何在以下代码中从 Block 分布式数组 A 中提取 BlockArr/LocBlockArr:

const Space = {1..8, 1..8};
const D: domain(2) dmapped Block(boundingBox=Space) = Space;
var A: [D] int;
var A_BlockArr_obj : BockArr = A.???
4

1 回答 1

5

假设您想从支持数组类访问某个方法或字段。在 Chapel 1.16 中,您可以编写:

var A_obj = A._value;
A_obj.foo();
writeln(A_obj.myField);

_value方法返回后备数组类(如果您已启用私有化,则返回私有化副本)。可以在域和分布上调用相同的方法。请注意,这是故意未记录的,并且可能会在将来的版本中更改。

在 Chapel 1.17(将于 2018 年 4 月发布)中,对数组、域和分布的方法调用和字段访问现在转发给支持类,因此您可以改为编写:

A.foo();
writeln(A.myField);

如果可能,将在类的私有化实例上调用这些方法调用和字段访问。

于 2018-01-16T18:53:11.480 回答