Julia:在模块内使用workers()、procs()等

问题描述 投票:0回答:1

我偶然发现了一些东西:各种

ClusterManagers
函数和操作,例如
workers()
nworkers()
procs()
nprocs()
等)在运行代码时工作正常,除非它在模块内部。

这是一个基本测试用例的内容

JuliaTest.jl
:

using MPI
using ClusterManagers

println(workers(),"     ",nworkers(),"    ",procs(),"     ",nprocs())

julia -p 3 JuliaTest.jl
我得到正确的结果:

[2, 3, 4]     3    [1, 2, 3, 4]     4

但是,当使用模块中包含的完全相同的代码时:

module JuliaTest

using MPI
using ClusterManagers

println(workers(),"     ",nworkers(),"    ",procs(),"     ",nprocs())

end

我收到错误:

ERROR: LoadError: UndefVarError: `workers` not defined
Stacktrace:
 [1] top-level scope
   @ ~/JuliaTest.jl:6
in expression starting at /home/JuliaTest.jl:1

这有什么原因吗?有解决办法吗?

julia mpi
1个回答
0
投票

显然这是因为模块没有暴露在

Distributed
包中,添加
using Distributed
解决了这个问题。

© www.soinside.com 2019 - 2024. All rights reserved.