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版起)
我认为,我们最终想要表达这一点的方式是,在这个片段上进行迭代 您介意在>>>