Mathematica Remote Kernel

Mathematicaと言うソフトは、入出力をつかさどるフロントエンドと実際の数値、数式処理をするカーネルとの二つに分けられる。私も含めて大抵のユーザはそんなことあまり考えもせずに一つのマシン上で全てを完結させてしまうのだが、両者をそれぞれ別のマシンで実行させることも可能で、メーカーはそれをMathlinkと呼んでいるらしい。例えば非力なノートでフロントエンドを使い、カーネルの処理はネットワーク上にあるパワーのあるデスクトップなりサーバなりにさせるなどそういう使い方を想定しているらしい。

具体的な両者間の通信の手続きはどうなっているかと言うと、

  1. フロントエンドがポートを開いて待機(特定のポートを開くというわけではないらしい)
  2. フロントエンドがrshを使ってサーバ上にあるカーネルをMathlinkモードで起動(sshで代替可能だが、入力を要する認証を使えない)
  3. カーネルからフロントエンドの起動しているマシンの1.で開いたポートにアクセス(どのポートにアクセスすべきかは2.のときにフロントエンドからカーネルに伝えてある)
  4. カーネル-フロントエンド間で通信して入出力のやり取り

(以下終了まで4.を繰り返し)

すぐに分かること

  • フロントエンドがあるマシンはサーバから見える必要がある(NATを越えられない。フロントエンド自身が持ってるIPをサーバに渡すのでフォワードの類も通用しない)
  • フロントエンドがあるマシンの非特権ポートを開けておく必要がある(FWソフトの設定を甘くしなければならないのであまりよくない)

最初は通信をrsh(ssh)で行い、その標準入出力を奪ってデータのやり取りをする小憎い方法かと思ってたが、実態はこんなもんでちょっと萎える。

ただリモートのXでMathematicaを起動すると、どうも”[“とか”]”の文字が正しく入力されずMathematicaからすると結構致命的なので、グローバルIPアドレスが振られている人とかサーバもフロントエンドも同じLAN内にある人は試してみる価値があるかもしれない。

今のところ正しく動作を確認したのはフロントエンドがMacOSXで、カーネルがLinuxのときのみ。フロントエンドWindowsが一番重要なのだろうけど、どうもsshを使うとうまく行かない…(コマンドプロンプトがこちらが意図した通りの解釈をしていないのではないかと思うのだが…)

…これを書いててふと思ったんだけど、「分散数式処理」って誰かやってるんですかねえ?

カテゴリー: Comp. Mathematica Remote Kernel はコメントを受け付けていません。
%d人のブロガーが「いいね」をつけました。