Zenn
👨‍👨‍👦‍👦

JupyterでJuliaのスレッド並列を使う

2024/12/22に公開

こちらに書いてある通りJuliaを julia -t 4julia -t auto で起動すればスレッド並列が使えますが, Jupyter Notebook/Labではどうやってスレッド並列を使えばよいのでしょうか? IJulia.jlのカーネルはデフォルトではシングルスレッドになっているので, マルチスレッドを使いたい場合は下記の方法でカーネルを追加する必要があります.

IJulia.jlのインストール

まだJupyter Notebook/Labをインストールしていない人はimport Pkg; Pkg.add("IJulia")IJulia.jlを追加しましょう. 詳しい手順は下記の記事で解説しています.

https://zenn.dev/ohno/articles/5ad94fb39a3948#jupyter-notebook

マルチスレッドカーネルの追加

どこで見たアイディアなのか忘れてしまいましたが, ググるとこちらのページに同じコードがあります. 下記のコマンドで, 自動的に最大のスレッド数を指定したJuliaカーネルを追加できます. スレッド数を指定したい場合はこちらのページを参考にしてください.

追加方法
using IJulia
installkernel("Julia (Multi-threads)", "--threads=auto")

追加した後はいつも通りJupyter Labを起動します.

起動方法
using IJulia; jupyterlab(detached=true)

並列化されたカーネルが追加されていることが確認できます.

スレッド数は次のように確認できます.

スレッド数の確認
Threads.nthreads()

応用例

スレッド並列で実際に速くなる例を用意しました. 行列固有値問題は多くの研究者が速いソルバを開発してくれていますが, 行列を作るところは我々が自分でやる必要があるため, 下記のような例が役立ちます.

https://gist.github.com/ohno/9a9e9358f8f86fc303f5e4acbd75fb47

Discussion

ログインするとコメントできます