Raspbian jessie LITE で Mathematica 備忘録の続き.前回の記事の最後に「簡単な計算でもテンポが遅れて帰ってくる」と書きましたが,GUI 部分(ノートブック部分)と演算部分を分けて動かせば少しは緩和されるんじゃないかな,と思って試してみました.
Remote Development Kit ?
こんな風に思ったのは,そもそも Mathematica のインターフェース部分が結構リッチなので結構重たそうだなと思ったこと,そして,開発元のWOLFRAMのページ
で,Remote Development Kit というのがあるのを知ったからです.で,Remote Development Kit と言うのは,
Seamless development on the Raspberry Pi from any desktop version of Mathematica, including Home and Student Editions.
だそうで,要するに他のシステムにインストールされた Mathematica から Raspbian の Mathematica の演算部分(kernel)を利用するためのもの.つまり,これを使えば実現できるよね,と思った訳です.で,実現は出来たのですが,結局はこのキット必要無いです(笑).
ssh の確認
Mathematica はリモートカーネルを利用しようとする端末と ssh 経由で通信します.従って,実際にリモート端末に Mathematica を利用できるユーザーアカウントでログイン可能かどうかをまずチェックする必要があります.
java の設定
Mathematica は前回の記事に従ってすでに導入済みとしておきます.Mathematica 側の設定をする前にまずは事前準備として java を設定する必要があります.と言うか,これ多分パッケージングのミス(バグ)だと思います.Raspbian jessie を入れれば多分初めから入っていると思うのですが,oracle-java8-jdk が必要です.入ってなくても普通に
$ sudo apt-get install oracle-java8-jdk
とすれば良いはずです.
次に,Mathematica から java が見えるようにするため,
$ sudo /opt/Wolfram/WolframEngine/10.3/SystemFiles/Java/Linux-ARM $ cd /opt/Wolfram/WolframEngine/10.3/SystemFiles/Java/Linux-ARM $ sudo ln -s /usr/bin .
とすれば OK です.
Mathematica へのリモートカーネルの登録
次に Mathematica でリモートカーネルを使う設定をします.Mathematica を起動し,インターフェース部分が起動したら,メニューから
- Evaluation → Kernel Configuration Options…
を選択し,「Properties」画面から「Add」を選びます.これで,「Kernel Properties」画面が開きますので,リモートカーネルを実行する端末を以下の通り設定していきます.
- Kernel Name: rbp(任意です.適当な名前を付けます)
- Launch on: 「Remote Machine」 を選択
- Machine Name: rbp.*****.local (FQDN) or 192.168.*.* (IP address)
- Remote Login: pi (Raspbian に別のユーザーを作っているのならそれでも可)
- Kernel Program: /usr/bin/wolfram
ここまで設定したら「OK」→ 「OK」とし,Mathematica のノートブック(インターフェース画面)のメニューから
- Evaluation → Start Kernel → rbp3 (上で設定した Kernel Name)
を選び,「Password for pi@rbp3.*****.local」のような画面が出てくれば正しく設定出来ています.なお,Password は Raspbian 標準のユーザー pi を使っている場合はデフォルトで「raspberry」です.
これで Mathematica から別の Raspberry pi にインストールされたカーネルを使う準備ができました.
リモートカーネルでの計算
実際にリモートカーネルで計算するかどうかは,Mathematica のノートブック(インターフェース画面)のメニューの「Evaluation」から,
- Default Kernel
- Notebook’s Kernel
で適当に選択すれば良いですし,起動時,自動的にリモートカーネルを立ち上げるかどうかも,リモートカーネルを登録した「Kernel Properties」画面で,
- Automatically launch on front end startup
を選択するかどうかで設定できます.
で,計算は速くなったのか?
すぐに分かることですが,リモートカーネルは幾つも登録でき,さらに,どのリモートカーネルを利用するのかを自動,もしくは手動で計算ごとに選択できます.つまり,Mathematica はネットワークを介した並列計算を行うことができる設計になっています.
でも,これはもちろん並列に計算できる場合な訳で,Mathematica を高級電卓代わりに使う場合はあんまり関係が無い.そもそも,Raspberry pi3 の CPU は4コアで,Mathematica のノートブックが使うコアと演算を実行するプログラムが利用するコアが違えば演算スピードはリモートでやるのと変わらないでしょうから,単に Mathemtica を高級電卓として使うだけだと演算速度はあまり期待できません.
と言うことで,結論は,やってはみたけど正直演算スピードが速くなる場合は限定されるはずで,どんな計算だとどの位負荷分散されるのかの検証は面倒なのでやってません.色々試した方がおられましたらお教えいただけるとありがたいです.