LoginSignup
37
31

More than 5 years have passed since last update.

iPython notebookで並列計算

Last updated at Posted at 2016-01-19

iPythonでmultiprocessing.Poolのmapを使うと
kernelを停止した時にPythonがゾンビ化するためできるだけ使いたくない.
そこで,iPythonのデフォルトの機能で並列化する.

ここではiPyhtonによる並列化の最低限の使い方を示します.
詳細は Parallel Computing with IPythonを参照してください.

追記

ipython notebook がjupyterに移行したことにより初期設定では
クラスタの起動画面でipyparallelをpipインストールするように要求されるようになりました.(ずいぶん前から移行してましたが今頃になって追記します 2016/1/19)

インストールコマンド

pip install ipyparallel

さらに,jupyter_notebook_config.pyに以下の1行を書き加えないと有効になりません...

c.NotebookApp.server_extensions.append('ipyparallel.nbextension')

jupyter_notebook_config.pyはホームディレクトリの.jupyter内にありますが....以下の1行を実行しないとデフォルトでは生成されていないようです...

jupyter notebook --generate-config

クラスタの起動

iPython notebook起動時の画面からClustersを選択する.
下記のようにnotebook起動時に指定したprofileに対応するエンジン数を設定・開始する.

Screen Shot 2015-02-24 at 4.38.46 PM.png

コードの実行

import numpy as np
from IPython import parallel
clients = parallel.Client()
# 同期実行(並列計算中に制御は返ってこない)
clients.block = True 
view = clients.load_balanced_view()
dview = clients[:]
#クラスタ(エンジン?)の数を確認
print clients.ids

def func(n):
    return np.arange(n)

# クラスタ(エンジン?)にnumpyをimportさせる
dview.execute('import numpy as np')

# funcを並列実行
view.map(func, np.arange(3))

参考文献

37
31
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
31