并行计算使用@sync begin时,LinearAlgebra中的函数无法使用。


#1

Julia 1.1版本,如下代码时会报错

using Distributed
using LinearAlgebra
addprocs(72)
@sync begin
    @distributed for i = 1:0.001:10
          T = [i i + 1; i + 2 i + 3];
          V = eigvals(T);
    end
end
ERROR: LoadError: On worker 2:
UndefVarError: eigvals not defined

去掉@sync begin或者addprocs(1)时运算正常。
谢谢!


#2

这样写反正是不报错了。

using Distributed

addprocs(72)
@sync begin
    @distributed for i = 1:0.001:10
          T = [i i + 1; i + 2 i + 3];
          V = LinearAlgebra.eigvals(T);
    end
end

#3

十分感谢!社区真温暖!


#4

因为其他的核上没有using啊,你需要在
addprocs() 后面加
@everywhere using LinearAlgebra


#5

受教了,谢谢您的回复。