java矩阵乘法(FAST)

时间:2010-01-15 19:42:37

标签: java multithreading matrix-multiplication

我必须乘以2(大多数时候)稀疏矩阵。 那些矩阵很有点(大约10k * 10k),我有一个两个Xeon Quad核心,只有一个线程用于这项工作?

是否存在用于多线程moltiplication的快速库?还有其他建议吗?

5 个答案:

答案 0 :(得分:4)

我会尝试来自CERN的Colt。它现在有点老了,但仍然为你正在尝试的东西提供了很好的库。

对于并行处理,请尝试较新的Parallel Colt

答案 1 :(得分:3)

对柯尔特和平行柯尔特的尊重,他们并不是很快。如果您坚持使用Java并期望快速数值计算,请使用JBLAS。 JBLAS使用ATLAS。我已编译JBLAS以使用多线程ATLAS - 默认情况下它不会这样做。您需要更改一些配置选项。然而,即使是单线程JBLAS也比多线程Colt和Parallel Colt更快。我测试了Colt,Parallel Colt,JAMA和JBLAS。 JBLAS是一个国家英里最好的。

柯尔特和平行柯尔特非常慢。 JAMA也是如此。 Java中用于此类事物的最佳库是JBLAS。

答案 2 :(得分:1)

答案 3 :(得分:0)

你看过Java Matrix Benchmark了吗?它比较了几种最常见的java线性代数包之间的性能 - 包括一对使用/调用本机代码的程序包。矩阵乘法当然是经过测试/比较的事情之一,最新的基准测试执行实际上是双核四核英特尔至强机器。

您不会看到这些库如何使用稀疏矩阵(或者如果它们完全支持它)。

使用纯Java实现可以获得非常好的性能,但如果您希望使用大型矩阵获得最佳性能,则必须离开JVM"。

答案 4 :(得分:-1)

是的,有用于多线程矩阵乘法的库;让Google成为你的朋友。虽然如果你只有一个线程多线程可能没有必要。为什么8核机器上只有一个线程?需要考虑的一个库是Java BLAS接口。

你肯定采取正确的方法,寻找一个图书馆而不是自己写这个。