给定一个密集域dom: domain(n);
,其中n < 3,声明sps1: sparse subdomain(dom);
产生 dom
的稀疏子域 sps1
。使用 sps1
可以进行通常的数组/矩阵切片。也就是说,给定一个矩阵 A: [sps1]
可以取 A
的 n - 1 维切片。但是,通常的矩阵运算 transpose()
不适用。
在另一个稀疏子域 sps2 = CSRDomain(dom)
上定义第二个矩阵 B:[sps2]
使我们能够采用 transpose()
B
的 s,但无法切入 B
。
这两种能力似乎都是人们应该始终拥有的。有没有更好的方法来声明保留两者的稀疏子域?
最佳答案
Is there a better way to declare sparse subdomains that preserves the two?
我认为您只是遇到了 Chapel 1.16.0 当前实现的一个缺点。
COO
稀疏数组和域,语言的默认稀疏分布,使用 sps1: sparse subdomain(dom)
创建,在 LinearAlgebra 中尚不支持。稀疏
模块,因此没有库支持的转置。
CSR
稀疏数组和域,LinearAlgebra
的默认(且仅支持)稀疏分布,使用 sps2 = CSRDomain(dom)
创建, 尚不支持切片。
有一天,随着稀疏数组和线性代数功能的进一步发展,这两者都将成为可能。
关于multidimensional-array - 礼拜堂简陋的微妙之处,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49283425/