如何正确实例由本地和远程计算机组成的IPython集群

时间:2014-06-17 12:57:03

标签: python ssh parallel-processing cluster-computing ipython

我在为IPython实例化群集时面临很大问题。我认为该文档非常复杂。

我的系统由以下内容组成:

  1. 本地计算机,Ubuntu 12.04 x86_64,IPython 2.1,8核处理器
  2. 远程计算机,Ubuntu 12.04 x86_64,IPython 2.1,16核心处理器,可从本地计算机通过无密码SSH访问。
  3. 我通过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个引擎。

1 个答案:

答案 0 :(得分:0)

我发现这一开始也很困惑。我仍然在某种程度上做了,但我认为我有一个看起来与你的相似的案例。

唯一看起来缺失的是告诉控制器所在的引擎。 ipcluster配置中有一个选项如下:

c.SSHEngineLauncher.engine_args = ['--location=xxx.xxx.xxx.xxx']

其中xxx.xxx.xxx.xxx是运行控制器的计算机的IP地址。我认为这可能是您配置的问题。

我通常通过在提示符下运行ipcluster来测试这种事情。它通常对这个问题非常明确。我希望有所帮助。

另外,我通常不需要指定:

c.SSHEngineSetLauncher.engine_cmd = ['/ipengine']