Annotation of OpenXM/doc/Papers/dag-noro.tex, Revision 1.3
1.3 ! noro 1: % $OpenXM: OpenXM/doc/Papers/dag-noro.tex,v 1.2 2001/10/10 06:32:10 noro Exp $
! 2: \documentclass{slides}
! 3: \usepackage{color}
! 4: \usepackage{rgb}
! 5: \usepackage{graphicx}
! 6: \usepackage{epsfig}
1.1 noro 7: \newcommand{\qed}{$\Box$}
8: \newcommand{\mred}[1]{\smash{\mathop{\hbox{\rightarrowfill}}\limits_{\scriptstyle #1}}}
9: \newcommand{\tmred}[1]{\smash{\mathop{\hbox{\rightarrowfill}}\limits_{\scriptstyle #1}\limits^{\scriptstyle *}}}
10: \def\gr{Gr\"obner basis }
11: \def\st{\, s.t. \,}
12: \def\ni{\noindent}
13: \def\ve{\vfill\eject}
14: \textwidth 9.2in
15: \textheight 7.2in
16: \columnsep 0.33in
17: \topmargin -1in
18:
1.3 ! noro 19: \title{A computer algebra system Risa/Asir and OpenXM}
1.1 noro 20:
1.3 ! noro 21: \author{Masayuki Noro\\ Kobe University, Japan}
1.1 noro 22: \begin{document}
23: \setlength{\parskip}{10pt}
24: \maketitle
1.3 ! noro 25:
! 26: %\begin{slide}{}
! 27: %\begin{center}
! 28: %\fbox{\large Part I : OpenXM and Risa/Asir --- overview and history}
! 29: %\end{center}
! 30: %\end{slide}
! 31:
! 32: %\begin{slide}{}
! 33: %\fbox{Integration of mathematical software systems}
! 34: %
! 35: %\begin{itemize}
! 36: %\item Data integration
! 37: %
! 38: %\begin{itemize}
! 39: %\item OpenMath ({\tt http://www.openmath.org}) , MP [GRAY98]
! 40: %\end{itemize}
! 41: %
! 42: %Standards for representing mathematical objects
! 43: %
! 44: %\item Control integration
! 45: %
! 46: %\begin{itemize}
! 47: %\item MCP [WANG99], OMEI [LIAO01]
! 48: %\end{itemize}
! 49: %
! 50: %Protocols for remote subroutine calls or session management
! 51: %
! 52: %\item Combination of two integrations
! 53: %
! 54: %\begin{itemize}
! 55: %\item MathLink, OpenMath+MCP, MP+MCP
! 56: %
! 57: %and OpenXM ({\tt http://www.openxm.org})
! 58: %\end{itemize}
! 59: %
! 60: %Both are necessary for practical implementation
! 61: %
! 62: %\end{itemize}
! 63: %\end{slide}
! 64: \begin{slide}{}
! 65: \fbox{A computer algebra system Risa/Asir}
! 66:
! 67: ({\tt http://www.math.kobe-u.ac.jp/Asir/asir.html})
! 68:
! 69: \begin{itemize}
! 70: \item Software mainly for polynomial computation
! 71:
! 72: \item User language with C-like syntax
! 73:
! 74: C language without type declaration, with list processing
! 75:
! 76: \item Builtin {\tt gdb}-like debugger for user programs
! 77:
! 78: \item Open source
! 79:
! 80: Whole source tree is available via CVS
! 81:
! 82: The latest version : see {\tt http://www.openxm.org}
! 83:
! 84: \item OpenXM interface
! 85:
! 86: \begin{itemize}
! 87: \item OpenXM
! 88:
! 89: An infrastructure for exchanging mathematical data
! 90: \item Risa/Asir is a main client in OpenXM package.
! 91: \item An OpenXM server {\tt ox\_asir}
! 92: \item A library with OpenXM library interface {\tt libasir.a}
! 93: \end{itemize}
! 94: \end{itemize}
! 95: \end{slide}
! 96:
! 97: \begin{slide}{}
! 98: \fbox{Goal of developing Risa/Asir}
! 99:
! 100: \begin{itemize}
! 101: \item Testing new algorithms
! 102:
! 103: \begin{itemize}
! 104: \item Development started in Fujitsu labs
! 105:
! 106: Polynomial factorization, Groebner basis related computation,
! 107: cryptosystems , quantifier elimination , $\ldots$
! 108: \end{itemize}
! 109:
! 110: \item To be a general purpose, open system
! 111:
! 112: Since 1997, we have been developing OpenXM package
! 113: containing various servers and clients
! 114:
! 115: Risa/Asir is a component of OpenXM
! 116:
! 117: \item Environment for parallel and distributed computation
! 118:
! 119: \end{itemize}
! 120: \end{slide}
! 121:
! 122: %\begin{slide}{}
! 123: %\fbox{Capability for polynomial computation}
! 124: %
! 125: %\begin{itemize}
! 126: %\item Fundamental polynomial arithmetics
! 127: %
! 128: %recursive representation and distributed representation
! 129: %
! 130: %\item Polynomial factorization
! 131: %
! 132: %\begin{itemize}
! 133: %\item Univariate : over {\bf Q}, algebraic number fields and finite fields
! 134: %
! 135: %\item Multivariate : over {\bf Q}
! 136: %\end{itemize}
! 137: %
! 138: %\item Groebner basis computation
! 139: %
! 140: %\begin{itemize}
! 141: %\item Buchberger and $F_4$ [FAUG99] algorithm
! 142: %
! 143: %\item Change of ordering/RUR [ROUI96] of 0-dimensional ideals
! 144: %
! 145: %\item Primary ideal decomposition
! 146: %
! 147: %\item Computation of $b$-function (in Weyl Algebra)
! 148: %\end{itemize}
! 149: %\end{itemize}
! 150: %\end{slide}
! 151:
! 152: \begin{slide}{}
! 153: \fbox{History of development : Polynomial factorization}
! 154:
! 155: \begin{itemize}
! 156: \item 1989
! 157:
! 158: Start of Risa/Asir with Boehm's conservative GC
! 159:
! 160: ({\tt http://www.hpl.hp.com/personal/Hans\_Boehm/gc})
! 161:
! 162: \item 1989-1992
! 163:
! 164: Univariate and multivariate factorizers over {\bf Q}
! 165:
! 166: \item 1992-1994
! 167:
! 168: Univariate factorization over algebraic number fields
! 169:
! 170: Intensive use of successive extension, non-squarefree norms
! 171:
! 172: \item 1996-1998
! 173:
! 174: Univariate factorization over large finite fields
! 175:
! 176: Motivated by a reseach project in Fujitsu on cryptography
! 177:
! 178: \item 2000-current
! 179:
! 180: Multivariate factorization over small finite fields (in progress)
! 181: \end{itemize}
! 182: \end{slide}
! 183:
! 184: \begin{slide}{}
! 185: \fbox{History of development : Groebner basis}
! 186:
! 187: \begin{itemize}
! 188: \item 1992-1994
! 189:
! 190: User language $\Rightarrow$ C version; trace lifting [TRAV88]
! 191:
! 192: \item 1994-1996
! 193:
! 194: Trace lifting with homogenization
! 195:
! 196: Omitting GB check by compatible prime [NOYO99]
! 197:
! 198: Modular change of ordering/RUR[ROUI96] [NOYO99]
! 199:
! 200: Primary ideal decomposition [SHYO96]
! 201:
! 202: \item 1996-1998
! 203:
! 204: Efficient content reduction during NF computation [NORO97]
! 205: Solved {\it McKay} system for the first time
! 206:
! 207: \item 1998-2000
! 208:
! 209: Test implementation of $F_4$ [FAUG99]
! 210:
! 211: \item 2000-current
! 212:
! 213: Buchberger algorithm in Weyl algebra
! 214:
! 215: Efficient $b$-function computation[OAKU97] by a modular method
! 216: \end{itemize}
! 217: \end{slide}
! 218:
! 219: \begin{slide}{}
! 220: \fbox{Timing data --- Factorization}
! 221:
! 222: \underline{Univariate; over {\bf Q}}
! 223:
! 224: $N_i$ : a norm of a polynomial, $\deg(N_i) = i$
! 225: \begin{center}
! 226: \begin{tabular}{|c||c|c|c|c|} \hline
! 227: & $N_{105}$ & $N_{120}$ & $N_{168}$ & $N_{210}$ \\ \hline
! 228: Asir & 0.86 & 59 & 840 & hard \\ \hline
! 229: Asir NormFactor & 1.6 & 2.2& 6.1& hard \\ \hline
! 230: %Singular& hard? & hard?& hard? & hard? \\ \hline
! 231: CoCoA 4 & 0.2 & 7.1 & 16 & 0.5 \\ \hline\hline
! 232: NTL-5.2 & 0.16 & 0.9 & 1.4 & 0.4 \\ \hline
! 233: \end{tabular}
! 234: \end{center}
! 235:
! 236: \underline{Multivariate; over {\bf Q}}
! 237:
! 238: $W_{i,j,k} = Wang[i]\cdot Wang[j]\cdot Wang[k]$ in {\tt asir2000/lib/fctrdata}
! 239: \begin{center}
! 240: \begin{tabular}{|c||c|c|c|c|c|} \hline
! 241: & $W_{1,2,3}$ & $W_{4,5,6}$ & $W_{7,8,9}$ & $W_{10,11,12}$ & $W_{13,14,15}$ \\ \hline
! 242: Asir & 0.2 & 4.7 & 14 & 17 & 0.4 \\ \hline
! 243: %Singular& $>$15min & --- & ---& ---& ---\\ \hline
! 244: CoCoA 4 & 5.2 & $>$15min & $>$15min & $>$15min & 117 \\ \hline\hline
! 245: Mathematica 4& 0.2 & 16 & 23 & 36 & 1.1 \\ \hline
! 246: Maple 7& 0.5 & 18 & 967 & 48 & 1.3 \\ \hline
! 247: \end{tabular}
! 248: \end{center}
! 249:
! 250: %--- : not tested
! 251: \end{slide}
! 252:
! 253: \begin{slide}{}
! 254: \fbox{Timing data --- DRL Groebner basis computation}
! 255:
! 256: \underline{Over $GF(32003)$}
! 257: \begin{center}
! 258: \begin{tabular}{|c||c|c|c|c|c|c|c|} \hline
! 259: & $C_7$ & $C_8$ & $K_7$ & $K_8$ & $K_9$ & $K_{10}$ & $K_{11}$ \\ \hline
! 260: Asir $Buchberger$ & 31 & 1687 & 2.6 & 27 & 294 & 4309 & --- \\ \hline
! 261: Singular & 8.7 & 278 & 0.6 & 5.6 & 54 & 508 & 5510 \\ \hline
! 262: CoCoA 4 & 241 & $>$ 5h & 3.8 & 35 & 402 &7021 & --- \\ \hline\hline
! 263: Asir $F_4$ & 5.3 & 129 & 0.5 & 4.5 & 31 & 273 & 2641 \\ \hline
! 264: FGb(estimated) & 0.9 & 23 & 0.1 & 0.8 & 6 & 51 & 366 \\ \hline
! 265: \end{tabular}
! 266: \end{center}
! 267:
! 268: \underline{Over {\bf Q}}
! 269:
! 270: \begin{center}
! 271: \begin{tabular}{|c||c|c|c|c|c|} \hline
! 272: & $C_7$ & $Homog. C_7$ & $K_7$ & $K_8$ & $McKay$ \\ \hline
! 273: Asir $Buchberger$ & 389 & 594 & 29 & 299 & 34950 \\ \hline
! 274: Singular & --- & 15247 & 7.6 & 79 & $>$ 20h \\ \hline
! 275: CoCoA 4 & --- & 13227 & 57 & 709 & --- \\ \hline\hline
! 276: Asir $F_4$ & 989 & 456 & 90 & 991 & 4939 \\ \hline
! 277: FGb(estimated) & 8 &11 & 0.6 & 5 & 10 \\ \hline
! 278: \end{tabular}
! 279: \end{center}
! 280: --- : not tested
! 281: \end{slide}
! 282:
! 283: \begin{slide}{}
! 284: \fbox{Summary of performance}
! 285:
! 286: \begin{itemize}
! 287: \item Factorizer
! 288:
! 289: \begin{itemize}
! 290: \item Multivariate : reasonable performance
! 291:
! 292: \item Univariate : obsoleted by M. van Hoeij's new algorithm [HOEI00]
! 293: \end{itemize}
! 294:
! 295: \item Groebner basis computation
! 296:
! 297: \begin{itemize}
! 298: \item Buchberger
! 299:
! 300: Singular shows nice perfomance
! 301:
! 302: Trace lifting is efficient in some cases over {\bf Q}
! 303:
! 304: \item $F_4$
! 305:
! 306: FGb is much faster than Risa/Asir
! 307:
! 308: But we observe that {\it McKay} is computed efficiently by $F_4$
! 309: \end{itemize}
! 310: \end{itemize}
! 311:
! 312: \end{slide}
! 313:
! 314: \begin{slide}{}
! 315: \fbox{What is the merit to use Risa/Asir?}
! 316:
! 317: \begin{itemize}
! 318: \item Total performance is not excellent, but not bad
! 319:
! 320: \item A completely open system
! 321:
! 322: The whole source is available
! 323:
! 324: \item Interface compliant to OpenXM RFC-100
! 325:
! 326: The interface is fully documented
! 327:
! 328: \item It serves as a test bench to try new ideas
! 329:
! 330: Interactive debugger is very useful
! 331: \end{itemize}
! 332:
! 333: \end{slide}
! 334:
! 335:
! 336: %\begin{slide}{}
! 337: %\fbox{CMO = Serialized representation of mathematical object}
! 338: %
! 339: %\begin{itemize}
! 340: %\item primitive data
! 341: %\begin{eqnarray*}
! 342: %\mbox{Integer32} &:& ({\tt CMO\_INT32}, {\sl int32}\ \mbox{n}) \\
! 343: %\mbox{Cstring}&:& ({\tt CMO\_STRING},{\sl int32}\, \mbox{ n}, {\sl string}\, \mbox{s}) \\
! 344: %\mbox{List} &:& ({\tt CMO\_LIST}, {\sl int32}\, len, ob[0], \ldots,ob[m-1])
! 345: %\end{eqnarray*}
! 346: %
! 347: %\item numbers and polynomials
! 348: %\begin{eqnarray*}
! 349: %\mbox{ZZ} &:& ({\tt CMO\_ZZ},{\sl int32}\, {\rm f}, {\sl byte}\, \mbox{a[1]}, \ldots
! 350: %{\sl byte}\, \mbox{a[$|$f$|$]} ) \\
! 351: %\mbox{Monomial32}&:& ({\tt CMO\_MONOMIAL32}, n, \mbox{e[1]}, \ldots, \mbox{e[n]}, \mbox{Coef}) \\
! 352: %\mbox{Coef}&:& \mbox{ZZ} | \mbox{Integer32} \\
! 353: %\mbox{Dpolynomial}&:& ({\tt CMO\_DISTRIBUTED\_POLYNOMIAL},\\
! 354: % & & m, \mbox{DringDefinition}, \mbox{Monomial32}, \ldots)\\
! 355: %\mbox{DringDefinition}
! 356: % &:& \mbox{DMS of N variables} \\
! 357: % & & ({\tt CMO\_RING\_BY\_NAME}, name) \\
! 358: % & & ({\tt CMO\_DMS\_GENERIC}) \\
! 359: %\end{eqnarray*}
! 360: %\end{itemize}
! 361: %\end{slide}
! 362: %
! 363: %\begin{slide}{}
! 364: %\fbox{Stack based communication}
! 365: %
! 366: %\begin{itemize}
! 367: %\item Data arrived a client
! 368: %
! 369: %Pushed to the stack
! 370: %
! 371: %\item Result
! 372: %
! 373: %Pushd to the stack
! 374: %
! 375: %Written to the stream when requested by a command
! 376: %
! 377: %\item The reason why we use the stack
! 378: %
! 379: %\begin{itemize}
! 380: %\item Stack = I/O buffer for (possibly large) objects
! 381: %
! 382: %Multiple requests can be sent before their execution
! 383: %
! 384: %A server does not get stuck in sending results
! 385: %\end{itemize}
! 386: %\end{itemize}
! 387: %\end{slide}
! 388:
! 389: \begin{slide}{}
! 390: \fbox{OpenXM (Open message eXchange protocol for Mathematics) }
! 391:
! 392: \begin{itemize}
! 393: \item An environment for parallel distributed computation
! 394:
! 395: Both for interactive, non-interactive environment
! 396:
! 397: \item OpenXM RFC-100 = Client-server architecture
! 398:
! 399: Client $\Leftarrow$ OX (OpenXM) message $\Rightarrow$ Server
! 400:
! 401: OX (OpenXM) message : command and data
! 402:
! 403: \item Data
! 404:
! 405: Encoding : CMO (Common Mathematical Object format)
! 406:
! 407: Serialized representation of mathematical object
! 408:
! 409: --- Main idea was borrowed from OpenMath
! 410:
! 411: ({\tt http://www.openmath.org})
! 412:
! 413: \item Command
! 414:
! 415: stack machine command --- server is a stackmachine
! 416:
! 417: + server's own command sequences --- hybrid server
! 418: \end{itemize}
! 419: \end{slide}
! 420:
! 421: \begin{slide}{}
! 422: \fbox{Example of distributed computation --- $F_4$ vs. $Buchberger$ }
! 423:
! 424: \begin{verbatim}
! 425: /* competitive Gbase computation over GF(M) */
! 426: /* Cf. A.28 in SINGULAR Manual */
! 427: /* Process list is specified as an option : grvsf4(...|proc=P) */
! 428: def grvsf4(G,V,M,O)
! 429: {
! 430: P = getopt(proc);
! 431: if ( type(P) == -1 ) return dp_f4_mod_main(G,V,M,O);
! 432: P0 = P[0]; P1 = P[1]; P = [P0,P1];
! 433: map(ox_reset,P);
! 434: ox_cmo_rpc(P0,"dp_f4_mod_main",G,V,M,O);
! 435: ox_cmo_rpc(P1,"dp_gr_mod_main",G,V,0,M,O);
! 436: map(ox_push_cmd,P,262); /* 262 = OX_popCMO */
! 437: F = ox_select(P); R = ox_get(F[0]);
! 438: if ( F[0] == P0 ) { Win = "F4"; Lose = P1;}
! 439: else { Win = "Buchberger"; Lose = P0; }
! 440: ox_reset(Lose); /* simply resets the loser */
! 441: return [Win,R];
! 442: }
! 443: \end{verbatim}
! 444: \end{slide}
! 445:
! 446: \begin{slide}{}
! 447: \fbox{References}
! 448:
! 449: [BERN97] L. Bernardin, On square-free factorization of
! 450: multivariate polynomials over a finite field, Theoretical
! 451: Computer Science 187 (1997), 105-116.
! 452:
! 453: [FAUG99] J.C. Faug\`ere,
! 454: A new efficient algorithm for computing Groebner bases ($F_4$),
! 455: Journal of Pure and Applied Algebra (139) 1-3 (1999), 61-88.
! 456:
! 457: [GRAY98] S. Gray et al,
! 458: Design and Implementation of MP, A Protocol for Efficient Exchange of
! 459: Mathematical Expression,
! 460: J. Symb. Comp. {\bf 25} (1998), 213-238.
! 461:
! 462: [HOEI00] M. van Hoeij, Factoring polynomials and the knapsack problem,
! 463: to appear in Journal of Number Theory (2000).
! 464:
! 465: [LIAO01] W. Liao et al,
! 466: OMEI: An Open Mathematical Engine Interface,
! 467: Proc. ASCM2001 (2001), 82-91.
! 468: [NORO97] M. Noro, J. McKay,
! 469: Computation of replicable functions on Risa/Asir.
! 470: Proc. PASCO'97, ACM Press (1997), 130-138.
! 471: \end{slide}
! 472:
! 473: \begin{slide}{}
! 474:
! 475: [NOYO99] M. Noro, K. Yokoyama,
! 476: A Modular Method to Compute the Rational Univariate
! 477: Representation of Zero-Dimensional Ideals.
! 478: J. Symb. Comp. {\bf 28}/1 (1999), 243-263.
! 479:
! 480: [OAKU97] T. Oaku, Algorithms for $b$-functions, restrictions and algebraic
! 481: local cohomology groups of $D$-modules.
! 482: Advances in Applied Mathematics, 19 (1997), 61-105.
! 483:
! 484: [ROUI96] F. Rouillier,
! 485: R\'esolution des syst\`emes z\'ero-dimensionnels.
! 486: Doctoral Thesis(1996), University of Rennes I, France.
! 487:
! 488: [SHYO96] T. Shimoyama, K. Yokoyama, Localization and Primary Decomposition of Polynomial Ideals. J. Symb. Comp. {\bf 22} (1996), 247-277.
! 489:
! 490: [TRAV88] C. Traverso, \gr trace algorithms. Proc. ISSAC '88 (LNCS 358), 125-138.
! 491:
! 492: [WANG99] P. S. Wang,
! 493: Design and Protocol for Internet Accessible Mathematical Computation,
! 494: Proc. ISSAC '99 (1999), 291-298.
! 495: \end{slide}
1.1 noro 496: \end{document}
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>