我在为IPython实例化群集时面临很大问题。我认为该文档非常复杂。
我的系统由以下内容组成:
我通过ssh linello@myserveripaddress
无法访问远程服务器的密码。
我认为对于许多进行科学计算的人来说,这种情况非常标准。
我想实现一个带有8个本地和16个远程引擎(= 24个引擎)的IPython笔记本,以便进行一些令人难以置信的并行计算。
如果我用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个引擎。
答案 0 :(得分:0)
我发现这一开始也很困惑。我仍然在某种程度上做了,但我认为我有一个看起来与你的相似的案例。
唯一看起来缺失的是告诉控制器所在的引擎。 ipcluster配置中有一个选项如下:
c.SSHEngineLauncher.engine_args = ['--location=xxx.xxx.xxx.xxx']
其中xxx.xxx.xxx.xxx是运行控制器的计算机的IP地址。我认为这可能是您配置的问题。
我通常通过在提示符下运行ipcluster来测试这种事情。它通常对这个问题非常明确。我希望有所帮助。
另外,我通常不需要指定:
c.SSHEngineSetLauncher.engine_cmd = ['/ipengine']