version 1.7, 2000/01/15 03:23:59 |
version 1.12, 2000/01/16 10:55:40 |
|
|
% $OpenXM: OpenXM/doc/issac2000/design-outline.tex,v 1.6 2000/01/15 02:24:18 takayama Exp $ |
% $OpenXM: OpenXM/doc/issac2000/design-outline.tex,v 1.11 2000/01/16 06:02:41 takayama Exp $ |
|
|
\section{Design Outline} |
\section{Design Outline} |
|
|
Line 24 and a method to interrupt computations on servers from |
|
Line 24 and a method to interrupt computations on servers from |
|
RPC, HTTP, MPI, PVM are regarded as a general purpose control protocols or |
RPC, HTTP, MPI, PVM are regarded as a general purpose control protocols or |
infrastructures. |
infrastructures. |
MCP (Mathematical Communication Protocol) |
MCP (Mathematical Communication Protocol) |
by Wang \cite{iamc} is such a protocol specialized to mathematics. |
by Wang \cite{iamc} is such a protocol for mathematics. |
|
|
Although, data and control are orthogonal to each other, |
Although data and control are orthogonal to each other, |
real world requires both. |
real world requires both. |
NetSolve \cite{netsolve}, OpenMath$+$MCP, MP$+$MCP \cite{iamc}, |
NetSolve \cite{netsolve}, OpenMath$+$MCP, MP$+$MCP \cite{iamc}, |
and MathLink \cite{mathlink} provide both data and control integration. |
and MathLink \cite{mathlink} provide both data and control integration. |
Each integration method has their own features due to their |
Each integration method has their own features determined by their |
own design goals and design motivations. |
own design goals. |
OpenXM (Open message eXchange protocol for Mathematics) |
OpenXM (Open message eXchange protocol for Mathematics) |
is a project aiming to integrate data, control and user interfaces |
is a project aiming to integrate data, control and user interfaces |
with its own set of design goals. |
with design goals motivated by the followings. |
To explain our design outline, we start with a list of |
|
our motivations. |
|
\begin{enumerate} |
\begin{enumerate} |
\item Noro has developed a general |
\item Noro has been involved in the development of |
purpose computer algebra system Risa/Asir \cite{asir}. |
a computer algebra system Risa/Asir \cite{asir}. |
An interface for interactive distributed computations was introduced |
An interface for interactive distributed computations was introduced |
in Risa/Asir version 950831 released in 1995. |
to Risa/Asir |
The model of computation was RPC (remote procedure call) |
%% version 950831 released |
and it had its own serialization. |
in 1995. |
A robust interruption method was provided by having two communication channels |
The model of computation was RPC (remote procedure call). |
like ftp. |
A robust interruption protocol was provided |
As an application of this robust and the interactive distributed computation |
by two communication channels |
system, speed-up was achieved for a huge Gr\"obner basis computation |
like the File Transfer Protocol (ftp). |
|
As an application of this protocol, |
|
a parallel speed-up was achieved for a Gr\"obner basis computation |
to determine all odd order replicable functions |
to determine all odd order replicable functions |
by Noro and McKay \cite{noro-mckay}. |
(Noro and McKay \cite{noro-mckay}). |
However, the protocol was closed in Asir and we thought that we should |
However, the protocol was local in Asir and we thought that we should |
design an open protocol. |
design an open protocol. |
\item Takayama has developed |
\item Takayama has developed |
a special purpose computer algebra system Kan/sm1 \cite{kan}, |
a special purpose system Kan/sm1 \cite{kan}, |
which is a Gr\"obner engine for the ring of differential operators $D$. |
which is a Gr\"obner engine for the ring of differential operators $D$. |
In order to implement algorithms in D-modules due to Oaku |
In order to implement algorithms in $D$-modules due to Oaku |
(see, e.g., \cite{sst-book}), |
(see, e.g., \cite{sst-book}), |
factorizations and primary ideal decompositions were necessary. |
factorizations and primary ideal decompositions are necessary. |
Kan/sm1 does not have an implementation for these and called |
Kan/sm1 does not have an implementation for these and called |
Risa/Asir as a C library or a UNIX external program. |
Risa/Asir as a UNIX external program. |
This approach was not satisfactory. |
This approach was not satisfactory. |
Especially, we could not write a clean interface code between these |
Especially, we could not write a clean interface code between these |
two systems. |
two systems. |
We thought that it is necessary to provide a data and control protocol |
We thought that it is necessary to provide a data and control protocol |
for Risa/Asir to work as a server of factorization and primary ideal |
for Risa/Asir to work as a server of factorization and primary ideal |
decomposition. |
decomposition. |
\item The number of mathematical softwares is increasing rapidly in the last |
\item We have been profitted from increasing number |
decade of the 20th century. |
of mathematical softwares. |
These are usually ``expert'' systems in one area of mathematics |
These are usually ``expert'' systems in one area of mathematics |
such as ideals, groups, numbers, polytopes, and so on. |
such as ideals, groups, numbers, polytopes, and so on. |
They have their own interfaces and data formats. |
They have their own interfaces and data formats, |
Interfaces are sometimes specialized to a specific field of mathematics |
which are fine for intensive users of these systems. |
or poor. |
However, a unified system will be more convenient |
It is fine for intensive and serious users of these systems. |
for users who want to explore a new area of mathematics with these |
However, for users who want to explore a new area of mathematics with these |
softwares or users who need these systems only occasionally. |
softwares or users who need these systems only occasionally, |
|
a unified system will be more convenient. |
|
|
|
\item We believe that an open integrated system is a future of mathematical |
\item We believe that an open integrated system is a future of mathematical |
softwares. |
softwares. |
However, it might be just a dream without realizability. |
However, it might be just a dream without realizability. |
We want to build a prototype system of such an open system by using |
We want to build a prototype of such an open system by using |
existing standards, technologies and several mathematical softwares. |
existing standards, technologies and several mathematical softwares. |
We want to see how far we can go with this approach. |
We want to see how far we can go with this approach. |
\end{enumerate} |
\end{enumerate} |
Line 91 fundamental architecture. |
|
Line 89 fundamental architecture. |
|
\begin{enumerate} |
\begin{enumerate} |
\item Communication is an exchange of messages. The messages are classified into |
\item Communication is an exchange of messages. The messages are classified into |
three types: |
three types: |
DATA, COMMAND, and others. |
DATA, COMMAND, and SPECIAL. |
The messages are called OX (OpenXM) messages. |
They are called OX (OpenXM) messages. |
Mathematical data are wrapped with {\it OX messages}. |
Among the three types, |
|
{\it OX data messages} wrap mathematical data. |
We use standards of mathematical data formats such as OpenMath and MP |
We use standards of mathematical data formats such as OpenMath and MP |
and our own data format ({\it CMO --- Common Mathematical Object format}) |
as well as our own data format {\it CMO} |
as data expressions. |
({\it Common Mathematical Object format}). |
\item Servers, which provide services to other processes, are stack machines. |
\item Servers, which provide services to other processes, are stack machines. |
The stack machine is called the |
The stack machine is called the |
{\it OX stack machine}. |
{\it OX stack machine}. |
|
|
it should follow a grammar that can be parsed with other softwares. |
it should follow a grammar that can be parsed with other softwares. |
\end{enumerate} |
\end{enumerate} |
\item Any server may have a hybrid interface; |
\item Any server may have a hybrid interface; |
it may accept and execute its original command sequences. |
it may accept and execute not only stack machine commands, |
|
but also its original command sequences. |
For example, |
For example, |
if we send the following string to ox\_asir server |
if we send the following string to the {\tt ox\_asir} server |
{\footnotesize |
(OpenXM server based on Risa/Asir) \\ |
\begin{verbatim} |
\verb+ " fctr(x^100-y^100); " + \\ |
" fctr(x^10-y^10); " |
and call the stanck machine command \\ |
\end{verbatim} |
\verb+ SM_executeStringByLocalParser + \\ |
} |
then the server executes the asir command \\ |
and call the stanck machine command |
\verb+ fctr(x^100-y^100); + |
SM\_executeStringByLocalParser, |
(factorize $x^{100}-y^{100}$ over ${\bf Q}$) |
then the server executes the asir command |
and pushes the result onto the stack. |
\verb+ fctr(x^10-y^10); + |
|
(factorize $x^10-y^10$ over ${\bf Q}$) |
|
and push the result on the stack. |
|
\end{enumerate} |
\end{enumerate} |
We are implementing a package, OpenXM package. |
OpenXM package is implemented on above fundamental architecture. |
It is based on above fundamental architecture. |
|
For example, the following is a command sequence to ask $1+1$ from |
For example, the following is a command sequence to ask $1+1$ from |
the Asir client to the OX sm1 server: |
the Asir client to the {\tt ox\_sm1} server: |
\begin{verbatim} |
\begin{verbatim} |
P = sm1_start(); |
P = sm1_start(); |
ox_push_cmo(P,1); ox_push_cmo(P,1); |
ox_push_cmo(P,1); ox_push_cmo(P,1); |
ox_execute_string(P,"add"); ox_pop_cmo(P); |
ox_execute_string(P,"add"); ox_pop_cmo(P); |
\end{verbatim} |
\end{verbatim} |
The current system, OpenXM on TCP/IP, |
Here, {\tt ox\_sm1} is an OpenXM server based on Kan/sm1. |
uses client-server model and the TCP/IP is used for interprocess |
|
communications. |
The OpenXM package is implemented on the OpenXM for TCP/IP, |
|
which uses the client-server model. |
The OpenXM on MPI \cite{MPI} is currently running on Risa/Asir |
The OpenXM on MPI \cite{MPI} is currently running on Risa/Asir |
as we will see in Section \ref{section:homog}. |
as we will see in Section \ref{section:homog}. |
However, we focus only on the system based on TCP/IP in this paper. |
In this paper, we discuss only on systems for TCP/IP |
|
to concentrate on the core part of our design. |
|
|
|
|
|
|
|
|
|
|