礼拜堂简陋的微妙之处

On the Subtleties of Sparseness in Chapel

给定一个密集dom: domain(n);,其中n < 3,声明sps1: sparse subdomain(dom);产生一个dom的稀疏子域sps1 ].使用 sps1 通常的 array/matrix 切片是可能的。也就是说,给定一个矩阵 A: [sps1],可以取 A 的 n - 1 维切片。但是,通常的矩阵运算transpose()不适用

在另一个稀疏子域 sps2 = CSRDomain(dom) 上定义第二个矩阵 B:[sps2] 使人能够使用 Btranspose(),但能够切入 B 被没收。

这两种能力似乎都是人们应该始终拥有的能力。有没有更好的方法来声明保留两者的稀疏子域?

Is there a better way to declare sparse subdomains that preserves the two?

我认为您只是遇到了 Chapel 1.16.0 当前实施的一个缺点。

COO 稀疏数组和域,语言的默认稀疏分布,使用 sps1: sparse subdomain(dom) 创建,在 LinearAlgebra.Sparse 模块中尚不支持,因此没有 library-supported转置。

CSR 稀疏数组和域,LinearAlgebra 的默认(且仅支持)稀疏分布,使用 sps2 = CSRDomain(dom) 创建,尚不支持切片。

有一天,随着稀疏数组和线性代数功能的进一步发展,这两者都将成为可能。