version 1.1, 2001/10/03 08:32:58 |
version 1.10, 2001/10/11 09:44:56 |
|
|
% $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} |
|
|