1 benchmarking matlab eigenvector julia
我是一个新的Julia用户,我需要尽快找到大矩阵的特征向量*.我无法让Julia以与Matlab一样快的速度运行以下示例:
朱莉娅
const j = 1000 ::Int
A = Array{Float64}(j,j)
B = Array{Float64}(j,j)
f(x) = eigvecs(x)
A = randn(j,j)
B = f(A)
@time f(A)
Run Code Online (Sandbox Code Playgroud)
输出时间:2.950973秒(12.31 k分配:76.445 MB,0.11%gc时间)
MATLAB
j = 1000;
A = randn(j,j);
tic
[v, d] = eig(A);
toc
Run Code Online (Sandbox Code Playgroud)
经过的时间是1.161133秒.
我还检查了Matlab的1个线程,使用maxNumCompThreads = 1进行比较,但它仍然提供了与之前类似的时间(1.16s).我也尝试通过运行两次预编译加速Julia,并设置blas_set_num_threads(4)但这没有帮助.
我真的很感激有关如何改进我的Julia代码的任何建议!
*(我在OSX El Capitan 10.11.6上使用Matlab 2015b和Julia 0.4.7)
通常在谈论朱莉娅表演时,你谈论的是语言实际上是如何运作的.在这种情况下,Julia和MATLAB都只是调用经过良好优化的C/Fortran库来进行特征值计算.这依赖于BLAS配置.MATLAB附带了一个MKL版本,所以它也只是使用一个不同的库,在许多情况下比OpenBLAS快,但你可以使用Julia Github repo上README中的指令用MKL构建Julia.也许重建你的sysimg可能会有所帮助:
include(joinpath(dirname(JULIA_HOME),"share","julia","build_sysimg.jl")); build_sysimg(force=true)
Run Code Online (Sandbox Code Playgroud)
如果您使用的是预先构建的二进制文件,那么它不会针对您的系统进行优化,这将启用优化.
| 归档时间: |
|
| 查看次数: |
423 次 |
| 最近记录: |