Annotation of OpenXM/doc/calc2000p/design-outline.tex, Revision 1.1
1.1 ! noro 1: % $OpenXM$
! 2:
! 3: OpenXM (Open message eXchange protocol for Mathematics)
! 4: is a project aiming to integrate data, control and user interfaces
! 5: with the following fundamental architecture.
! 6: \begin{enumerate}
! 7: \item Communication is an exchange of {\it OX (OpenXM) messages},
! 8: which are classified into three types:
! 9: DATA, COMMAND, and SPECIAL.
! 10: {\it OX data messages} wrap mathematical data.
! 11: We use standards of mathematical data formats such as OpenMath and MP
! 12: as well as our own data format {\it CMO}
! 13: ({\it Common Mathematical Object format}).
! 14: \item Each server, which provides services to other processes, is a stack machine. The stack machine is called the {\it OX stack machine}.
! 15: Existing mathematical software tools are wrapped with this stack machine.
! 16: \item Any server may have a hybrid interface;
! 17: it may accept and execute not only stack machine commands,
! 18: but also its original command sequences.
! 19: For example,
! 20: if we send the following string to the {\tt ox\_asir} server
! 21: (OpenXM server based on Risa/Asir)\\
! 22: \verb+ "fctr(x^100-y^100);"+\\
! 23: and call the stack machine command\\
! 24: \verb+ SM_executeStringByLocalParser+\\
! 25: then the server executes the asir command
! 26: \verb+fctr(x^100-y^100);+
! 27: (factorize $x^{100}-y^{100}$ over ${\bf Q}$)
! 28: and pushes the result onto the stack.
! 29: \item Network transparent supports for controlling servers are provided.
! 30: For example OpenXM defines a robust reset procedure to restart computations
! 31: without any confusion in I/O buffers.
! 32: It is very useful for debugging programs running on distributed environment.
! 33: \end{enumerate}
! 34: OpenXM package is implemented on above fundamental architecture.
! 35: Currently the following servers are available in the OpenXM package.
! 36: See {\tt http://www.openxm.org/} for the details.
! 37:
! 38: \begin{description}
! 39: \item{\tt ox\_asir}
! 40: A server for Risa/Asir, a general-purpose computer algebra
! 41: system. It provides almost
! 42: all functionalities of Risa/Asir such as polynomial factorization,
! 43: Gr\"obner basis computation and primary ideal decomposition.
! 44: \item{\tt ox\_sm1}
! 45: A server for Kan/sm1, a system for computation in
! 46: the ring of differential operators including computation of Gr\"obner bases
! 47: and cohomology groups.
! 48: \item {\tt ox\_phc}
! 49: A server for PHC pack, a general-purpose solver for
! 50: polynomial systems by homotopy continuation.
! 51: \item {\tt ox\_tigers}
! 52: A server for TiGERS, a system to enumerate
! 53: all Gr\"obner bases of affine toric ideals.
! 54: It can be used to determine the state polytope
! 55: of a given affine toric ideal.
! 56: \item {\tt ox\_gnuplot}
! 57: A server for GNUPLOT, a famous plotting tool.
! 58: \item {\tt ox\_math}
! 59: A server for Mathematica.
! 60: \item {\tt OMproxy}
! 61: A server for translation between CMO and OpenMath/XML expressions.
! 62: It is written in Java.
! 63: This module provides Java classes OXmessage, CMO, and SM
! 64: for the OpenXM protocol, too.
! 65: \end{description}
! 66: In addition to these servers, Risa/Asir, Kan/sm1 and Mathematica
! 67: can act as clients.
! 68: For example, the following is a command sequence to ask $1+1$ from
! 69: the Asir client to the {\tt ox\_sm1} server:
! 70: \begin{verbatim}
! 71: P = sm1_start(); ox_push_cmo(P,1); ox_push_cmo(P,1);
! 72: ox_execute_string(P,"add"); ox_pop_cmo(P);
! 73: \end{verbatim}
! 74: The OpenXM package is implemented on the OpenXM for TCP/IP,
! 75: which uses the client-server model.
! 76: The OpenXM on MPI is currently tested on Risa/Asir,
! 77: where collective operations such as broadcast and reduction
! 78: are implemented to achieve a real speedup for massively parallel cases.
! 79: A C library interface is available for some servers.
! 80:
! 81: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
! 82: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
! 83: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
! 84: xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx xxxx
! 85:
! 86:
! 87:
! 88:
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>