So-net無料ブログ作成
検索選択

RaspbianのMathematica [Raspberry Pi]

父の死でまだドタバタしてる。それはそれとして、このブログは元のペースに戻したい。いつまでも死んだ話をトップに置いておくわけにもいかないし。

ということで、平林さんの指摘があったあとでは時期を逸した感があるけど、RaspbianにバンドルされているMathematicaが最新バージョンになった。
0327version.png
手前のウィンドウで表示されてるのが僕のmacBookProのMathematica「システム情報」で、後ろがRaspbian(Raspberry Pi 3 Model B)のもの。ながいこと10.3のままだったのでこれは放置プレイか、と思っていたが、とうとうパソコン版に追いついた。ちなみに今upgradeするとバージョンは同じだけどカーネルのビルドデートが2017031701になっている版(bug fixだろう)がインストールされる....

Mathematicaの標準パッケージの中にベンチマーク用のもの(WolframMarkというらしい)がある。今回初めて僕の手元でパソコン版と同じバージョンになったので、iMacとmacBookProとRaspbianで走らせてみた。そのレポートがこれ。
0327bench1.png
字が小さくて見づらいけど、Late2012のiMac(今となってはかなり古い機種)と50倍ほどの違いがある、ということらしい(「sirius」というのはこれを走らせたRaspberry Pi 3のhostname)。かなり厳しいけど、逆にRaspberry Pi 3では二桁に縮まってきた、と考えることもできる。

ちなみに、LaunchKernels[]でCPUコアの数だけカーネルを立ち上げた状態でベンチマークを走らせるとシングルカーネルとは違ったことをするらしい。それがこれ。
0327bnch2.png
上からiMac、MBP、Raspberry Pi 3で、それぞれカーネルが4個、2個、4個になっている。こちらもほぼ同じ比になっている。インテルのバスやキャッシュがぶりぶりに最適化された4コアとARMの4コアが渡り合ってるということは、それはそれですごいことかもしれない(iMacとMBPの比がコアの個数に比例していないから、4コアあってもMathematicaが使いこなしていないということかもしれないけど)。

最近はRaspbianの肥大化がはげしくて、4GBのSDカードでは足りなくなってきた。そのため、RaspbianをインストールするとまずMathematica(wolfram-engine)をpurgeする、というのが通り相場になっているらしい。パソコン版のMathematicaを手に入れるのに非常に苦労した身としてはなんだかもったいない気がする。が、使わない人にはただの場所ふさぎなのは当然なので僕がどうこういう話ではない。

しかし普通にデスクトップマシンとしてRaspberry Pi 3を使って、項数の多い多項式の簡約とか、Mathematicaの苦手な数値計算をさせるとかでなければ、全く使い物にならない、ということはないんじゃないだろうか。少なくともPi A+から比べると体感速度にかなりの改善が感じられる。なんども書くけど、僕はもっとずっとパフォーマンスの低いマシンでMathematicaを仕事に使っていた。

RaspbianのMathematicaではローカルにドキュメントを持ってないけど、Wolframのサイトにはご丁寧に日本語のドキュメントが整備されている(日本でのライセンスが高いのは日本語化経費の問題だという説明を以前受けたが、各国語のドキュメントも整備されているようなのでもうそれが言い訳にはならないと思うんだけど)ので、それほど不便もないのではないか、と思う。

最近はそれほど大規模ではない数値計算ならMATLABよりPythonNumPyを使う人が増えているように思える。さらにmatplotlibというMATLABそっくりなグラフ表示ができるライブラリも充実してきている。Python+NumPyは何と言ってもタダだし、計算効率も行列計算として表すことができればMATLABと変わらないらしい(NumPyの行列計算は最終的にはLAPACKが呼ばれるらしいので、MATLABと実質的に同じのはずである)。

Mathematicaはそれらに比べると数値計算の効率はかなり悪い。そのためMathematicaをMATLAB(や人によってはR)と同じように使いたい人にとってはMathematicaのメリットはほぼない。しかしMathematicaには代数演算の機能があって、式の形のまま変形や微積分やテイラー展開なんかの操作や、方程式を解析に解いたり、連立式を簡約したり、ということができる。このおかげで問題に対してなるべく解析的な形で計算を進めて、近似や多項式展開を入れて、最後の最後に数値解を求める、というアプローチができる。このメリットは少なくとも僕にとっては非常に大きくて、Mathematicaが手放せない一番の理由になっている。

他の言語を勉強した人にとってはMathematicaのシンタクスは異様で(というよりシンタクスなんてほとんどなくて多くがセマンティクスの問題に置き換えられている。LISP型言語のありがちなパターンではある)ループや条件分岐の書き方やなんかには違和感がある、というのはよくわかる。しかしその敷居を乗り越えて、Mathematica固有の表現、たとえばMapやThreadやNestやFoldといったループに替わる処理や、パターンマッチやRuleなどを使いこなせればむしろシンプルに表現できることも多い。若い人にはその表現の気持ち悪さにあまりこだわらずに軽くスルーしてもらってRaspberry PiのMathematicaをおもちゃとして遊んでくれれば、と思う。何度もなんども書くけど僕は20年前68020CPUのワークステーションで実際に仕事で使っていた。若い人は遅いのなんのと文句をたれるまえにとりあえず試してみることを僕は勧める。

そして目の前の問題からすぐに数値計算の密林の中に入らずに、解析的な目で眺めてほしい。解析的な見方をすれば近似も入れやすいし、複雑な問題であればあるほど近似によって計算も楽になって、なにより直感が効きやすくなる。僕が仕事上の技術的な問題を解析的に扱おうとすると、それを見て「単純化しすぎてる」と言う人がいつもいた。そこに近似を入れたりすると「そんなうそっぱち」とまで言う人もいた。その指摘が正しいこともあったけど、大型のシミュレーションや、やみくもな再現実験より手っ取り早くて見通しも良く、問題に対する仮説の設定や解決法の案にたどり着きやすかった、と僕は思っている。

若い人にはそう言うアプローチもあるということ、そしてMathematicaがその役に立つということを知ってもらえれば思う。いや、もちろん僕はWolfram Researchの回し者でもなければ謝礼をもらっているわけでもない、ただの古くからのユーザであってそれ以上の関係はない。バイアス、オフセットはないと思っていただきたい。


ところで最近僕は簡単な式の微分や不定積分さえ自分では計算できなくて「あれ、なんだっけ?」なんてことが増えている。Mathematicaがないとただのオヤジ以下になってしまう。
「なんでこうわいはあわてもんなんやろなあ」
「子供のころおばんによう言われたなあ、『おまえも落ち着きさえすれば、「普通の人間」や』、いうて」
枝雀バージョンの「いらちの愛宕参り」。
僕はMathematicaがないと「普通の人間」以下だな。
nice!(0)  コメント(0)  トラックバック(0) 

nice! 0

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

メッセージを送る