=================================================================== RCS file: /home/cvs/OpenXM/doc/Papers/Attic/dagb-noro.tex,v retrieving revision 1.4 retrieving revision 1.5 diff -u -p -r1.4 -r1.5 --- OpenXM/doc/Papers/Attic/dagb-noro.tex 2001/10/04 08:22:20 1.4 +++ OpenXM/doc/Papers/Attic/dagb-noro.tex 2001/10/09 01:44:21 1.5 @@ -1,259 +1,219 @@ -% $OpenXM: OpenXM/doc/Papers/dagb-noro.tex,v 1.3 2001/10/04 08:16:26 noro Exp $ +% $OpenXM: OpenXM/doc/Papers/dagb-noro.tex,v 1.4 2001/10/04 08:22:20 noro Exp $ \setlength{\parskip}{10pt} \begin{slide}{} \begin{center} -\fbox{\large Part I : Overview and history of Risa/Asir} +\fbox{\large Part I : OpenXM and Risa/Asir --- overview and history} \end{center} \end{slide} \begin{slide}{} -\fbox{A computer algebra system Risa/Asir} +\fbox{OpenXM (Open message eXchange protocol for Mathematics) } \begin{itemize} -\item Old style software for polynomial computation +\item An environment for parallel distributed computation -\begin{itemize} -\item Domain specification is not necessary prior to computation -\item automatic conversion of inputs into internal canonical forms -\end{itemize} +Both for interactive, non-interactive environment -\item User language with C-like syntax +\item Client-server architecture -\begin{itemize} -\item No type declaration of variables -\item Builtin debugger for user programs -\end{itemize} +Client $\Leftarrow$ OX (OpenXM) message $\Rightarrow$ Server -\item Open source +OX (OpenXM) message : command and data -\begin{itemize} -\item Whole source tree is available via CVS -\end{itemize} +\item Data -\item OpenXM ((Open message eXchange protocol for Mathematics) interface +Encoding : CMO (Common Mathematical Object format) -\begin{itemize} -\item As a client : can call procedures on other OpenXM servers -\item As a server : offers all its functionalities to OpenXM clients -\item As a library : OpenXM functionality is available via subroutine calls +Serialized representation of mathematical object + +--- Main idea was borrowed from OpenMath [OpenMath] +\item Command + +stack machine command --- server is a stackmachine + ++ server's own command sequences --- hybrid server \end{itemize} -\end{itemize} \end{slide} + \begin{slide}{} -\fbox{Major functionalities} +\fbox{OpenXM and OpenMath} \begin{itemize} -\item Fundamental polynomial arithmetics +\item OpenMath \begin{itemize} -\item Internal form of a polynomial : recursive representaion or distributed -representation -\end{itemize} +\item A standard for representing mathematical objects -\item Polynomial factorization +\item CD (Content Dictionary) : assigns semantics to symbols -\begin{itemize} -\item Univariate factorization over the rationals, algebraic number fields and various finite fields +\item Phrasebook : convesion between internal and OpenMath objects. -\item Multivariate factorization over the rationals +\item Encoding : format for actual data exchange \end{itemize} -\item Groebner basis computation +\item OpenXM \begin{itemize} -\item Buchberger and $F_4$ [Faug\'ere] algorithm +\item Specification for encoding and exchanging messages -\item Change of ordering/RUR [Rouillier] of 0-dimensional ideals - -\item Primary ideal decomposition - -\item Computation of $b$-function +\item It also specifies behavior of servers and session management \end{itemize} -\item PARI [PARI] library interface - -\item Paralell distributed computation under OpenXM \end{itemize} \end{slide} - \begin{slide}{} -\fbox{History of development : ---1994} +\fbox{A computer algebra system Risa/Asir} \begin{itemize} -\item --1989 +\item Old style software for polynomial computation -Several subroutines were developed for a Prolog program. +No domain specification, automatic expansion -\item 1989--1992 +\item User language with C-like syntax -\begin{itemize} -\item Reconfigured as Risa/Asir with a parser and Boehm's conservative GC [Boehm] +C language without type declaration, with list processing -\item Developed univariate and multivariate factorizers over the rationals. -\end{itemize} +\item Builtin {\tt gdb}-like debugger for user programs -\item 1992--1994 +\item Open source -\begin{itemize} -\item Started implementation of Buchberger algorithm +Whole source tree is available via CVS -Written in user language $\Rightarrow$ rewritten in C (by Murao) +\item OpenXM interface -$\Rightarrow$ trace lifting [Traverso] - -\item Univariate factorization over algebraic number fields - -Intensive use of successive extension, non-squarefree norms +\begin{itemize} +\item Risa/Asir is a main client in OpenXM package. +\item An OpenXM server {\tt ox\_asir} +\item An library with OpemXM library inteface {\tt libasir.a} \end{itemize} \end{itemize} - \end{slide} \begin{slide}{} -\fbox{History of development : 1994-1996} +\fbox{Aim of developing Risa/Asir} \begin{itemize} -\item Free distribution of binary versions from Fujitsu +\item Efficient implementation in specific area -\item Primary ideal decomposition +Polynomial factorization, Groebner basis related computation -\begin{itemize} -\item Shimoyama-Yokoyama algorithm [SY] -\end{itemize} +$\Rightarrow$ serves as an OpenXM server/library -\item Improvement of Buchberger algorithm +\item Front-end of a general purpose math software -\begin{itemize} -\item Trace lifting+homogenization +Risa/Asir contains PARI library [PARI] from the very beginning -\item Omitting check by compatible prime +It also acts as a main client of OpenXM package -\item Modular change of ordering, Modular RUR - -These are joint works with Yokoyama [NY] \end{itemize} -\end{itemize} - \end{slide} \begin{slide}{} -\fbox{History of development : 1996-1998} +\fbox{Capability for polynomial computation} \begin{itemize} -\item Distributed compuatation +\item Fundamental polynomial arithmetics -\begin{itemize} -\item A prototype of OpenXM -\end{itemize} +recursive representaion and distributed representation -\item Improvement of Buchberger algorithm +\item Polynomial factorization \begin{itemize} -\item Content reduction during nomal form computation +\item Univariate : over {\bf Q}, algebraic number fields and finite fields -\item Its parallelization by the above facility - -\item Computation of odd order replicable functions [Noro] - -Risa/Asir : it took 5days to compute a DRL basis ({\it McKay}) - -Faug\`ere FGb : computation of the DRL basis 53sec +\item Multivariate : over {\bf Q} \end{itemize} +\item Groebner basis computation -\item Univariate factorization over large finite fields - \begin{itemize} -\item To implement Schoof-Elkies-Atkin algorithm +\item Buchberger and $F_4$ [Faug\'ere] algorithm -Counting rational points on elliptic curves +\item Change of ordering/RUR [Rouillier] of 0-dimensional ideals ---- not free But related functions are freely available +\item Primary ideal decomposition + +\item Computation of $b$-function (in Weyl Algebra) \end{itemize} \end{itemize} - \end{slide} \begin{slide}{} -\fbox{History of development : 1998-2000} -\begin{itemize} -\item OpenXM +\fbox{History of development : Polynomial factorization} \begin{itemize} -\item OpenXM specification was written by Noro and Takayama +\item 1989 -Borrowed idea on encoding, phrase book from OpenMath [OpenMath] +Start of Risa/Asir with Boehm's conservative GC [Boehm] -\item Functions for distributed computation were rewritten -\end{itemize} +\item 1989-1992 -\item Risa/Asir on Windows +Univariate and multivariate factorizers over {\bf Q} -\begin{itemize} -\item Requirement from a company for which Noro worked +\item 1992-1994 -Written in Visual C++ -\end{itemize} +Univariate factorization over algebraic number fields -\item Test implementation of $F_4$ +Intensive use of successive extension, non-squarefree norms -\begin{itemize} -\item Implemented according to [Faug\`ere] +\item 1996-1998 -\item Over $GF(p)$ : pretty good +Univariate factorization over large finite fields -\item Over the rationals : not so good except for {\it McKay} +\item 2000-current + +Multivariate factorization over small finite fields (in progress) \end{itemize} -\end{itemize} \end{slide} \begin{slide}{} -\fbox{History of development : 2000-current} -\begin{itemize} -\item The source code is freely available +\fbox{History of development : Groebner basis} \begin{itemize} -\item Noro moved from Fujitsu to Kobe university +\item 1992-1994 -Started Kobe branch [Risa/Asir] -\end{itemize} +User language $\Rightarrow$ C version; trace lifting [Traverso] -\item OpenXM [OpenXM] +\item 1994-1996 -\begin{itemize} -\item Revising the specification : OX-RFC100, 101, (102) +Trace lifting with homogenization -\item OX-RFC102 : communications between servers via MPI -\end{itemize} +Omitting GB check by compatible prime [NY] -\item Weyl algebra +Modular change of ordering/RUR [NY] -\begin{itemize} -\item Buchberger algorithm [Takayama] +Primary ideal decompositon [SY] -\item $b$-function computation [Oaku] +\item 1996-1998 -Minimal polynomial computation by modular method -\end{itemize} -\end{itemize} +Effifcient content reduction during NF computation and its parallelization +[Noro] (Solved {\it McKay} system for the first time) +\item 1998-2000 + +Test implementation of $F_4$ + +\item 2000-current + +Buchberger algorithm in Weyl algebra [Takayama] + +Efficient $b$-function computation by a modular method +\end{itemize} \end{slide} \begin{slide}{} -\fbox{Status of each component --- Factorizer} +\fbox{Performance --- Factorizer} \begin{itemize} -\item 10 years ago - -its performace was fine compared with existing software -like REDUCE, Mathematica. - \item 4 years ago -Univarate factorization over algebraic number fields was -still fine because of some tricks on factoring polynomials +Over {\bf Q} : fine compared with existing software +like REDUCE, Mathematica, maple + +Univarate, over algebraic number fields : +fine because of some tricks for polynomials derived from norms. \item Current @@ -267,96 +227,57 @@ Univariate : completely obsolete by M. van Hoeij's new \end{slide} \begin{slide}{} -\fbox{Status of each component --- Groebner basis related functions} +\fbox{Performance --- Groebner basis related computation} \begin{itemize} -\item 8 years ago - -The performace was poor with only the sugar strategy. - \item 7 years ago -Rather fine with trace lifting but Faug\`ere's (old)Gb was more -efficient. +Trace lifting : rather fine but coefficient swells often occur -Homogenization+trace lifting made it possible to compute -wider range of Groebner bases. +Homogenization+trace lifting : robust and fast in the above cases \item 4 years ago Modular RUR was comparable with Rouillier's implementation. +DRL basis of {\it McKay}: + +5 days on Risa/Asir, 53 seconds on Faugere FGb \item Current -FGb seems much more efficient than our $F_4$ implementation. +$F_4$ in FGb : much more efficient than $F_4$ in Risa/Asir -Singular [Singular] is also several times -faster than Risa/Asir, because Singular seems to have efficient -monomial and polynomial representation. +Buchberger in Singular [Singular] : faster than Risa/Asir -\end{itemize} -\end{slide} +$\Leftarrow$ efficient monomial and polynomial representation -\begin{slide}{} -\fbox{OpenXM} - -\begin{itemize} -\item An environment for parallel distributed computation - -Both for interactive, non-interactive environment - -\item Message passing - -OX (OpenXM) message : command and data - -\item Hybrid command execution - -\begin{itemize} -\item Stack machine command - -push, pop, function execution, $\ldots$ - -\item accepts its own command sequences - -{\tt execute\_string} --- easy to use \end{itemize} - -\item Data is represented as CMO - -CMO (Common Mathematical Object format) - ---- Serialized representation of mathematical object - -{\sl Integer32}, {\sl Cstring}, {\sl List}, {\sl ZZ}, $\ldots$ -\end{itemize} \end{slide} - \begin{slide}{} -\fbox{OpenXM and OpenMath} +\fbox{How do we proceed?} \begin{itemize} -\item OpenMath +\item Developing new OpenXM servers -\begin{itemize} -\item A standard for representing mathematical objects +{ox\_NTL} for univariate factorization, -\item CD (Content Dictionary) : assigns semantics to symbols +{ox\_FGb} for Groebner basis computation (is it possible?) etc. -\item Phrasebook : convesion between internal and OpenMath objects. +$\Rightarrow$ Risa/Asir can be a front-end of efficient servers -\item Encoding : format for actual data exchange -\end{itemize} +\item Trying to improve our implementation -\item OpenXM +Computation of $b$-function : still faster than any other system +(Kan/sm1, Macaulay2) but not satisfactory -\begin{itemize} -\item Specification for encoding and exchanging messages - -\item It also specifies behavior of servers and session management +$\Rightarrow$ Groebner basis computation in Weyl +algebra should be improved \end{itemize} -\end{itemize} +\begin{center} +\underline{In both cases, OpenXM interface is important} +\end{center} \end{slide} \begin{slide}{} @@ -374,14 +295,19 @@ The launcher launches a server on the same host. \item Server -A server reads from the descriptor 3, write to the descriptor 4. +Reads from the descriptor 3 +Writes to the descriptor 4 + \end{itemize} \item Subroutine call -Risa/Asir subroutine library provides interfaces corresponding to -pushing and popping data and executing stack commands. +In Risa/Asir subroutine library {\tt libasir.a}: + +OpenXM functionalities are implemented as functon calls + +pushing and popping data, executing stack commands etc. \end{itemize} \end{slide} @@ -395,14 +321,17 @@ Pushing and popping data, sending commands etc. \item Convenient functions -Launching servers, calling remote functions, - interrupting remote executions etc. +Launching servers, -\item Parallel distributed computation is easy +Calling remote functions, +Resetting remote executions etc. + +\item Parallel distributed computation + Simple parallelization is practically important -Competitive computation is easily realized +Competitive computation is easily realized ($\Rightarrow$ demo) \end{itemize} \end{slide} @@ -461,39 +390,6 @@ Competitive computation is easily realized %\end{slide} \begin{slide}{} -\fbox{Executing functions on a server (I) --- {\tt SM\_executeFunction}} - -\begin{enumerate} -\item (C $\rightarrow$ S) Arguments are sent in binary encoded form. -\item (C $\rightarrow$ S) The number of aruments is sent as {\sl Integer32}. -\item (C $\rightarrow$ S) A function name is sent as {\sl Cstring}. -\item (C $\rightarrow$ S) A command {\tt SM\_executeFunction} is sent. -\item The result is pushed to the stack. -\item (C $\rightarrow$ S) A command {\tt SM\_popCMO} is sent. -\item (S $\rightarrow$ C) The result is sent in binary encoded form. -\end{enumerate} - -$\Rightarrow$ Communication is fast, but functions for binary data -conversion are necessary. -\end{slide} - -\begin{slide}{} -\fbox{Executing functions on a server (II) --- {\tt SM\_executeString}} - -\begin{enumerate} -\item (C $\rightarrow$ S) A character string represeting a request in a server's -user language is sent as {\sl Cstring}. -\item (C $\rightarrow$ S) A command {\tt SM\_executeString} is sent. -\item The result is pushed to the stack. -\item (C $\rightarrow$ S) A command {\tt SM\_popString} is sent. -\item (S $\rightarrow$ C) The result is sent in readable form. -\end{enumerate} - -$\Rightarrow$ Communication may be slow, but the client parser may be -enough to read the result. -\end{slide} - -\begin{slide}{} \fbox{Example of distributed computation --- $F_4$ vs. $Buchberger$ } \begin{verbatim} @@ -792,6 +688,201 @@ The knapsack factorization is available via {\tt pari( \end{itemize} \end{slide} +\begin{slide}{} +\fbox{Executing functions on a server (I) --- {\tt SM\_executeFunction}} + +\begin{enumerate} +\item (C $\rightarrow$ S) Arguments are sent in binary encoded form. +\item (C $\rightarrow$ S) The number of aruments is sent as {\sl Integer32}. +\item (C $\rightarrow$ S) A function name is sent as {\sl Cstring}. +\item (C $\rightarrow$ S) A command {\tt SM\_executeFunction} is sent. +\item The result is pushed to the stack. +\item (C $\rightarrow$ S) A command {\tt SM\_popCMO} is sent. +\item (S $\rightarrow$ C) The result is sent in binary encoded form. +\end{enumerate} + +$\Rightarrow$ Communication is fast, but functions for binary data +conversion are necessary. +\end{slide} + +\begin{slide}{} +\fbox{Executing functions on a server (II) --- {\tt SM\_executeString}} + +\begin{enumerate} +\item (C $\rightarrow$ S) A character string represeting a request in a server's +user language is sent as {\sl Cstring}. +\item (C $\rightarrow$ S) A command {\tt SM\_executeString} is sent. +\item The result is pushed to the stack. +\item (C $\rightarrow$ S) A command {\tt SM\_popString} is sent. +\item (S $\rightarrow$ C) The result is sent in readable form. +\end{enumerate} + +$\Rightarrow$ Communication may be slow, but the client parser may be +enough to read the result. +\end{slide} + +%\begin{slide}{} +%\fbox{History of development : ---1994} +% +%\begin{itemize} +%\item --1989 +% +%Several subroutines were developed for a Prolog program. +% +%\item 1989--1992 +% +%\begin{itemize} +%\item Reconfigured as Risa/Asir with a parser and Boehm's conservative GC [Boehm] +% +%\item Developed univariate and multivariate factorizers over the rationals. +%\end{itemize} +% +%\item 1992--1994 +% +%\begin{itemize} +%\item Started implementation of Buchberger algorithm +% +%Written in user language $\Rightarrow$ rewritten in C (by Murao) +% +%$\Rightarrow$ trace lifting [Traverso] +% +%\item Univariate factorization over algebraic number fields +% +%Intensive use of successive extension, non-squarefree norms +%\end{itemize} +%\end{itemize} +% +%\end{slide} +% +%\begin{slide}{} +%\fbox{History of development : 1994-1996} +% +%\begin{itemize} +%\item Free distribution of binary versions from Fujitsu +% +%\item Primary ideal decomposition +% +%\begin{itemize} +%\item Shimoyama-Yokoyama algorithm [SY] +%\end{itemize} +% +%\item Improvement of Buchberger algorithm +% +%\begin{itemize} +%\item Trace lifting+homogenization +% +%\item Omitting check by compatible prime +% +%\item Modular change of ordering, Modular RUR +% +%These are joint works with Yokoyama [NY] +%\end{itemize} +%\end{itemize} +% +%\end{slide} +% +%\begin{slide}{} +%\fbox{History of development : 1996-1998} +% +%\begin{itemize} +%\item Distributed compuatation +% +%\begin{itemize} +%\item A prototype of OpenXM +%\end{itemize} +% +%\item Improvement of Buchberger algorithm +% +%\begin{itemize} +%\item Content reduction during nomal form computation +% +%\item Its parallelization by the above facility +% +%\item Computation of odd order replicable functions [Noro] +% +%Risa/Asir : it took 5days to compute a DRL basis ({\it McKay}) +% +%Faug\`ere FGb : computation of the DRL basis 53sec +%\end{itemize} +% +% +%\item Univariate factorization over large finite fields +% +%\begin{itemize} +%\item To implement Schoof-Elkies-Atkin algorithm +% +%Counting rational points on elliptic curves +% +%--- not free But related functions are freely available +%\end{itemize} +%\end{itemize} +% +%\end{slide} +% +%\begin{slide}{} +%\fbox{History of development : 1998-2000} +%\begin{itemize} +%\item OpenXM +% +%\begin{itemize} +%\item OpenXM specification was written by Noro and Takayama +% +%Borrowed idea on encoding, phrase book from OpenMath [OpenMath] +% +%\item Functions for distributed computation were rewritten +%\end{itemize} +% +%\item Risa/Asir on Windows +% +%\begin{itemize} +%\item Requirement from a company for which Noro worked +% +%Written in Visual C++ +%\end{itemize} +% +%\item Test implementation of $F_4$ +% +%\begin{itemize} +%\item Implemented according to [Faug\`ere] +% +%\item Over $GF(p)$ : pretty good +% +%\item Over the rationals : not so good except for {\it McKay} +%\end{itemize} +%\end{itemize} +%\end{slide} +% +%\begin{slide}{} +%\fbox{History of development : 2000-current} +%\begin{itemize} +%\item The source code is freely available +% +%\begin{itemize} +%\item Noro moved from Fujitsu to Kobe university +% +%Started Kobe branch [Risa/Asir] +%\end{itemize} +% +%\item OpenXM [OpenXM] +% +%\begin{itemize} +%\item Revising the specification : OX-RFC100, 101, (102) +% +%\item OX-RFC102 : communications between servers via MPI +%\end{itemize} +% +%\item Weyl algebra +% +%\begin{itemize} +%\item Buchberger algorithm [Takayama] +% +%\item $b$-function computation [Oaku] +% +%Minimal polynomial computation by modular method +%\end{itemize} +%\end{itemize} +% +%\end{slide} \begin{slide}{} \end{slide}