我最近開始研究Julia中的並行處理,我遇到了一個我並不真正瞭解如何解決的問題。並行處理:@everywhere,distributions and types
在執行了Julia julia -p 4
之後,我想在所有進程中加載Distributions模塊,並且我想定義一個依賴於分佈的Type。
下顯然可以正常工作,當我有它:
@everywhere using Distributions
type TypeDistrib{T <: Float64}
d::Distributions.Normal{T}
end
如果我寫完全相同的代碼作爲一個模塊,那麼它不會:
module test
@everywhere using Distributions
type TypeDistrib{T <: Float64}
d::Distributions.Normal{T}
end
export TypeDistrib
end
上面提供了以下錯誤信息:
ERROR: LoadError: UndefVarError: Distributions not defined in include_from_node1(::String) at ./loading.jl:488 in include_from_node1(::String) at /Applications/Julia-0.5.app/Contents/Resources/julia/lib/julia/sys.dylib:? while loading /***/test.jl, in expression starting on line 4
請您澄清一下我在這裏做得不對嗎?
注意:我用***代替了錯誤信息中的完整路徑,因爲它很混亂。
這可能是它應該是。但是,爲什麼我寫的代碼無法正常工作,這並不是非常清楚。你能否澄清一點你的觀點? – merch
'使用Distributions'就像在Main模塊中寫入一樣進行評估,並且'Distributions.Normal {T}'在'test'模塊(它被定義的地方)中被搜索,所以找不到它。例如,使用'Main.Distributions.Normal {T }'在問題中定義的'test'中工作。 –