问题描述
|
我正在寻找Java中的矩阵/线性代数库,该库提供可从不同线程并发写入的稀疏矩阵。我遇到的大多数库都根本不提供稀疏矩阵,或者1.)用开放的寻址哈希图支持它们,或者2.)然后以CSR或CSC格式存储,这根本不适合多线程构造。现在,我正在使用并发哈希图并行收集条目,并从单个线程填充稀疏矩阵,但这似乎浪费资源(存储并发哈希图的空间以及实质上需要填充的时间)矩阵两次)。
解决方法
您不仅可以神奇地使稀疏矩阵代数例程可缩放地并行化。解决这些问题涉及一些最复杂的数值分析算法,并且仍然是深入研究的主题。
您没有说要对这些矩阵做什么,但我想您想对线性方程组进行求解。如果要并行进行操作,则需要第3方库,非常大的矩阵并可能需要花钱。
组装稀疏矩阵的最常见方法是将它们组装为三元组格式,然后转换为压缩的行或列格式。组装可能很昂贵,但很容易并行进行。只需让每个线程拥有其自己的三元组列表,然后将它们拼接在一起,然后再转换为压缩格式即可。
, 我记得并行柯尔特矩阵是线程安全的。该库是colt的多线程版本。