Loops Chapel中的稀疏迭代

Loops Chapel中的稀疏迭代,loops,multidimensional-array,sparse-matrix,hpc,chapel,Loops,Multidimensional Array,Sparse Matrix,Hpc,Chapel,在sps=sparse子域(dom)上给定一个数组M:[sps],其中dom:domain(n),我知道我可以在k上密集迭代​th​​ M.domain.dim(k){…}中j的维数。我如何定义一个只访问k中填充位置的类似循环,这样如果M.domain.dim(k)={1..N},但k中只有M个填充索引,那么循环只正式生成M个迭代,而不是N个 这样做的方法是使用只引用一个索引的iterand在整个稀疏域上迭代吗?(即spsDom中(i,j)的{var idx=i})除此之外,我对这个问题没有多少

sps=sparse子域(dom)
上给定一个数组
M:[sps]
,其中
dom:domain(n)
,我知道我可以在k上密集迭代​th​​ M.domain.dim(k){…}中j的
维数。我如何定义一个只访问k中填充位置的类似循环,这样如果
M.domain.dim(k)={1..N}
,但k中只有M个填充索引,那么循环只正式生成M个迭代,而不是N个


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

除此之外,我对这个问题没有多少答案。快速总结是,有一个未记录的迭代器,
dimIter()
,可用于对以2D CSR/CSC格式存储的稀疏域的有效维度进行迭代,但目前没有一个用于所有稀疏域的官方接口(从Chapel的1.16版起)


我认为,我们最终想要表达这一点的方式是,在这个片段上进行迭代

您介意在>>>