给定密集域dom: domain(n);
,其中n < 3,声明sps1: sparse subdomain(dom);
产生sps1
的稀疏子域dom
。使用sps1
,可以进行常规的阵列/矩阵切片。也就是说,给定矩阵A: [sps1]
,可以采用n {1维切片A
。但是,通常的矩阵运算transpose()
不适用。
在另一个稀疏子域B:[sps2]
上定义第二个矩阵sps2 = CSRDomain(dom)
,可以使transpose()
B
B
,但切入{{1}}的能力是丧失。
这两种能力似乎都是应该始终可以访问的能力。是否有更好的方法来声明保留两者的稀疏子域?
答案 0 :(得分:2)
是否有更好的方法来声明保留两个稀疏子域的稀疏子域?
我认为你只是在Chapel 1.16.0中遇到了当前实施的缺点。
COO
稀疏数组&amp;域{sps1: sparse subdomain(dom)
模块尚不支持使用LinearAlgebra.Sparse
创建的语言默认稀疏分布,因此没有库支持的转置。
CSR
稀疏数组&amp;使用LinearAlgebra
创建的域sps2 = CSRDomain(dom)
的默认(且仅支持)稀疏分发尚不支持切片。
随着稀疏阵列和线性代数特征的进一步发展,这些都应该有可能。