👨👨👦👦
JupyterでJuliaのスレッド並列を使う
こちらに書いてある通りJuliaを julia -t 4
や julia -t auto
で起動すればスレッド並列が使えますが, Jupyter Notebook/Labではどうやってスレッド並列を使えばよいのでしょうか? IJulia.jlのカーネルはデフォルトではシングルスレッドになっているので, マルチスレッドを使いたい場合は下記の方法でカーネルを追加する必要があります.
IJulia.jlのインストール
まだJupyter Notebook/Labをインストールしていない人はimport Pkg; Pkg.add("IJulia")
でIJulia.jlを追加しましょう. 詳しい手順は下記の記事で解説しています.
マルチスレッドカーネルの追加
どこで見たアイディアなのか忘れてしまいましたが, ググるとこちらのページに同じコードがあります. 下記のコマンドで, 自動的に最大のスレッド数を指定したJuliaカーネルを追加できます. スレッド数を指定したい場合はこちらのページを参考にしてください.
追加方法
using IJulia
installkernel("Julia (Multi-threads)", "--threads=auto")
追加した後はいつも通りJupyter Labを起動します.
起動方法
using IJulia; jupyterlab(detached=true)
並列化されたカーネルが追加されていることが確認できます.
スレッド数は次のように確認できます.
スレッド数の確認
Threads.nthreads()
応用例
スレッド並列で実際に速くなる例を用意しました. 行列固有値問題は多くの研究者が速いソルバを開発してくれていますが, 行列を作るところは我々が自分でやる必要があるため, 下記のような例が役立ちます.
Discussion