教堂中的稀疏迭代

时间:2018-03-14 16:22:26

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

给定M:[sps]上的数组sps = sparse subdomain(dom) dom: domain(n),我知道我可以使用for j in M.domain.dim(k) {...}在第k维上密集迭代。我如何定义一个类似的循环,它只访问k中的填充位置,如果M.domain.dim(k) = {1..N},但k中只有m个填充索引,那么循环只能正式生成m次迭代而不是N?

这样做的方法是使用仅引用一个索引的迭代迭代整个稀疏域吗? (即for (i,j) in spsDom { var idx = i }

1 个答案:

答案 0 :(得分:1)

my previous answer to a similar question之外,我对这个问题没有太多答案。快速摘要是有一个未记录的迭代器dimIter()可用于迭代存储有2D CSR / CSC格式的稀疏域的有效维度,但是没有官方接口可用于执行此操作今天所有稀疏域名(从Chapel版本1.16开始)。

我认为我们最终要表达的方式是support slicing of sparse domains然后迭代那个切片。