代码之家  ›  专栏  ›  技术社区  ›  memorableusername

是否从dmapped阵列实例提取DSI阵列类?

  •  5
  • memorableusername  · 技术社区  · 7 年前

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

    例如,如何在以下代码中从块分布式数组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.???
    
    1 回复  |  直到 7 年前
        1
  •  5
  •   benharsh    7 年前

    假设您想从后备数组类访问某个方法或字段。在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);
    

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

    推荐文章