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

如何正确地实例化由本地和远程计算机组成的IPython群集,python,ssh,parallel-processing,cluster-computing,ipython,Python,Ssh,Parallel Processing,Cluster Computing,Ipython,我在为IPython实例化集群时遇到了大问题。我觉得医生很复杂 我的系统由以下部件组成: 本地计算机,Ubuntu 12.04 x86_64,IPython 2.1,8核处理器 远程计算机,Ubuntu 12.04 x86_64,IPython 2.1,16核处理器,通过无密码SSH从本地计算机访问 我可以通过sshlinello@myserveripaddress。 我认为这种情况对于许多进行科学计算的人来说是相当标准的 我想举例说明一个IPython笔记本,它有8个本地引擎和16个远程引擎(

我在为IPython实例化集群时遇到了大问题。我觉得医生很复杂

我的系统由以下部件组成:

  • 本地计算机,Ubuntu 12.04 x86_64,IPython 2.1,8核处理器
  • 远程计算机,Ubuntu 12.04 x86_64,IPython 2.1,16核处理器,通过无密码SSH从本地计算机访问
  • 我可以通过ssh
    linello@myserveripaddress
    。 我认为这种情况对于许多进行科学计算的人来说是相当标准的

    我想举例说明一个IPython笔记本,它有8个本地引擎和16个远程引擎(=总共24个引擎),可以用来进行一些令人尴尬的并行计算

    如果我用
    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个引擎。

    我在开始时也发现这一点非常令人困惑。在某种程度上,我仍然是这样,但我想我有一个和你相似的案例

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

    c.SSHEngineLauncher.engine_args = ['--location=xxx.xxx.xxx.xxx']
    
    其中xxx.xxx.xxx.xxx是运行控制器的机器的ip地址。我认为这是你的配置可能存在的问题

    我通常通过在提示符下运行ipcluster来测试这类事情。关于这个问题通常是相当明确的。我希望这有帮助

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

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