用法一
addprocs(manager::ClusterManager; kwargs...) -> List of process identifiers
通過指定的集群管理器啟動工作進程。
例如,通過 ClusterManagers.jl
包中實現的自定義集群管理器支持 Beowulf 集群。
新啟動的工作進程等待從主進程建立連接的秒數可以通過工作進程環境中的變量JULIA_WORKER_TIMEOUT
指定。僅在使用 TCP/IP 作為傳輸時相關。
要在不阻塞 REPL 的情況下啟動工作程序,或者如果以編程方式啟動工作程序,則要啟動包含函數,請在其自己的任務中執行 addprocs
。
例子
# On busy clusters, call `addprocs` asynchronously
t = @async addprocs(...)
# Utilize workers as and when they come online
if nprocs() > 1 # Ensure at least one new worker is available
.... # perform distributed execution
end
# Retrieve newly launched worker IDs, or any error messages
if istaskdone(t) # Check if `addprocs` has completed to ensure `fetch` doesn't block
if nworkers() == N
new_pids = fetch(t)
else
fetch(t)
end
end
用法二
addprocs(machines; tunnel=false, sshflags=``, max_parallel=10, kwargs...) -> List of process identifiers
通過 SSH 在遠程機器上添加進程。請參閱exename
以設置遠程計算機上julia
安裝的路徑。
machines
是機器規格的向量。為每個規格啟動工人。
機器規範是字符串 machine_spec
或元組 - (machine_spec, count)
。
machine_spec
是格式為 [user@]host[:port] [bind_addr[:port]]
的字符串。 user
默認為當前用戶,port
為標準 ssh 端口。如果指定了[bind_addr[:port]]
,其他worker會在指定的bind_addr
和port
連接到這個worker。
count
是要在指定主機上啟動的工作人員數量。如果指定為:auto
,它將啟動與特定主機上的 CPU 線程數一樣多的工作程序。
關鍵字參數:
-
tunnel
:如果true
則 SSH 隧道將用於從主進程連接到工作進程。默認為false
。 -
multiplex
:如果true
則 SSH 多路複用用於 SSH 隧道。默認為false
。 -
ssh
:用於啟動工作程序的 SSH 客戶端可執行文件的名稱或路徑。默認為"ssh"
。 -
sshflags
:指定其他 ssh 選項,例如sshflags=`-i /home/foo/bar.pem`
-
max_parallel
:指定主機上並行連接的最大工作線程數。默認為 10。 -
shell
:指定 ssh 連接到 worker 的 shell 類型。-
shell=:posix
:POSIX 兼容的 Unix/Linux shell(bash、sh 等)。默認。 -
shell=:wincmd
:微軟視窗cmd.exe
。
-
-
dir
:指定workers的工作目錄。默認為主機的當前目錄(由pwd()
找到) -
enable_threaded_blas
:如果true
則 BLAS 將在添加的進程中的多個線程上運行。默認為false
。 -
exename
:julia
可執行文件的名稱。默認為"$(Sys.BINDIR)/julia"
或"$(Sys.BINDIR)/julia-debug"
視情況而定。 -
exeflags
:傳遞給工作進程的附加標誌。 -
topology
:指定工作人員如何相互連接。在未連接的工作人員之間發送消息會導致錯誤。-
topology=:all_to_all
:所有進程相互連接。默認。 -
topology=:master_worker
:隻有驅動進程,即pid
1 連接到工作進程。工作人員不相互連接。 -
topology=:custom
:集群管理器的launch
方法通過WorkerConfig
中的ident
和connect_idents
字段指定連接拓撲。具有集群管理器身份ident
的工作人員將連接到connect_idents
中指定的所有工作人員。
-
-
lazy
:僅適用於topology=:all_to_all
。如果true
, worker-worker 連接是惰性設置的,即它們是在工作人員之間遠程調用的第一個實例中設置的。默認為真。 -
env
:提供一個字符串對數組,例如env=["JULIA_DEPOT_PATH"=>"/depot"]
以請求在遠程計算機上設置環境變量。默認情況下,隻有環境變量JULIA_WORKER_TIMEOUT
會自動從本地環境傳遞到遠程環境。 -
cmdline_cookie
:通過--worker
命令行選項傳遞身份驗證 cookie。通過 ssh stdio 傳遞 cookie 的(更安全的)默認行為可能會與使用較舊(ConPTY 之前)Julia 或 Windows 版本的 Windows 工作人員掛起,在這種情況下,cmdline_cookie=true
提供了一種解決方法。
Julia 1.6
在 Julia 1.6 中添加了關鍵字參數 ssh
、 shell
、 env
和 cmdline_cookie
。
環境變量:
如果 master 進程在 60.0 秒內未能與新啟動的 worker 建立連接,則 worker 將其視為致命情況並終止。這個超時可以通過環境變量 JULIA_WORKER_TIMEOUT
來控製。主進程上JULIA_WORKER_TIMEOUT
的值指定新啟動的工作人員等待連接建立的秒數。
用法三
addprocs(; kwargs...) -> List of process identifiers
相當於addprocs(Sys.CPU_THREADS; kwargs...)
請注意,worker 不會運行 .julia/config/startup.jl
啟動腳本,也不會將其全局狀態(例如全局變量、新方法定義和加載的模塊)與任何其他正在運行的進程同步。
用法四
addprocs(np::Integer; restrict=true, kwargs...) -> List of process identifiers
使用內置的 LocalManager
啟動工作程序,它隻在本地主機上啟動工作程序。這可用於利用多個內核。 addprocs(4)
將在本地機器上添加 4 個進程。如果 restrict
是 true
,則綁定僅限於 127.0.0.1
。關鍵字參數 dir
、 exename
、 exeflags
、 topology
、 lazy
和 enable_threaded_blas
具有與 addprocs(machines)
記錄的相同效果。
相關用法
- Julia Distributed.procs方法用法及代碼示例
- Julia Distributed.remotecall_fetch方法用法及代碼示例
- Julia Distributed.@spawnat用法及代碼示例
- Julia Distributed.remotecall方法用法及代碼示例
- Julia Distributed.default_worker_pool用法及代碼示例
- Julia Distributed.@fetch用法及代碼示例
- Julia Distributed.myid用法及代碼示例
- Julia Distributed.nprocs用法及代碼示例
- Julia Distributed.@fetchfrom用法及代碼示例
- Julia Distributed.remotecall_wait方法用法及代碼示例
- Julia Distributed.workers用法及代碼示例
- Julia Distributed.nworkers用法及代碼示例
- Julia Distributed.CachingPool用法及代碼示例
- Julia Distributed.WorkerPool用法及代碼示例
- Julia Distributed.rmprocs用法及代碼示例
- Julia Dims()用法及代碼示例
- Julia Dict用法及代碼示例
- Julia Dates.week用法及代碼示例
- Julia Dates.CompoundPeriod方法用法及代碼示例
- Julia Dates.monthname用法及代碼示例
- Julia Dates.Time方法用法及代碼示例
- Julia Dates.firstdayofmonth用法及代碼示例
- Julia Dates.lastdayofmonth用法及代碼示例
- Julia Dates.lastdayofweek用法及代碼示例
- Julia Dates.lastdayofyear用法及代碼示例
注:本文由純淨天空篩選整理自julialang.org 大神的英文原創作品 Distributed.addprocs — Function。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。