为了账号安全,请及时绑定邮箱和手机立即绑定

Java矩阵数学库的性能?

Java矩阵数学库的性能?

陪伴而非守候 2019-09-18 19:52:26
我们正在计算运行时受矩阵运算约束的东西。(如果感兴趣,请参阅下面的一些细节。)这次经历提出了以下问题民间有没有使用Java库的矩阵数学性能经验(例如,乘法,逆等)?例如:JAMA小马Apache公共数学我搜查了一下,一无所获。我们的速度比较详情:我们使用的是英特尔FORTRAN(ifort(IFORT)10.1 20070913)。我们使用Apache commons math 1.2矩阵运算在Java(1.6)中重新实现了它,并且它同意所有的精度数字。(我们有理由在Java中想要它。)(Java双打,Fortran真* 8)。Fortran:6分钟,Java 33分钟,同样的机器。jvisualm profiling显示了在RealMatrixImpl中花费了大量时间。{getEntry,isValidCoordinate}(在未发布的Apache commons math 2.0中似乎已经消失了,但2.0并不快)。Fortran正在使用Atlas BLAS例程(dpotrf等)。显然这可能取决于我们在每种语言中的代码,但我们相信大部分时间都在等效的矩阵运算中。在其他几个不涉及库的计算中,Java并没有慢得多,有时甚至更快。
查看完整描述

3 回答

?
幕布斯6054654

TA贡献1876条经验 获得超7个赞

只是加我2美分。我比较了其中一些库。我试图矩阵乘以3000乘3000矩阵的双精度。结果如下。

使用带有C / C ++,Octave,Python和R的多线程ATLAS,所花费的时间大约为4秒。

使用Jama with Java,所用时间为50秒。

使用Colt和Parallel Colt与Java一起使用时间为150秒!

使用JBLAS和Java,由于JBLAS使用多线程ATLAS,所以花费的时间大约为4秒。

所以对我来说很明显,Java库的表现并不好。但是,如果有人必须使用Java编写代码,那么最好的选择是JBLAS。贾马,科尔特和平行柯尔特并不快。


查看完整回答
反对 回复 2019-09-18
?
慕尼黑8549860

TA贡献1818条经验 获得超11个赞

我是Java Matrix Benchmark(JMatBench)的作者,我将对这个讨论给出我的看法。


Java库之间存在显着差异,虽然在整个运营范围内没有明显的赢家,但在最新的绩效结果(2013年10月)中可以看到一些明显的领导者。


如果您正在使用“大型”矩阵并且可以使用本机库,那么明确的赢家(大约快3.5倍)是具有系统优化的netlib的MTJ。如果您需要纯Java解决方案,那么MTJ,OjAlgo,EJML和Parallel Colt都是不错的选择。对于小型矩阵,EJML是明显的赢家。


我没有提到的库显示出重大的性能问题或缺少关键功能。


查看完整回答
反对 回复 2019-09-18
  • 3 回答
  • 0 关注
  • 1565 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信