【问题标题】:On the Subtleties of Sparseness in Chapel论教堂稀疏的微妙之处
【发布时间】:2018-08-23 07:37:55
【问题描述】:

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

在另一个稀疏子域sps2 = CSRDomain(dom) 上定义第二个矩阵B:[sps2] 可以使一个矩阵获取Btranspose()s,但分割成B 的能力将被放弃。

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

【问题讨论】:

  • 您是否介意在 >>> tio.run/##pc9NC4JAEAbg@/… 中制定 MCVE 代码
  • 对不起,我不明白你的问题@user3666197
  • 没问题,先生。刚刚提议使用在线 Chapel 终端(具有内置持久性)来绘制将运行的代码,并且可以在这里演示测试方法的概念(就像 Ctrl+C / Ctrl+V 持久性(实际上自包含状态)超链接 URL,如上面发布的那样,“跳转”到准备运行的 MVCE 代码(问题制定的标准 StackOverflow 文化)。无论如何,享受伟大的chapel语言,先生。

标签: multidimensional-array slice sparse-matrix hpc chapel


【解决方案1】:

有没有更好的方法来声明保留这两者的稀疏子域?

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

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

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

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

【讨论】:

  • FWIW,今天应该可以解决这些问题。实现COO 转置不会太难。解决CSR 切片有点困难,但如果您愿意深入研究数组内部结构,仍然可以。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-29
  • 1970-01-01
相关资源
最近更新 更多