julia - 如何在简单的 Julia 代码中使用 @everywhere 宏进行并行计算

标签 julia

我正在尝试为并行计算编写一个简单的 Julia 代码。

我根据这个文档写了一个简单的代码:https://docs.julialang.org/en/latest/manual/parallel-computing

@everywhere function test(x)
    return x * 2.0
end

nprocess = 5
addprocs(nprocess)
responses = Vector{Any}(nworkers())

for i in 1:nworkers()
    responses[i] = remotecall(test, i+1, i)
end

for res in responses
    wait(res)
end

但是,我收到此错误消息。

ERROR: LoadError: On worker 2:

UndefVarError: #test not defined



我认为@everywhere 宏不能正常工作。

我正在使用 Julia 0.6.0。

有谁知道如何修理它?

最佳答案

@everywhereaddprocs顺序相反(导致添加的 worker 不知道函数 test )。相反,它可以工作并且不执行 UndefVarError :

nprocess = 5
addprocs(nprocess)
responses = Vector{Any}(nworkers())

@everywhere function test(x)
    return x * 2.0
end

for i in 1:nworkers()
    responses[i] = remotecall(test, i+1, i)
end

for res in responses
    wait(res)
end

关于julia - 如何在简单的 Julia 代码中使用 @everywhere 宏进行并行计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45657667/

相关文章:

julia - 从 URL 读取数据

module - 在 Julia 中查找给定模块名称的包?

dataframe - 使用多个条件选择数据框行的子集

arrays - 在 Julia 中提取数组维度

matplotlib - 如何使用 Pyplot 设置 Julia 中的刻度数?

immutability - 了解 Julia 中具有可变类型字段的不可变复合类型

arrays - 将 Nemo.jl 矩阵转换为普通 Julia 数组?

debugging - 如何避免自定义 Julia 迭代器中的内存分配?

arrays - 逐个元素构建 Julia 数组的有效方法

julia - 可用作宏中运算符的 ASCII 字符序列