【问题标题】:Parallel processing in Julia throws errorsJulia 中的并行处理引发错误
【发布时间】:2020-09-29 07:44:37
【问题描述】:

我的理解是基本 Julia 安装中默认包含并行化。

但是,当我尝试使用它时,我收到了未定义函数和宏的错误。例如:

nprocs()

抛出错误:

ERROR: UndefVarError: nprocs not defined
Stacktrace:
 [1] top-level scope at none:0

在任何 Julia 文档中,我都找不到任何需要包含才能使用这些功能的包的提及。我在这里遗漏了什么吗?

我在 JuliaPro/Atom IDE 中使用 Julia 版本 1.0.5

【问题讨论】:

    标签: parallel-processing julia


    【解决方案1】:

    我想通了。我会把这个留给其他遇到这个问题的人。

    解决方案是使用以下方式导入分布式包:

    using Distributed

    为什么这不包含在我不知道的文档中。

    【讨论】:

    • 是的,Distributed 是一个内置包。其他有用的包包括 SharedArrays、ParallelDataTransfer.jl、DistributedArrays.jl、ClusterManagers.jl。
    • @PrzemyslawSzufel 感谢您提供这些有用的信息
    【解决方案2】:

    一旦您知道需要使用nproc,就有几个选项可以找到它的定义位置。

    搜索文档会有所帮助:https://docs.julialang.org/en/v1/search/?q=nprocs

    在不离开 Julia REPL 的情况下,甚至在您的会话中导入 nprocs 之前,您可以使用 apropos 来查找有关它的更多信息并确定是否需要导入 Distributed 包:

    julia> apropos("nprocs")
    Distributed.nprocs
    Distributed.addprocs
    Distributed.nworkers
    

    另一种使用 apropos 的方法是通过help REPL mode

    julia> # type `?` when the cursor is right after the prompt to enter help REPL mode
    
    # note the use of double quotes to trigger "apropos" instead of a regular help query
    help?> "nprocs"
    Distributed.nprocs
    Distributed.addprocs
    Distributed.nworkers
    

    以前的选项在 nprocs 的情况下效果很好,因为它是标准库的一部分。 JuliaHub 是另一个选项,它允许在整个 Julia 生态系统中更广泛地寻找事物。例如,在 JuliaHub 的“文档搜索”工具中查找 nprocs 也会返回相关结果:https://juliahub.com/ui/Documentation?q=nprocs

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多