gpt4 book ai didi

matlab - 使用 Julia 解决大型系统时的堆栈溢出

转载 作者:太空宇宙 更新时间:2023-11-03 19:43:46 25 4
gpt4 key购买 nike

我正在尝试使用 Octave 和 Julia 求解具有大型方系统矩阵的随机线性系统。因为 Octave 和 Julia 的语法非常相似,所以我在 Octave shell 和 Julia shell 中运行以下代码:

N = 5000;
A = rand(N, N);
b = rand(N, 1);
x = A\b;
r = norm(A*x - b)/norm(b)

Octave 返回 1e-12 附近的 r。另一方面,Julia 返回一个错误:

ERROR: stack overflow
in getrf! at linalg/lapack.jl:342
in LU at linalg/factorization.jl:134
in \ at linalg/dense.jl:518

反斜杠运算符在 Julia 中确实适用于较小的系统(例如 10 x 10),但是 50 x 50 的系统已经给出了错误。据我所知,Octave 和 Julia 都使用 BLAS 和 LAPACK,所以我很困惑为什么 Julia 无法执行此任务。有人可以告诉我如何解决这个问题吗?

系统信息

  • Linux Mint 13 KDE,64 位
  • 从 PPA 安装了 LLVM 3.2 和 Clang 3.2: ppa:kxstudio-team/builds
  • 从源代码编译 Julia 0.2.0-2429.rb0a9ea79

编辑

现在 OpenBLAS 0.2.7 已经出来了,问题已经解决了。重新编译 Julia 时,请确保 Julia 使用系统版本的 OpenBLAS >=0.2.7,或者 Julia 在内部编译其自己的 OpenBLAS 版本 >=0.2.7。

最佳答案

正如我在问题 (https://github.com/JuliaLang/julia/issues/3630) 中提到的,这很可能是与 https://github.com/xianyi/OpenBLAS/issues/221 中讨论的相同的 openblas 线程错误。 .

openblas develop 分支有一个临时修复,它设置了更大的堆栈大小。

现在,执行blas_set_num_threads(1)

关于matlab - 使用 Julia 解决大型系统时的堆栈溢出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17478991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com