相关疑难解决方法(0)

Julia中的特征分解比Mathematica慢5倍?

我是Julia的新手,主要在Mathematica工作,所以我可能会有一些基本的错误.我试图计算Julia计算随机矩阵的特征系统的时间,并发现它比Mathematica慢5-6倍.

在朱莉娅:

D=1000*(rand(1000,1000)-0.5);
@time (E,F)=eig(D);

Out: elapsed time: 7.47950706 seconds (79638920 bytes allocated*)
Run Code Online (Sandbox Code Playgroud)

在Mathematica中:

First@Timing@Eigensystem[RandomReal[{-500, 500}, {1000, 1000}]]

Out: 1.310408
Run Code Online (Sandbox Code Playgroud)

对于2000 x 2000阵列来说它是相似的,虽然Julia结果的速度比Mathematica调用的速度略慢,但它仍然较慢; Julia需要22秒,而Mathematica会在8秒内计算出来.

至于我在线性代数Julia标准库中读到的,通过调用LAPACK来实现分解,我认为这应该是非常好的,所以我很困惑为什么Julia代码运行得那么慢.有谁知道为什么会这样?它是在进行Mathematica不做的某种平衡或阵列对称检测吗?还是它实际上更慢?

此外,这是一个语法问题,可能是一个愚蠢的错误,但你如何改变朱莉娅的平衡?我试过了

@time (E,F)=eig(D[, balance=:nobalance]);
Run Code Online (Sandbox Code Playgroud)

完全像从Julia手册中复制和粘贴一样,但它只是给出了语法错误,所以出了点问题.

我正在使用Windows 7 64位,Julia版本0.2.0 64位,使用Steven Johnson网站上说明安装,首先安装Anaconda以处理先决条件.我使用的是Mathematica学生版9.0.1.

编辑1:

执行versioninfo()屈服

Julia Version 0.2.0
Commit 05c6461 (2013-11-16 23:44 UTC)
Platform Info:
System: Windows (x86_64-w64-mingw32)
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY)
LAPACK: libopenblas
LIBM: libopenlibm
Run Code Online (Sandbox Code Playgroud)

所以看起来我正在使用openBLAS用于LAPACK和BLAS.一旦我获得了Mathematica实现信息,我也会添加它.

编辑2:

似乎Windows Mathematica 可能使用英特尔MKL BLAS.

performance linear-algebra julia

10
推荐指数
2
解决办法
2704
查看次数

标签 统计

julia ×1

linear-algebra ×1

performance ×1