我需要将两个(大多数情况下)稀疏矩阵相乘。 这些矩阵非常大(约为10k*10k),而我的计算机只有两个Xeon四核处理器和一个线程来完成此任务。
是否有任何快速的多线程乘法库?还有其他建议吗?
我需要将两个(大多数情况下)稀疏矩阵相乘。 这些矩阵非常大(约为10k*10k),而我的计算机只有两个Xeon四核处理器和一个线程来完成此任务。
是否有任何快速的多线程乘法库?还有其他建议吗?
我建议你尝试来自CERN的Colt。虽然它有点老了,但仍然为你所需的提供了出色的库。
对于并行处理,请尝试较新的Parallel Colt。
尊重Colt和Parallel Colt,但它们的速度并不太快。如果您坚持使用Java并期望快速数值计算,请使用JBLAS。JBLAS使用ATLAS。我已经编译了使用多线程ATLAS的JBLAS - 默认情况下它不会这样做。您需要更改一些配置选项。然而,即使是单线程的JBLAS也比多线程的Colt和Parallel Colt更快。我测试过Colt、Parallel Colt、JAMA和JBLAS。JBLAS是最好的。
Colt和Parallel Colt非常慢。JAMA也是如此。在Java中进行此类操作的最佳库是JBLAS。
是的,有用于多线程矩阵乘法的库;让谷歌成为你的朋友。但是如果你只有一个线程,多线程可能并不必要。为什么在一台8核机器上只有一个线程?一个值得考虑的库是Java BLAS接口。
你肯定采取了正确的方法,寻找库而不是尝试自己编写。