2017-04-03 8 views
2

私はJulia 0.4で動作していたプログラムをJulia 0.5に移植していますが、問題があります。パッケージからリモートでジュリア機能を実行するにはどうすればよいですか?

これはプログラムです:

addprocs(3) 
ref = @spawn factor(21883298135690819) 
factors = fetch(ref) 
@assert factors == Dict(234711901=>1,93234719=>1) 

ジュリア0.5上で動作しているとき、私は十分

ERROR: On worker 2:
factor(21883298135690819,) has been moved to the package Primes.jl.
Run Pkg.add("Primes") to install Primes on Julia v0.5-

フェアエラーが発生します。しかし、対話型端末に入っても、私のコードはまだ動作しません!トランスクリプトは

julia> Pkg.add("Primes") 
INFO: Nothing to be done 

julia> using Primes 

julia> Primes.factor(21883298135690819) 
Dict{Int64,Int64} with 2 entries: 
    234711901 => 1 
    93234719 => 1 

julia> addprocs(3) 
3-element Array{Int64,1}: 
2 
3 
4 

julia> ref = @spawn factor(21883298135690819) 
Future(2,1,5,Nullable{Any}()) 

julia> factors = fetch(ref) 
ERROR: On worker 2: 
factor(21883298135690819,) has been moved to the package Primes.jl. 
Run Pkg.add("Primes") to install Primes on Julia v0.5- 

同じ問題があります。

documentationは、using宣言によってコードがすべてのプロセスで使用可能になることが示唆されているようですが、そうではありません。

私は間違っていますか?

+4

'' Primes'を使う前に 'addprocs(3)'を入れますか? – Gnimuc

答えて

4

documentationは、 "DummyModuleを使用すると、ジュリアをjulia -p 2で開始するときにモジュールがすべてのプロセスにロードされます"という意味です。つまり、REPLではaddprocs(2)が最初に実行されます。 using Primesの前にaddprocs(3)と入力してください。

関連する問題