我在为 IPython 实例化集群时遇到了很大的问题。我认为该文档非常复杂。
我的系统由以下部分组成:
- 本地计算机,Ubuntu 12.04 x86_64,IPython 2.1,8 核处理器
- 远程计算机,Ubuntu 12.04 x86_64,IPython 2.1,16 核处理器,从本地计算机通过无密码 SSH 访问。
我无需密码就可以通过 ssh linello@myserveripaddress
访问远程服务器。
我认为这种情况对于许多进行科学计算的人来说是非常标准的。
我想用 8 个本地引擎和 16 个远程引擎(= 总共 24 个引擎)实例化一个 IPython notebook,以利用一些令人尴尬的并行计算。
如果我用 ipcluster start
启动我的 ipython 集群,然后启动一个 IPython 实例,在其中实例化 Client
类,我只会得到 8 个本地客户端
In[1]: from IPython import parallel
In[2]: clients = parallel.Client()
In[3]: print clients.ids
Out[3]: [0,1,2,3,4,5,6,7]
这意味着只有本地引擎启动了。因此,我将 ipcluster_config.py
脚本修改为以下内容:
c = get_config()
c.IPClusterEngines.engine_launcher_class = 'SSH'
c.LocalControllerLauncher.controller_args = ["--ip='myserverip'"]
c.SSHEngineSetLauncher.engines = {
'localhost': 4,
'tyler': 4,
'par': 4,
}
c.SSHEngineSetLauncher.engine_cmd = ['/ipengine']
其中myserverip
其实是我的服务器ip 192.168.xxx.yyy
我真的不知道如何正确配置我的 ipython 配置文件以在我的 ipython 内核中拥有 24 个引擎。
最佳答案
我一开始也发现这真的很令人困惑。在某种程度上我仍然这样做,但我认为我有一个案例与你的相似。
唯一看起来缺少的是告诉引擎 Controller 在哪里。 ipcluster 配置中有一个选项,如下所示:
c.SSHEngineLauncher.engine_args = ['--location=xxx.xxx.xxx.xxx']
其中 xxx.xxx.xxx.xxx 是运行 Controller 的机器的 IP 地址。我认为您的配置可能存在问题。
我通常通过在提示符下运行 ipcluster 来测试这类事情。它通常非常明确地说明了问题。希望对您有所帮助。
此外,我通常不需要指定:
c.SSHEngineSetLauncher.engine_cmd = ['/ipengine']
关于python - 如何正确实例化由本地和远程机器组成的 IPython 集群,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24264454/