给定一个 M:[sps]
数组 sps = sparse subdomain(dom)
其中 dom: domain(n)
,我我知道我可以使用 for j in M.domain.dim(k) {...}
在第 k 个维度上进行密集迭代。如果 M.domain.dim(k) = {1..N}
,我将如何定义一个仅访问 k 中填充位置的类似循环,但 k 中只有 m 个填充索引,循环只正式生成 m 次迭代而不是 N 次?
这样做的方法是用一个只引用一个索引的 iterand 遍历整个稀疏域吗? (即 for (i,j) in spsDom { var idx = i }
)
最佳答案
除了 my previous answer to a similar question 之外,我对这个问题没有太多答案。 .快速总结是有一个未记录的迭代器 dimIter()
可用于迭代以 2D CSR/CSC 格式存储的稀疏域的有效维度,但没有正式的当今所有稀疏域的接口(interface)(从 Chapel 1.16 版开始)。
我认为我们最终想要表达的方式是 support slicing of sparse domains然后迭代该切片。
关于loops - Chapel 中的稀疏迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49282902/