从 dmapped 数组实例中提取 DSI 数组 class?

Extract DSI array class from dmapped array instance?

我正在对自定义分发层次结构进行一些性能测试,我需要访问支持映射数组的数组 class。 我可以通过 array.domain 访问支持域,但是支持数组 class.

似乎没有任何内容

例如,我将如何从以下代码中的块分布式数组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.???

假设您想从后备数组 class 访问某些方法或字段。在 Chapel 1.16 中你可以这样写:

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

_value 方法 returns 后备数组 class(如果启用了私有化,则为私有化副本)。可以在域和分布上调用相同的方法。请注意,这是有意未记录的,可能会在未来的版本中更改。

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

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

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