2011-05-04 84 views
4

我正在做一个神经网络项目(大部分线性代数计算,因为你知道),所以我已经使用Jblas这是一个伟大的库,但在我安装Ubuntu最新版本11.04后,我遇到了一些麻烦使用它,(错误不能复制临时bla bla),如果我做了一些工作,我会解决这个问题。矩阵库更新

但它自己的错误是一个警告我应该真的使用本机库吗?知道我已经逃脱C++因为这种错误(Java作为便携式和实现更容易等)

所以我回到了Apache Commons这是很不错(功能:很多包,良好的设计),但性能是最糟糕!

这使我陷入了困境,现在的Apache性能处理器的性能我们是否应该忽视像Apache这样的库的性能低下,并指望在新处理器中改进技术和多线程?

你觉得我应该通过使用JBLAS做我半路上,

  1. 我应该使用Apache的?
  2. 继续使用JBLA(修复错误)并继续前进
  3. 使用另一个2011年新的有希望的JAVA线性代数库?

编辑:错误是: “org.jblas错误无法加载复制链接文件:java.lang.UnsatisfiedLinkError中:/tmp/jblas2930149998010945438libjblas_arch_flavor.so:libgfortran.so.3:无法打开共享目标文件:没有这样的文件或目录。“

后我咨询JBLAS的作者在其Facebook Page他们告诉我,我需要libgfortran3进行安装,并解决了问题“万一有人得到了同样的问题”

+0

我不知道你得到什么样的错误,或者在哪里。 Ubuntu 11不会对我发现的Java产生负面影响。 – 2011-05-04 11:28:32

+0

它不影响JBLAS,我会在这里返回错误它自己仅仅5分钟 – 2011-05-04 11:35:57

回答

0

我不认为一个解释像Java这样的语言将会给你原生代码的原始性能。这就是为什么FORTRAN/C/C++在科学计算中仍然非常活跃的原因。就我所知,像LAPACK这样的软件包仍然是黄金标准。

我不确定Colt是否会让我变成骗子。我对此没有亲身经历,但如果我仍然在这方面工作,我一定会去看看。

如果这真的是你最大的问题,我会继续与JBLAS。您可以修复该错误。继续。

+2

Java不是纯粹的解释语言。 JVM有一个JIT(即时)编译器,它将字节码编译为相当高效的本地代码。 Java并不慢,因为它不会提前编译为本机机器码。 – Jesper 2011-05-04 12:06:57

+1

我意识到Java并不是纯粹的解释,但这并没有改变Java没有深入广泛应用于科学计算的事实。 – duffymo 2011-05-05 17:04:15

+0

如果你知道这不是一个有效的论点,那么你为什么使用它?注意:根据我自己的经验,我知道JVM并不是原始数据处理的最佳平台。但据我所知,这是因为JVM支持高于速度的兼容性。例如,'java.lang.Math'中的三角函数方法是用软件实现的,而不是使用硬件的可用函数,因为它可以更好地保证在任何操作系统上结果都是一样的。 – Jesper 2011-05-05 18:04:17

2

我以前成功使用过JAMA。它由Mathworks(Matlab的创建者)和NIST创建。这是一个包含基本线性代数方法的很好的包,但它可能不符合您的速度要求。