備忘録

物忘れが酷いので

ipython3 parallel でsshを使ったクラスタを作成

準備

  • ssh,scpをパスフレーズなしでできるようにする。
  • すべてのホストにipythonが入っている。

クラスタを作成

ipython clusterのプロファイルを作成

ipython profile create --parallel --profile=ssh

作成したプロファイルまで移動

cd IPYTHON_DIR/profile_ssh/
e.g.
cd ~/.config/ipython/profile_ssh/

ipcluster_config.pyを編集

c = get_config()
c.IPClusterEngines.engine_launcher_class = 'SSH'
c.LocalControllerLauncher.controller_args = ["--ip='*'"]
c.SSHEngineSetLauncher.engines = {
        "host1":4,
        "host2":4,
        "host3":4,
        "host4":4,
}
c.SSHEngineSetLauncher.engine_cmd = ['ipengine3'] # ipython3でクラスタを作成せるときマニュアルが2を対象としたものが多いため、ここを忘れがち

scpで他のホストの同じディレクトリにprofile_sshを手動でコピーする。

これにより、ipython3でクラスタを作成することができました。

あとは動作を確認してみます

ipcluster3 start --profile=ssh
2015-12-15 23:02:55.661 [IPClusterStart] Starting ipcluster with [daemon=False]
......
2015-12-15 23:03:29.019 [IPClusterStart] Engines appear to have started successfully


感想

ipython2のマニュアルを見ていたため

c.SSHEngineSetLauncher.engine_cmd = ['ipengine3']

を設定するということに気づくのが遅れてたいへん手間取ってしまったのがとてもつらかった。