【发布时间】:2014-01-23 19:08:33
【问题描述】:
您认为在 Java 1.8 中使用新的 Stream 接口可以实现稀疏矩阵运算吗?如果是,我们需要如何实现矩阵和操作。显然,我正在寻找它最终能够使用“自动”并行化。
【问题讨论】:
-
似乎应该是可能的。你真的尝试过自己实现它吗?
-
不,我没有,但我想在 scala 中搜索一些类似的东西。
-
当然是一个有趣的问题(如果我有更多时间,我会试一试),但可能有一些警告(据我判断——我不是专家) : 1. 有几十种可能的稀疏矩阵表示 - 使用哪一种? 2. streaming 的概念可能不能很好地与乘法所需的严格访问模式一起使用,并且对于输入矩阵和结果矩阵都不同。 3. 稀疏 GEMM 的并行算法通常建立在对已知数量的处理器的显式并行化...
-
... 并且依靠“未知”线程数(在流中使用)的自动并行化使得无法利用此信息。 4. 必须在primitive 流(
float、double)上构建它,以避免Float和Double的(取消)装箱。 5. 性能可能很大程度上取决于缓存,也不受流的影响。 - 无论如何,我真的很想在这里看到一些方法,所以+1 -
一旦您摆脱了帐户麻烦,也许您可以通过编辑在原始问题中添加新信息。例如,如果您实际上对“SparseMatrix*DenseVector”乘法更感兴趣,那就另当别论了。
标签: java matrix-multiplication java-stream