\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}
