【问题标题】:Sparse Slicing of Sparse Arrays in ChapelChapel 中稀疏数组的稀疏切片
【发布时间】:2018-08-22 06:25:21
【问题描述】:

dom: domain(2) 的稀疏子域上给定一些A: [sps],切片A[A.domain.dim(1), k] 将第k 列生成为密集 一维数组。如何将稀疏 nD-array 的第 k​th​​n−1 维切片检索为 sparse (n-1)D-array?

var nv: int = 8,
    D: domain(2) = {1..nv, 1..nv},
    SD: sparse subdomain(D),
    X: [SD] real;

SD += (1,2); X[1,2] = 1;
SD += (2,3); X[2,3] = 1;
SD += (3,1); X[3,1] = 1;
SD += (3,4); X[3,4] = 1;
SD += (4,5); X[4,5] = 1;
SD += (3,6); X[3,6] = 1;
SD += (6,8); X[6,8] = 1;

writeln(X);
writeln(X[X.domain.dim(1),2]);

返回

1.0
1.0
1.0 1.0 1.0
1.0
1.0

1.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0

如果我成功进行稀疏切片,则期望返回单个1.0,并能够通过在slice.domain 上调用writeln() 来检索该条目的此位置。

【问题讨论】:

    标签: multidimensional-array slice sparse-matrix hpc chapel


    【解决方案1】:

    我认为,不幸的是,您正在做正确的事情,并且您只是违反了当前(从 Chapel 1.16 开始)对slicing sparse domains 的限制。

    【讨论】:

    • Mkay,@bencray 曾提到打算对此做出回应,所以我会等着听他的回应(以防万一),然后再接受这个答案。谢谢布拉德
    • 我认为这是一个合理的答案。提供某种解决方法会很好,但我目前没有现成的可用方法。如果情况发生变化,我会更新。
    • 是的,我也一直在想一个解决方法。如果目标实际上是“我想要一个完整的一维稀疏数组来为这些相同的元素起别名”,那么我认为没有任何简单的解决方法(如果有,我们可能已经实现了切片本身)。相反,如果它类似于“我想遍历这一行中的非零并产生(索引,值)对”,那么我认为我们可以通过 dimIter() 做一些事情,例如(本身就是一种解决方法)。
    猜你喜欢
    • 2018-08-23
    • 2011-11-28
    • 1970-01-01
    • 2012-06-20
    • 2011-02-02
    • 2020-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多