给定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 }
)
答案 0 :(得分:1)
除my previous answer to a similar question之外,我对这个问题没有太多答案。快速摘要是有一个未记录的迭代器dimIter()
可用于迭代存储有2D CSR / CSC格式的稀疏域的有效维度,但是没有官方接口可用于执行此操作今天所有稀疏域名(从Chapel版本1.16开始)。
我认为我们最终要表达的方式是support slicing of sparse domains然后迭代那个切片。