[BACK]Return to dagb-noro.tex CVS log [TXT][DIR] Up to [local] / OpenXM / doc / Papers

Diff for /OpenXM/doc/Papers/Attic/dagb-noro.tex between version 1.1 and 1.10

version 1.1, 2001/10/03 08:32:58 version 1.10, 2001/10/11 09:44:56
Line 1 
Line 1 
 % $OpenXM$  % $OpenXM: OpenXM/doc/Papers/dagb-noro.tex,v 1.9 2001/10/11 08:43:08 noro Exp $
 \setlength{\parskip}{10pt}  \setlength{\parskip}{10pt}
   
 \begin{slide}{}  \begin{slide}{}
   \begin{center}
   \fbox{\large Part I : OpenXM and Risa/Asir --- overview and history}
   \end{center}
   \end{slide}
   
   %\begin{slide}{}
   %\fbox{Integration of mathematical software systems}
   %
   %\begin{itemize}
   %\item Data integration
   %
   %\begin{itemize}
   %\item OpenMath ({\tt http://www.openmath.org}) , MP [GRAY98]
   %\end{itemize}
   %
   %Standards for representing mathematical objects
   %
   %\item Control integration
   %
   %\begin{itemize}
   %\item MCP [WANG99], OMEI [LIAO01]
   %\end{itemize}
   %
   %Protocols for remote subroutine calls or session management
   %
   %\item Combination of two integrations
   %
   %\begin{itemize}
   %\item MathLink, OpenMath+MCP, MP+MCP
   %
   %and OpenXM ({\tt http://www.openxm.org})
   %\end{itemize}
   %
   %Both are necessary for practical implementation
   %
   %\end{itemize}
   %\end{slide}
   \begin{slide}{}
 \fbox{A computer algebra system Risa/Asir}  \fbox{A computer algebra system Risa/Asir}
   
 \begin{itemize}  ({\tt http://www.math.kobe-u.ac.jp/Asir/asir.html})
 \item Old style software for polynomial computation  
   
 \begin{itemize}  \begin{itemize}
 \item Domain specification is not necessary prior to computation  \item Software mainly for polynomial computation
 \item automatic conversion of inputs into internal canonical forms  
 \end{itemize}  
   
 \item User language with C-like syntax  \item User language with C-like syntax
   
 \begin{itemize}  C language without type declaration, with list processing
 \item No type declaration of variables  
 \item Builtin debugger for user programs  
 \end{itemize}  
   
   \item Builtin {\tt gdb}-like debugger for user programs
   
 \item Open source  \item Open source
   
 \begin{itemize}  Whole source tree is available via CVS
 \item Whole source tree is available via CVS  
 \end{itemize}  
   
   The latest version : see {\tt http://www.openxm.org}
   
 \item OpenXM interface  \item OpenXM interface
   
 \begin{itemize}  \begin{itemize}
 \item As a client : can call procedures on other OpenXM servers  \item OpenXM
 \item As a server : offers all its functionalities to OpenXM clients  
 \item As a library : OpenXM functionality is available via subroutine calls  An infrastructure for exchanging mathematical data
   \item Risa/Asir is a main client in OpenXM package.
   \item An OpenXM server {\tt ox\_asir}
   \item A library with OpenXM library interface {\tt libasir.a}
 \end{itemize}  \end{itemize}
 \end{itemize}  \end{itemize}
 \end{slide}  \end{slide}
   
 \begin{slide}{}  \begin{slide}{}
 \fbox{Major functionalities}  \fbox{Goal of developing Risa/Asir}
   
 \begin{itemize}  \begin{itemize}
 \item Fundamental polynomial arithmetics  \item Testing new algorithms
   
 \begin{itemize}  \begin{itemize}
 \item Internal form of a polynomial : recursive representaion or distributed  \item Development started in Fujitsu labs
 representation  
 \end{itemize}  
   
 \item Polynomial factorization  Polynomial factorization, Groebner basis related computation,
   cryptosystems , quantifier elimination , $\ldots$
 \begin{itemize}  
 \item Univariate factorization over the rationals, algebraic number fields and various finite fields  
   
 \item Multivariate factorization over the rationals  
 \end{itemize}  \end{itemize}
   
 \item Groebner basis computation  \item To be a general purpose, open system
   
 \begin{itemize}  Since 1997, we have been developing OpenXM package
 \item Buchberger and $F_4$ algorithm  containing various servers and clients
   
 \item Change of ordering/RUR of 0-dimensional ideals  Risa/Asir is a component of OpenXM
   
 \item Primary ideal decomposition  \item Environment for parallel and distributed computation
   
 \item Computation of $b$-function  
 \end{itemize}  \end{itemize}
   
 \item PARI library interface  
   
 \item Paralell distributed computation under OpenXM  
 \end{itemize}  
 \end{slide}  \end{slide}
   
   %\begin{slide}{}
   %\fbox{Capability for polynomial computation}
   %
   %\begin{itemize}
   %\item Fundamental polynomial arithmetics
   %
   %recursive representation and distributed representation
   %
   %\item Polynomial factorization
   %
   %\begin{itemize}
   %\item Univariate : over {\bf Q}, algebraic number fields and finite fields
   %
   %\item Multivariate : over {\bf Q}
   %\end{itemize}
   %
   %\item Groebner basis computation
   %
   %\begin{itemize}
   %\item Buchberger and $F_4$ [FAUG99] algorithm
   %
   %\item Change of ordering/RUR [ROUI96] of 0-dimensional ideals
   %
   %\item Primary ideal decomposition
   %
   %\item Computation of $b$-function (in Weyl Algebra)
   %\end{itemize}
   %\end{itemize}
   %\end{slide}
   
 \begin{slide}{}  \begin{slide}{}
 \fbox{History of development : ---1994}  \fbox{History of development : Polynomial factorization}
   
 \begin{itemize}  \begin{itemize}
 \item --1989  \item 1989
   
 Several subroutines were developed for a Prolog program.  Start of Risa/Asir with Boehm's conservative GC
   
 \item 1989--1992  ({\tt http://www.hpl.hp.com/personal/Hans\_Boehm/gc})
   
 \begin{itemize}  \item 1989-1992
 \item Reconfigured as Risa/Asir with the parser and Boehm's conservative GC.  
   
 \item Developed univariate and multivariate factorizers over the rationals.  Univariate and multivariate factorizers over {\bf Q}
 \end{itemize}  
   
 \item 1992--1994  \item 1992-1994
   
 \begin{itemize}  Univariate factorization over algebraic number fields
 \item Started implementation of Groebner basis computation  
   
 User language $\Rightarrow$ rewritten in C (by Murao) $\Rightarrow$  Intensive use of successive extension, non-squarefree norms
 trace lifting  
   
 \item Univariate factorization over algebraic number fields  \item 1996-1998
   
 Intensive use of successive extension, non-squarefree norms  Univariate factorization over large finite fields
 \end{itemize}  
 \end{itemize}  
   
   Motivated by a reseach project in Fujitsu on cryptography
   
   \item 2000-current
   
   Multivariate factorization over small finite fields (in progress)
   \end{itemize}
 \end{slide}  \end{slide}
   
 \begin{slide}{}  \begin{slide}{}
 \fbox{History of development : 1994-1996}  \fbox{History of development : Groebner basis}
   
 \begin{itemize}  \begin{itemize}
 \item Free distribution of binary versions  \item 1992-1994
   
 \item Primary ideal decomposition  User language $\Rightarrow$ C version; trace lifting [TRAV88]
   
 \begin{itemize}  \item 1994-1996
 \item Shimoyama-Yokoyama algorithm  
 \end{itemize}  
   
 \item Improvement of Buchberger algorithm  Trace lifting with homogenization
   
 \begin{itemize}  Omitting GB check by compatible prime [NOYO99]
 \item Trace lifting+homogenization  
   
 \item Omitting check by compatible prime  Modular change of ordering/RUR[ROUI96] [NOYO99]
   
 \item Modular change of ordering, Modular RUR  Primary ideal decomposition [SHYO96]
   
 \item Noro met Faug\`ere at RISC-Linz and he mentioned $F_4$.  \item 1996-1998
 \end{itemize}  
 \end{itemize}  
   
 \end{slide}  Efficient content reduction during NF computation [NORO97]
   Solved {\it McKay} system for the first time
   
 \begin{slide}{}  \item 1998-2000
 \fbox{History of development : 1996-1998}  
   
 \begin{itemize}  Test implementation of $F_4$ [FAUG99]
 \item Distributed compuatation  
   
 \begin{itemize}  \item 2000-current
 \item A prototype of OpenXM  
 \end{itemize}  
   
 \item Improvement of Buchberger algorithm  Buchberger algorithm in Weyl algebra
   
 \begin{itemize}  Efficient $b$-function computation[OAKU97] by a modular method
 \item Content reduction during nomal form computation  \end{itemize}
   \end{slide}
   
 \item Its parallelization by the above facility  \begin{slide}{}
   \fbox{Timing data --- Factorization}
   
 \item Application : computation of odd order replicable functions  \underline{Univariate; over {\bf Q}}
   
 Risa/Asir : it took 5days to compute a DRL basis ({\it McKay})  $N_i$ : a norm of a polynomial, $\deg(N_i) = i$
   \begin{center}
   \begin{tabular}{|c||c|c|c|c|} \hline
                   & $N_{105}$ & $N_{120}$ & $N_{168}$ & $N_{210}$ \\ \hline
   Asir    & 0.86  & 59 & 840 & hard \\ \hline
   Asir NormFactor & 1.6   & 2.2& 6.1& hard \\ \hline
   %Singular& hard?        & hard?& hard? & hard? \\ \hline
   CoCoA 4 & 0.2   & 7.1   & 16 & 0.5 \\ \hline\hline
   NTL-5.2 & 0.16  & 0.9   & 1.4 & 0.4 \\ \hline
   \end{tabular}
   \end{center}
   
 From Faug\`ere : computation of the DRL basis 53sec  \underline{Multivariate; over {\bf Q}}
 \end{itemize}  
   
   $W_{i,j,k} = Wang[i]\cdot Wang[j]\cdot Wang[k]$ in {\tt asir2000/lib/fctrdata}
   \begin{center}
   \begin{tabular}{|c||c|c|c|c|c|} \hline
           & $W_{1,2,3}$ & $W_{4,5,6}$ & $W_{7,8,9}$ & $W_{10,11,12}$ & $W_{13,14,15}$ \\ \hline
   Asir    & 0.2 & 4.7 & 14 & 17 & 0.4 \\ \hline
   %Singular& $>$15min     & ---   & ---& ---& ---\\ \hline
   CoCoA 4 & 5.2 & $>$15min        & $>$15min & $>$15min & 117 \\ \hline\hline
   Mathematica 4& 0.2      & 16    & 23 & 36 & 1.1 \\ \hline
   Maple 7& 0.5    & 18    & 967  & 48 & 1.3 \\ \hline
   \end{tabular}
   \end{center}
   
 \item Univariate factorization over large finite fields  %--- : not tested
   \end{slide}
   
 \begin{itemize}  \begin{slide}{}
 \item To implement Schoof-Elkies-Atkin algorithm  \fbox{Timing data --- DRL Groebner basis computation}
   
 Counting rational points on elliptic curves --- not free  \underline{Over $GF(32003)$}
   \begin{center}
   \begin{tabular}{|c||c|c|c|c|c|c|c|} \hline
                   & $C_7$ & $C_8$ & $K_7$ & $K_8$ & $K_9$ & $K_{10}$ & $K_{11}$ \\ \hline
   Asir $Buchberger$       & 31 & 1687  & 2.6  & 27 & 294  & 4309 & --- \\ \hline
   Singular & 8.7 & 278 & 0.6 & 5.6 & 54 & 508 & 5510 \\ \hline
   CoCoA 4 & 241 & $>$ 5h & 3.8 & 35 & 402 &7021  & --- \\ \hline\hline
   Asir $F_4$      & 5.3 & 129 & 0.5  & 4.5 & 31  & 273 & 2641 \\ \hline
   FGb(estimated)  & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \\ \hline
   \end{tabular}
   \end{center}
   
 But related functions are freely available  \underline{Over {\bf Q}}
 \end{itemize}  
 \end{itemize}  
   
   \begin{center}
   \begin{tabular}{|c||c|c|c|c|c|} \hline
                   & $C_7$ & $Homog. C_7$ & $K_7$ & $K_8$ & $McKay$ \\ \hline
   Asir $Buchberger$       & 389 & 594 & 29 & 299 & 34950 \\ \hline
   Singular & --- & 15247 & 7.6 & 79 & $>$ 20h \\ \hline
   CoCoA 4 & --- & 13227 & 57 & 709 & --- \\ \hline\hline
   Asir $F_4$      &  989 & 456 & 90 & 991 & 4939 \\ \hline
   FGb(estimated)  & 8 &11 & 0.6 & 5 & 10 \\ \hline
   \end{tabular}
   \end{center}
   --- : not tested
 \end{slide}  \end{slide}
   
 \begin{slide}{}  \begin{slide}{}
 \fbox{History of development : 1998-2000}  \fbox{Summary of performance}
   
 \begin{itemize}  \begin{itemize}
 \item OpenXM  \item Factorizer
   
 \begin{itemize}  \begin{itemize}
 \item OpenXM specification was written by Noro and Takayama  \item Multivariate : reasonable performance
   
 \item Functions for distributed computation were rewritten  \item Univariate : obsoleted by M. van Hoeij's new algorithm [HOEI00]
 \end{itemize}  \end{itemize}
   
 \item Risa/Asir on Windows  \item Groebner basis computation
   
 \begin{itemize}  \begin{itemize}
 \item Requirement from a company for which Noro worked  \item Buchberger
   
 Written in Visual C++  Singular shows nice perfomance
 \end{itemize}  
   
 \item Test implementation of $F_4$  Trace lifting is efficient in some cases over {\bf Q}
   
 \begin{itemize}  \item $F_4$
 \item Over $GF(p)$ : pretty good  
   
 \item Over the rationals : not so good except for {\it McKay}  FGb is much faster than Risa/Asir
   
   But we observe that {\it McKay} is computed efficiently by $F_4$
 \end{itemize}  \end{itemize}
 \end{itemize}  \end{itemize}
   
 \end{slide}  \end{slide}
   
 \begin{slide}{}  \begin{slide}{}
 \fbox{History of development : 2000-current}  \fbox{What is the merit to use Risa/Asir?}
 \begin{itemize}  
 \item The source code is freely available  
   
 \begin{itemize}  \begin{itemize}
 \item Noro moved from Fujitsu to Kobe university.  \item Total performance is not excellent, but not bad
   
 \item Fujitsu kindly permitted to make Risa/Asir open source.  \item A completely open system
 \end{itemize}  
   
 \item OpenXM  The whole source is available
   
 \begin{itemize}  \item Interface compliant to OpenXM RFC-100
 \item Revising the specification : OX-RFC100, 101, (102)  
   
 \item OX-RFC102 : ommunications between servers via MPI  The interface is fully documented
 \end{itemize}  
   
 \item Rings of differential operators  \item It serves as a test bench to try new ideas
   
 \begin{itemize}  Interactive debugger is very useful
 \item Buchberger algorithm  
   
 \item $b$-function computation  
   
 Minimal polynomial computation by modular method  
 \end{itemize}  \end{itemize}
 \end{itemize}  
   
 \end{slide}  \end{slide}
   
   
   %\begin{slide}{}
   %\fbox{CMO = Serialized representation of mathematical object}
   %
   %\begin{itemize}
   %\item primitive data
   %\begin{eqnarray*}
   %\mbox{Integer32} &:& ({\tt CMO\_INT32}, {\sl int32}\ \mbox{n}) \\
   %\mbox{Cstring}&:& ({\tt CMO\_STRING},{\sl int32}\,  \mbox{ n}, {\sl string}\, \mbox{s}) \\
   %\mbox{List} &:& ({\tt CMO\_LIST}, {\sl int32}\, len, ob[0], \ldots,ob[m-1])
   %\end{eqnarray*}
   %
   %\item numbers and polynomials
   %\begin{eqnarray*}
   %\mbox{ZZ}         &:& ({\tt CMO\_ZZ},{\sl int32}\, {\rm f}, {\sl byte}\, \mbox{a[1]}, \ldots
   %{\sl byte}\, \mbox{a[$|$f$|$]} ) \\
   %\mbox{Monomial32}&:& ({\tt CMO\_MONOMIAL32}, n, \mbox{e[1]}, \ldots, \mbox{e[n]}, \mbox{Coef}) \\
   %\mbox{Coef}&:& \mbox{ZZ} | \mbox{Integer32} \\
   %\mbox{Dpolynomial}&:& ({\tt CMO\_DISTRIBUTED\_POLYNOMIAL},\\
   %                  & & m, \mbox{DringDefinition}, \mbox{Monomial32}, \ldots)\\
   %\mbox{DringDefinition}
   %                  &:& \mbox{DMS of N variables} \\
   %                  & & ({\tt CMO\_RING\_BY\_NAME}, name) \\
   %                  & & ({\tt CMO\_DMS\_GENERIC}) \\
   %\end{eqnarray*}
   %\end{itemize}
   %\end{slide}
   %
   %\begin{slide}{}
   %\fbox{Stack based communication}
   %
   %\begin{itemize}
   %\item Data arrived a client
   %
   %Pushed to the stack
   %
   %\item Result
   %
   %Pushd to the stack
   %
   %Written to the stream when requested by a command
   %
   %\item The reason why we use the stack
   %
   %\begin{itemize}
   %\item Stack = I/O buffer for (possibly large) objects
   %
   %Multiple requests can be sent before their execution
   %
   %A server does not get stuck in sending results
   %\end{itemize}
   %\end{itemize}
   %\end{slide}
   
 \begin{slide}{}  \begin{slide}{}
 \fbox{Status of each component --- Factorizer}  \fbox{OpenXM (Open message eXchange protocol for Mathematics) }
   
 \begin{itemize}  \begin{itemize}
 \item 10 years ago  \item An environment for parallel distributed computation
   
 its performace was fine compared with existing software  Both for interactive, non-interactive environment
 like REDUCE, Maple, Mathematica.  
   
 \item 4 years ago  \item OpenXM RFC-100 = Client-server architecture
   
 Univarate factorization over algebraic number fields was  Client $\Leftarrow$ OX (OpenXM) message $\Rightarrow$ Server
 still fine because of some tricks on factoring polynomials  
 derived from norms.  
   
 \item Current  OX (OpenXM) message : command and data
   
 Multivariate : not so bad  \item Data
   
 Univariate : completely obsolete by M. van Hoeij's new algorithm  Encoding : CMO (Common Mathematical Object format)
   
   Serialized representation of mathematical object
   
   --- Main idea was borrowed from OpenMath
   
   ({\tt http://www.openmath.org})
   
   \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{Example of distributed computation --- $F_4$ vs. $Buchberger$ }
   
   \begin{verbatim}
   /* competitive Gbase computation over GF(M) */
   /* Cf. A.28 in SINGULAR Manual */
   /* Process list is specified as an option : grvsf4(...|proc=P) */
   def grvsf4(G,V,M,O)
   {
     P = getopt(proc);
     if ( type(P) == -1 ) return dp_f4_mod_main(G,V,M,O);
     P0 = P[0]; P1 = P[1]; P = [P0,P1];
     map(ox_reset,P);
     ox_cmo_rpc(P0,"dp_f4_mod_main",G,V,M,O);
     ox_cmo_rpc(P1,"dp_gr_mod_main",G,V,0,M,O);
     map(ox_push_cmd,P,262); /* 262 = OX_popCMO */
     F = ox_select(P); R = ox_get(F[0]);
     if ( F[0] == P0 ) { Win = "F4"; Lose = P1;}
     else { Win = "Buchberger"; Lose = P0; }
     ox_reset(Lose); /* simply resets the loser */
     return [Win,R];
   }
   \end{verbatim}
 \end{slide}  \end{slide}
   
 \begin{slide}{}  \begin{slide}{}
 \fbox{Status of each component --- Groebner basis related functions}  \fbox{References}
   
 \begin{itemize}  [BERN97] L. Bernardin, On square-free factorization of
 \item 8 years ago  multivariate polynomials over a finite field, Theoretical
   Computer Science 187 (1997), 105-116.
   
 The performace was poor with only the sugar strategy.  [FAUG99] J.C. Faug\`ere,
   A new efficient algorithm for computing Groebner bases  ($F_4$),
   Journal of Pure and Applied Algebra (139) 1-3 (1999), 61-88.
   
 \item 7 years ago  [GRAY98] S. Gray et al,
   Design and Implementation of MP, A Protocol for Efficient Exchange of
   Mathematical Expression,
   J. Symb. Comp. {\bf 25} (1998), 213-238.
   
 Rather fine with trace lifting but Faug\`ere's (old)Gb was more  [HOEI00] M. van Hoeij, Factoring polynomials and the knapsack problem,
 efficient.  to appear in Journal of Number Theory (2000).
   
 Homogenization+trace lifting made it possible to compute  [LIAO01] W. Liao et al,
 wider range of Groebner bases.  OMEI: An Open Mathematical Engine Interface,
   Proc. ASCM2001 (2001), 82-91.
   [NORO97] M. Noro, J. McKay,
   Computation of replicable functions on Risa/Asir.
   Proc. PASCO'97, ACM Press (1997), 130-138.
   \end{slide}
   
 \item 4 years ago  \begin{slide}{}
   
 Modular RUR was comparable with Rouillier's implementation.  [NOYO99] M. Noro, K. Yokoyama,
   A Modular Method to Compute the Rational Univariate
   Representation of Zero-Dimensional Ideals.
   J. Symb. Comp. {\bf 28}/1 (1999), 243-263.
   
 \item Current  [OAKU97] T. Oaku, Algorithms for $b$-functions, restrictions and algebraic
   local cohomology groups of $D$-modules.
   Advances in Applied Mathematics, 19 (1997), 61-105.
   
 FGb seems much more efficient than our $F_4$ implementation.  [ROUI96] F. Rouillier,
   R\'esolution des syst\`emes z\'ero-dimensionnels.
   Doctoral Thesis(1996), University of Rennes I, France.
   
 Singular's Groebner basis computation is also several times  [SHYO96] T. Shimoyama, K. Yokoyama, Localization and Primary Decomposition of Polynomial Ideals.  J. Symb. Comp. {\bf 22} (1996), 247-277.
 faster than Risa/Asir, because Singular seems to have efficient  
 monomial and polynomial representation.  
   
 \end{itemize}  [TRAV88] C. Traverso, \gr trace algorithms. Proc. ISSAC '88 (LNCS 358), 125-138.
   
   [WANG99] P. S. Wang,
   Design and Protocol for Internet Accessible Mathematical Computation,
   Proc. ISSAC '99 (1999), 291-298.
 \end{slide}  \end{slide}
   
 \begin{slide}{}  \begin{slide}{}
   \begin{center}
   \fbox{\large Part II : Algorithms and implementations in Risa/Asir}
   \end{center}
   \end{slide}
   
   \begin{slide}{}
 \fbox{Ground fields}  \fbox{Ground fields}
   
 \begin{itemize}  \begin{itemize}
Line 328  Berlekamp-Zassenhaus
Line 521  Berlekamp-Zassenhaus
   
 Trager's algorithm + some improvement  Trager's algorithm + some improvement
   
 \item Over finite fieds  \item Over finite fields
   
 DDF + Cantor-Zassenhaus; FFT for large finite fields  DDF + Cantor-Zassenhaus; FFT for large finite fields
 \end{itemize}  \end{itemize}
Line 340  DDF + Cantor-Zassenhaus; FFT for large finite fields
Line 533  DDF + Cantor-Zassenhaus; FFT for large finite fields
   
 Classical EZ algorithm  Classical EZ algorithm
   
 \item Over finite fieds  \item Over small finite fields
   
 Modified Bernardin square free, bivariate Hensel  Modified Bernardin's square free algorithm [BERN97],
   
   possibly Hensel lifting over extension fields
 \end{itemize}  \end{itemize}
   
 \end{itemize}  \end{itemize}
Line 365  Guess of a groebner basis by detecting zero reduction 
Line 560  Guess of a groebner basis by detecting zero reduction 
 Homogenization+guess+dehomogenization+check  Homogenization+guess+dehomogenization+check
 \end{itemize}  \end{itemize}
   
 \item Rings of differential operators  \item Weyl Algebra
   
 \begin{itemize}  \begin{itemize}
 \item Groebner basis of a left ideal  \item Groebner basis of a left ideal
   
 An efficient implementation of Leibniz rule  Key : an efficient implementation of Leibniz rule
 \end{itemize}  \end{itemize}
   
 \end{itemize}  \end{itemize}
Line 381  An efficient implementation of Leibniz rule
Line 576  An efficient implementation of Leibniz rule
 \begin{itemize}  \begin{itemize}
 \item Over small finite fields ($GF(p)$, $p < 2^{30}$)  \item Over small finite fields ($GF(p)$, $p < 2^{30}$)
 \begin{itemize}  \begin{itemize}
 \item More efficient than Buchberger algorithm  \item More efficient than our Buchberger algorithm implementation
   
 but less efficient than FGb by Faugere  but less efficient than FGb by Faug\`ere
 \end{itemize}  \end{itemize}
   
 \item Over the rationals  \item Over the rationals
Line 391  but less efficient than FGb by Faugere
Line 586  but less efficient than FGb by Faugere
 \begin{itemize}  \begin{itemize}
 \item Very naive implementation  \item Very naive implementation
   
   Modular computation + CRT + Checking the result at each degree
   
 \item Less efficient than Buchberger algorithm  \item Less efficient than Buchberger algorithm
   
 except for one example  except for one example (={\it McKay})
 \end{itemize}  \end{itemize}
   
 \end{itemize}  \end{itemize}
 \end{slide}  \end{slide}
   
 \begin{slide}{}  \begin{slide}{}
 \fbox{Change of ordering for zero-dimimensional ideals}  \fbox{Change of ordering for zero-dimensional ideals}
   
 \begin{itemize}  \begin{itemize}
 \item Any ordering to lex ordering  \item Any ordering to lex ordering
Line 448  An ideal whose radical is prime
Line 645  An ideal whose radical is prime
 \begin{slide}{}  \begin{slide}{}
 \fbox{Computation of $b$-function}  \fbox{Computation of $b$-function}
   
 $D$ : the ring of differential operators  $D=K\langle x,\partial \rangle$ : Weyl algebra
   
 $b(s)$ : a polynomial of the smallest degree s.t.  $b(s)$ : a polynomial of the smallest degree s.t.
 there exists $P(s) \in D[s]$, $P(s)f^{s+1}=b(s)f^s$  there exists $P(s) \in D[s]$, $P(s)f^{s+1}=b(s)f^s$
Line 494  evaluated by {\tt eval()}
Line 691  evaluated by {\tt eval()}
   
 The knapsack factorization is available via {\tt pari(factor,{\it poly})}  The knapsack factorization is available via {\tt pari(factor,{\it poly})}
 \end{itemize}  \end{itemize}
   
   
 \end{itemize}  \end{itemize}
 \end{slide}  \end{slide}
   
 \begin{slide}{}  \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  
 \end{itemize}  
 \end{slide}  
   
 \begin{slide}{}  
 \fbox{OpenXM server interface in Risa/Asir}  \fbox{OpenXM server interface in Risa/Asir}
   
 \begin{itemize}  \begin{itemize}
Line 544  The launcher launches a server on the same host.
Line 709  The launcher launches a server on the same host.
   
 \item Server  \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}  \end{itemize}
   
 \item Subroutine call  \item Subroutine call
   
 Risa/Asir subroutine library provides interfaces corresponding to  In Risa/Asir subroutine library {\tt libasir.a}:
 pushing and popping data and executing stack commands.  
   OpenXM functionalities are implemented as function calls
   
   pushing and popping data, executing stack commands etc.
 \end{itemize}  \end{itemize}
 \end{slide}  \end{slide}
   
Line 565  Pushing and popping data, sending commands etc.
Line 735  Pushing and popping data, sending commands etc.
   
 \item Convenient functions  \item Convenient functions
   
 Launching servers, calling remote functions,  Launching servers,
  interrupting remote executions etc.  
   
 \item Parallel distributed computation is easy  Calling remote functions,
   
 Simple parallelization is practically important  Resetting remote executions etc.
   
 Competitive computation is easily realized  \item Parallel distributed computation
 \end{itemize}  
 \end{slide}  
   
   Simple parallelization is practically important
   
 \begin{slide}{}  Competitive computation is easily realized ($\Rightarrow$ demo)
 \fbox{CMO = Serialized representation of mathematical object}  
   
 \begin{itemize}  
 \item primitive data  
 \begin{eqnarray*}  
 \mbox{Integer32} &:& ({\tt CMO\_INT32}, {\sl int32}\ \mbox{n}) \\  
 \mbox{Cstring}&:& ({\tt CMO\_STRING},{\sl int32}\,  \mbox{ n}, {\sl string}\, \mbox{s}) \\  
 \mbox{List} &:& ({\tt CMO\_LIST}, {\sl int32}\, len, ob[0], \ldots,ob[m-1])  
 \end{eqnarray*}  
   
 \item numbers and polynomials  
 \begin{eqnarray*}  
 \mbox{ZZ}         &:& ({\tt CMO\_ZZ},{\sl int32}\, {\rm f}, {\sl byte}\, \mbox{a[1]}, \ldots  
 {\sl byte}\, \mbox{a[$|$f$|$]} ) \\  
 \mbox{Monomial32}&:& ({\tt CMO\_MONOMIAL32}, n, \mbox{e[1]}, \ldots, \mbox{e[n]}, \mbox{Coef}) \\  
 \mbox{Coef}&:& \mbox{ZZ} | \mbox{Integer32} \\  
 \mbox{Dpolynomial}&:& ({\tt CMO\_DISTRIBUTED\_POLYNOMIAL},\\  
                   & & m, \mbox{DringDefinition}, \mbox{Monomial32}, \ldots)\\  
 \mbox{DringDefinition}  
                  &:& \mbox{DMS of N variables} \\  
                  & & ({\tt CMO\_RING\_BY\_NAME}, name) \\  
                  & & ({\tt CMO\_DMS\_GENERIC}) \\  
 \end{eqnarray*}  
 \end{itemize}  \end{itemize}
 \end{slide}  \end{slide}
   
 \begin{slide}{}  \begin{slide}{}
 \fbox{Stack based communication}  
   
 \begin{itemize}  
 \item Data arrived a client  
   
 Pushed to the stack  
   
 \item Result  
   
 Pushd to the stack  
   
 Written to the stream when requested by a command  
   
 \item The reason why we use the stack  
   
 \begin{itemize}  
 \item Stack = I/O buffer for (possibly large) objects  
   
 Multiple requests can be sent before their exection  
   
 A server does not get stuck in sending results  
 \end{itemize}  
 \end{itemize}  
 \end{slide}  
   
 \begin{slide}{}  
 \fbox{Executing functions on a server (I) --- {\tt SM\_executeFunction}}  \fbox{Executing functions on a server (I) --- {\tt SM\_executeFunction}}
   
 \begin{enumerate}  \begin{enumerate}
 \item (C $\rightarrow$ S) Arguments are sent in binary encoded form.  \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) The number of arguments is sent as {\sl Integer32}.
 \item (C $\rightarrow$ S) A function name is sent as {\sl Cstring}.  \item (C $\rightarrow$ S) A function name is sent as {\sl Cstring}.
 \item (C $\rightarrow$ S) A command {\tt SM\_executeFunction} is sent.  \item (C $\rightarrow$ S) A command {\tt SM\_executeFunction} is sent.
 \item The result is pushed to the stack.  \item The result is pushed to the stack.
Line 651  conversion are necessary.
Line 770  conversion are necessary.
 \fbox{Executing functions on a server (II) --- {\tt SM\_executeString}}  \fbox{Executing functions on a server (II) --- {\tt SM\_executeString}}
   
 \begin{enumerate}  \begin{enumerate}
 \item (C $\rightarrow$ S) A character string represeting a request in a server's  \item (C $\rightarrow$ S) A character string representing a request in a server's
 user language is sent as {\sl Cstring}.  user language is sent as {\sl Cstring}.
 \item (C $\rightarrow$ S) A command {\tt SM\_executeString} is sent.  \item (C $\rightarrow$ S) A command {\tt SM\_executeString} is sent.
 \item The result is pushed to the stack.  \item The result is pushed to the stack.
Line 663  $\Rightarrow$ Communication may be slow, but the clien
Line 782  $\Rightarrow$ Communication may be slow, but the clien
 enough to read the result.  enough to read the result.
 \end{slide}  \end{slide}
   
 \begin{slide}{}  %\begin{slide}{}
 \fbox{Example of distributed computation --- $F_4$ vs. $Buchberger$ }  %\fbox{History of development : ---1994}
   %
 \begin{verbatim}  %\begin{itemize}
 /* competitive Gbase computation over GF(M) */  %\item --1989
 /* Cf. A.28 in SINGULAR Manual */  %
 /* Process list is specified as an option : grvsf4(...|proc=P) */  %Several subroutines were developed for a Prolog program.
 def grvsf4(G,V,M,O)  %
 {  %\item 1989--1992
   P = getopt(proc);  %
   if ( type(P) == -1 ) return dp_f4_mod_main(G,V,M,O);  %\begin{itemize}
   P0 = P[0]; P1 = P[1]; P = [P0,P1];  %\item Reconfigured as Risa/Asir with a parser and Boehm's conservative GC
   map(ox_reset,P);  %
   ox_cmo_rpc(P0,"dp_f4_mod_main",G,V,M,O);  %\item Developed univariate and multivariate factorizers over the rationals.
   ox_cmo_rpc(P1,"dp_gr_mod_main",G,V,0,M,O);  %\end{itemize}
   map(ox_push_cmd,P,262); /* 262 = OX_popCMO */  %
   F = ox_select(P); R = ox_get(F[0]);  %\item 1992--1994
   if ( F[0] == P0 ) { Win = "F4"; Lose = P1;}  %
   else { Win = "Buchberger"; Lose = P0; }  %\begin{itemize}
   ox_reset(Lose); /* simply resets the loser */  %\item Started implementation of Buchberger algorithm
   return [Win,R];  %
 }  %Written in user language $\Rightarrow$ rewritten in C (by Murao)
 \end{verbatim}  %
   %$\Rightarrow$ trace lifting [TRAV88]
 \end{slide}  %
   %\item Univariate factorization over algebraic number fields
 \begin{slide}{}  %
 \end{slide}  %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 [SHYO96]
   %\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 [NOYO99]
   %\end{itemize}
   %\end{itemize}
   %
   %\end{slide}
   %
   %\begin{slide}{}
   %\fbox{History of development : 1996-1998}
   %
   %\begin{itemize}
   %\item Distributed computation
   %
   %\begin{itemize}
   %\item A prototype of OpenXM
   %\end{itemize}
   %
   %\item Improvement of Buchberger algorithm
   %
   %\begin{itemize}
   %\item Content reduction during normal form computation
   %
   %\item Its parallelization by the above facility
   %
   %\item Computation of odd order replicable functions [NORO97]
   %
   %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
   %
   %\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 [FAUG99]
   %
   %\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
   %\end{itemize}
   %
   %\item 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 [TAKA90]
   %
   %\item $b$-function computation [OAKU97]
   %
   %Minimal polynomial computation by modular method
   %\end{itemize}
   %\end{itemize}
   %
   %\end{slide}
 \begin{slide}{}  \begin{slide}{}
 \end{slide}  \end{slide}
   

Legend:
Removed from v.1.1  
changed lines
  Added in v.1.10

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>