java - Java中的并发访问稀疏矩阵

标签 java concurrency linear-algebra sparse-matrix

我正在寻找 Java 中的矩阵/线性代数库,它提供可以从不同线程同时写入的稀疏矩阵。我遇到的大多数库要么根本不提供稀疏矩阵,要么 1.) 使用开放寻址 HashMap 支持它们,或者 2.) 然后以 CSR 或 CSC 格式存储,这根本不适合多线程构造。现在,我使用并发 HashMap 并行收集条目,并从单个线程填充稀疏矩阵,但这似乎浪费资源(存储并发 HashMap 的空间,以及基本上填充矩阵两次的时间)。

最佳答案

您不能神奇地使稀疏矩阵代数例程可扩展并行。解决这些问题涉及一些最复杂的数值分析算法,并且仍然是深入研究的主题。

你没有说你想用这些矩阵做什么,但我想你想要线性方程组的解。如果您想要并行,那么您将需要第 3 方库、非常大的矩阵,并且可能还需要一些钱。

组装稀疏矩阵的最常见方法是以三元组格式组装它们并转换为压缩行或列格式。组装可能很昂贵,但很容易并行完成。只需让每个线程都有自己的三元组列表,然后将它们拼接在一起,然后再转换为压缩格式即可。

关于java - Java中的并发访问稀疏矩阵,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6192892/

相关文章:

java - 无法弄清楚如何返回这个递归函数?

java - 如何在 Java 中检查以下实例?

C++ 终端应用程序并发输入和输出

python - concurrent.futures 的状态并未反射(reflect)其真实状态

python - 当 A 是 strip 矩阵时,如何使用 scipy.linalg.solve_banded 求解 Ax = b?

java - 为 JAva Web 应用程序编写自动化测试的最佳方法是什么

java - 如何在 spring api 中使用变音符号

JavaFX ChangeListener 并不总是有效

math - 多层感知器替换为单层感知器

python - 在 numpy 中对巨大的密集矩阵进行操作