gpt4 book ai didi

parallel-processing - Julia pmap : How to effectively send helper functions to other workers?

转载 作者:行者123 更新时间:2023-12-02 16:58:35 26 4
gpt4 key购买 nike

使用pmap函数时,如果该函数未在任何工作进程上定义,则会发生错误。然而,当函数调用其他函数或在另一个.jl文件中使用其他函数时,在每个相关函数上使用@everywhere宏肯定不是一个好的解决方案。

有没有一种巧妙的方法可以有效地将函数及其助手发送给所有可用的工作人员?

最佳答案

我认为没有一个宏可以与函数定义一起使用来将其所有辅助函数的定义发送到所有工作进程。

但是,有更好的方法来发送您需要的所有函数,而不是在每个函数之前添加 @everywhere

您可以将所有这些函数放入一个文件中,并使用 @everywhere include("mynewfile.jl") 在任何地方包含它。如果您的函数在另一个 .jl 文件中使用其他函数,请将其他文件的 include 语句也放入 mynewfile.jl 中。如果您使用其他文件中的模块,请将 usingimport 语句放入 mynewfile.jl

以类似的方式,您可以使用 @everywhere begin...end block 来代替文件。将所有这些函数、usingimport 语句、include 等放入 begin...end block 中并在 begin 之前放置一个 @everywhere。如果您使用 IJulia 笔记本,这尤其有用。

julia> @everywhere begin
g(x) = x^2
f(x) = g(x)*2
end

julia> pmap(f, 1:5)
5-element Array{Int64,1}:
2
8
18
32
50

您还可以创建模块/包,并仅使用单个 @eveywhere using MyNewModule。如果您在包外部使用模块,则还应该在各处包含该模块的定义/文件。

您可能会发现阅读 the relevant manual entry. 很有用。

关于parallel-processing - Julia pmap : How to effectively send helper functions to other workers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55057714/

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