On worker 2:UndefVarError(julia) - 在if-else语句中定义的变量

时间:2018-03-22 17:16:09

标签: julia

我注意到如果在if-else语句中定义了此函数的参数,则在@sync @parallel for循环内运行函数会有问题。

示例1 :它无法正常工作

@everywhere function test_fun(arg)
    println(arg);
end

flag = 1;

if flag == 1
    asd = 123;

    @sync @parallel for i=1:10
        test_fun(asd);
    end
end

示例2 :有效

@everywhere function test_fun(arg)
    println(arg);
end

asd = 123;

@sync @parallel for i=1:10
    test_fun(asd);
end

@everywhere asd = 123;修复了上面定义的示例的问题,但在定义SharedArray时它不起作用:

示例3 :它不适用于@everywhere asd

@everywhere function test_fun(arg)
    println(arg);
end

flag = 1;

if flag == 1
    @everywhere asd = 123;
    arr = SharedArray{Float64}(asd);

    @sync @parallel for i=1:10
        test_fun(arr);
    end
end

有任何解决此问题的建议吗?

0 个答案:

没有答案