\documentclass{slides} %% $OpenXM: OpenXM/doc/Papers/ohp20001220.tex,v 1.1 2000/12/17 20:51:10 ohara Exp $ %% RIMS 2000.12.20 での予稿 \title{OpenXM 1.1.3 の概要} \date{December 20, 2000} % \author{小 原   功 任\affil{金沢大学理学部} % \mail{ohara@kappa.s.kanazawa-u.ac.jp} % \and 高 山   信 毅\affil{神戸大学理学部} % \mail{takayama@math.sci.kobe-u.ac.jp} % \and 田 村   恭 士\affil{神戸大学大学院自然科学研究科} % \mail{tamura@math.sci.kobe-u.ac.jp} % \and 野 呂   正 行\affil{神戸大学理学部} % \mail{noro@math.sci.kobe-u.ac.jp} % \and 前 川   将 秀\affil{神戸大学大学院自然科学研究科} % \mail{maekawa@math.sci.kobe-u.ac.jp} % } \def\section#1{\noindent{#1}} \def\subsection#1{\noindent{#1}} \begin{document} \maketitle \section{OpenXMとは} OpenXM は数学プロセス間でメッセージを交換するための規約である. 数学プロ セス間でメッセージをやりとりすることにより, ある数学プロセスから他の数学 プロセスを呼び出して計算を行なったり, 他のマシンで計算を行なわせたりする ことが目的である. この講演では TCP/IP を用いた実装に準拠してOpenXM の説 明をする. \newpage \section{現在提供されているソフトウェア} OpenXM では次のシステムが利用できます $\bullet$ Asir \\ $\bullet$ KAN/sm1 \\ $\bullet$ PHC pack \\ $\bullet$ TiGERS \\ $\bullet$ gnuplot \\ $\bullet$ Mathematica (experimental) \\ $\bullet$ Macaulay2 \\ $\bullet$ OpenMathProxy \\ $\bullet$ JavaClient 現在 OpenXM 規約に対応しているクライアントにはasir, sm1, Mathematica(experimental), JavaClient がある. これらのクライアントから OpenXM 規約に対応したサーバを呼び出すことができる. また OpenXM 規約に対 応しているサーバには, asir, sm1, Mathematica, gnuplot, PHC pack, TiGERS などがあり, それぞれ ox\_asir, ox\_sm1, ox\_sm1\_gnuplot, ox\_sm1\_phc, ox\_math という名前で提供されている. また OpenMath XML 表現で表現されたオブジェクトと CMO 形式のオブジェクト を相互変換するソフトウェアが JAVA によって実装されており, OMproxy という 名前で提供されている. さらに 1.1.3 からは Macaulay 2 によるサーバ, およびクライアントが用意された. \newpage \section{OpenXM の計算の仕組み} OX-RFC-100 で規定された計算の仕組みについて説明する. OpenXM の計算はクラ イアント・サーバモデルである. エンジンはスタックマシンとして働く. \setlength{\unitlength}{1cm} \begin{picture}(20,7)(0,0) \thicklines \put(5,1.7){\line(1,0){7}} \put(5,4.7){\line(3,-1){7}} \put(12,1){\framebox(5,2.5){client}} \put(1,4){\framebox(4,1.5){controller}} \put(1,1){\framebox(4,1.5){engine}} \thinlines \put(0,0.3){\framebox(6,6){}} \put(1.5,-0.7){server} \end{picture} \bigskip controller と engine は同一のマシン上にある. \newpage server が, また client になってもよい. したがって, OX-RFC-100 では, 次の ような分散, 並列計算モデルを定義したことになる. \begin{picture}(20,14)(0,0) \put(7,12){\framebox(4,1.5){client}} \put(2,6){\framebox(4,1.5){server}} \put(7,6){\framebox(4,1.5){server}} \put(12,6){\framebox(4,1.5){server}} \put(0,0){\framebox(4,1.5){server}} \put(5,0){\framebox(4,1.5){server}} \put(13.5,0){\framebox(4,1.5){server}} \put(9,12){\vector(-1,-1){4.3}} \put(9,12){\vector(0,-1){4.3}} \put(9,12){\vector(1,-1){4.3}} \put(4,6){\vector(-1,-2){2.2}} \put(4,6){\vector(1,-2){2.2}} \put(14,6){\vector(1,-3){1.4}} \end{picture} \newpage \section{この一年ほどの進展} \begin{tabular}{ll} 1999年10月 & cvs による開発体制に移行 \\ 2000年1月24日 & OpenXM 1.1.1 リリース 最初の版 \\ 2000年3月20日 & OpenXM 1.1.2 リリース \\ 2000年5月 & www.OpenXM.org の運用開始. \\ % 2000年5月 & OpenXM の論文(poster)が, calculemus に採択された. \\ 2000年9月26日 & OpenXM 1.1.3 リリース \end{tabular} \subsection{1.1.3 およびその後の概要} \begin{enumerate} \item kan/k0 による minimal free resolution in d. %これは高山先生の講演がありますので, それに譲る. \item 検証つき Groebner Basis の計算. % Groebner Basis の計算に履歴システムを加えた. 検証サーバによって % Groebner Basis の計算の正当性をチェックすることができるようになった. \item Macaulay2 サーバ, クライアント. ある数式処理システムを新たに OpenXM サーバにするには, みっつのやり方が考 えられる. ひとつは, そのシステム自体に変更を加えることである. これはもちろん, そ のシステムのソースがなければ不可能である. この例としては, gnuplot, phc, TiGERS がある. ふたつめは, そのシステムを呼び出すようなwrapper を用意することである. ク ライアントと wrapper との間は, OpenXM プロトコルで通信し, wrapper は OpenXM サーバとしてふるまう. 数式処理システムと wrapper との間はそのシス テムの固有の通信プロトコルを用いる. この方法をとっているのは, Mathematica である. Mathematica の場合は MathLink を用いて通信している. 最後は, その数式処理システムが内蔵する言語で, OpenXM サーバを書 くことである. Macaulay 2 は, この方法を用いている. ただし, 任意のファ イルディスクリプタを読み書きする機能はなかったので, 標準入力を読み書きし ている. M2 起動時に ファイルディスクリプタ 3,4 に dup されている. (3,4 は OpenXM 規約で決められたディスクリプタ) \item Debian に対応した. 現在は FreeBSD 3.x, 4.x, Redhat Linux, Debian GNU/Linux 2.2 用のバイナリ パッケージが用意されている. \item OpenXM RFC 方式 いままでは, 規約の変更は, 単一の規約書の改定という形でなされていたが, リ リース 1.1.3 からは OpenXM RFC 方式を導入することになった. これは 1.1.3 での計算モデルを OX-RFC-100 として固定し, 規約の変更は別の文書にして対応 するものである. 新しい分散計算モデルを導入したい時は, 新しい OX-RFC を 提出すればよい. 現在, OX-RFC-101 (新型コントローラ)が提案されている. 前述したように OX-RFC-100 ではひとつの計算モデルを定義した. \item もう risa-con では宣伝したけど, asir contrib で数学の勉強, asir ドリルもあるよ. これも宣伝しなきゃ. \item Java クライアント 式を入力すると, OX サーバに送り, SM\_executeStringByLocalParser する, GUI のアプリケーション. デモができます. \end{enumerate} \newpage \subsection{これからのこと} \begin{enumerate} \item OX-RFC-100 にかわる計算モデルの検討 たとえば, Asir/MPI による 多項式の高速かけ算 %%(cf. http://www.math.kobe-u.ac.jp/OpenXM/1.1.3/html/openxm-poster/ ) では, OX-RFC-100 とは異なり, MPI による計算モデルを用いている. この場合は各プロセスが対等であり, 任意の二つのプロセスの 間でメッセージのやりとりが可能. \item ssh による 新しい launch protocol. OX-RFC-101 によって提案されている新しいコントローラと, その起動手順を指 す. その特徴は以下の通り. \begin{itemize} \item リモートでの起動には ssh を利用する. \item コントローラとエンジンの起動手続きを分離して簡単化. \item コントローラもスタックマシンになった.\\ SM\_control\_spawn\_server 命令によってエンジンを起動. \item セキュリティの強化. \item エンジンの仕様は変更しない. \end{itemize} \item さらなるセキュリティの強化. いろいろな提案がなされているが, OX-RFC に文書化されるには至っていない. \item ipv6 への対応. これは実装の問題だが, ipv4 と ipv6 の差異を意識せずに通信できるようにな ることが必要. いま, 前川がライブラリを書いているところ. \end{enumerate} \newpage \subsection{demo} \begin{enumerate} \item qsort (分散計算の例) {\tt \$home/.asirrc} に \verb|load("/home/ohara/oxsort.rr");| と書く. 次に, asir を起動して \begin{verbatim} [100] main(20000); \end{verbatim} で 20000 要素のリストを quick sort する. \item factorizer (分散計算の例) {\tt \$home/.asirrc} に \verb|load("/home/ohara/dfff");| と書く. 次に, asir を起動して \begin{verbatim} [100] df_demo(); \end{verbatim} とすると, 多項式の次数を聞いてくるので, 適当な数を入力する. 1000次にすると, ちょっと時間がかかる. \item poster (1777 functions) \item asir-book \item macaulay2 で OpenXM クライアント. \item java で OpenXM クライアント. \end{enumerate} \end{document}