将本地流程与Julia中的远程流程相结合

时间:2015-05-19 18:36:06

标签: parallel-processing julia remote-process

我正在尝试将远程进程与本地进程结合使用,但是当我这样做时,我得到以下输出

julia> addprocs(["user@host"], tunnel=true, dir="~/julia-79599ada44/bin/", sshflags=`-p 6969`)
id: cannot find name for group ID 350
1-element Array{Any,1}:
 2

julia> addprocs(23)
fatal error on 2: ERROR: connect: host is unreachable (EHOSTUNREACH)
 in wait at ./task.jl:284
 in wait at ./task.jl:194
 in stream_wait at stream.jl:263
 in wait_connected at stream.jl:301
 in Worker at multi.jl:113
 in anonymous at task.jl:905
fatal error on fatal error on 5: 6: fatal error on fatal error on fatal error on 9: 14: 8: Worker 3 terminated.
...

我首先尝试添加本地进程,但是当我添加远程进程时出现相同的错误。

1 个答案:

答案 0 :(得分:0)

我知道这个问题很旧,但是今天有人问我是否知道这个未回答的问题的答案。

您可以将-p--machinefile选项一起使用:

可以使用-p--machine-file选项以并行模式启动Julia。 -p n将启动另外的n个工作进程,而--machine-file file将为文件文件中的每一行启动一个工作程序。必须通过无密码 ssh登录名访问文件中定义的计算机,并且Julia与当前主机安装在相同位置。每个计算机定义均采用[count*][user@]host[:port] [bind_addr[:port]]的形式。用户默认为当前用户,端口为标准ssh端口。 count是要在节点上生成的工作线程数,默认为1。可选的绑定到bind_addr[:port]指定其他工作线程用于连接到该工作线程的IP地址和端口。

自从我使用--machinefile选项以来已经有很长时间了,在我的情况下n选项不起作用,我不知道它是否已解决,但是您可以添加例如,如果这对您不起作用,则为您想要的每个工作进程分配一行:

# machinefile.txt
23 user@host

您可以尝试以下方法:

# machinfile.txt
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host
user@host

然后像下面这样调用julia:

$ julia -p 2 --machinefile machinefile.txt

总共25个进程(2个本地进程和23个远程进程)。

但是n选项如果有文档说明应该起作用,否则请检查是否有错误,如果没有,请打开一个新的错误。