=================================================================== RCS file: /home/cvs/OpenXM/doc/ascm2001p/homogeneous-network.tex,v retrieving revision 1.5 retrieving revision 1.8 diff -u -p -r1.5 -r1.8 --- OpenXM/doc/ascm2001p/homogeneous-network.tex 2001/06/20 03:08:05 1.5 +++ OpenXM/doc/ascm2001p/homogeneous-network.tex 2001/06/21 03:09:46 1.8 @@ -1,10 +1,10 @@ -% $OpenXM: OpenXM/doc/ascm2001p/homogeneous-network.tex,v 1.4 2001/06/20 02:50:16 noro Exp $ +% $OpenXM: OpenXM/doc/ascm2001p/homogeneous-network.tex,v 1.7 2001/06/20 05:42:47 takayama Exp $ \subsection{Distributed computation with homogeneous servers} \label{section:homog} One of the aims of OpenXM is a parallel speedup by a distributed computation -with homogeneous servers. +with homogeneous servers. Let us see some examples. %As the current specification of OpenXM does %not include communication between servers, one cannot expect %the maximal parallel speedup. However it is possible to execute @@ -12,18 +12,11 @@ with homogeneous servers. \subsubsection{Competitive distributed computation by various strategies} -SINGULAR \cite{Singular} implements {\it MP} interface for distributed +SINGULAR \cite{Singular} implements MP interface for distributed computation and a competitive Gr\"obner basis computation is -illustrated as an example of distributed computation. -Such a distributed computation is also possible on OpenXM as follows: +illustrated as an example of distributed computation by the interface. +Such a distributed computation is also possible on OpenXM. -The client creates two servers and it requests -Gr\"obner basis comutations by the Buchberger algorithm the $F_4$ algorithm -to the servers for the same input. -The client watches the streams by {\tt ox\_select()} -and the result which is returned first is taken. Then the remaining -server is reset. - \begin{verbatim} extern Proc1,Proc2$ Proc1 = -1$ Proc2 = -1$ @@ -50,12 +43,15 @@ def dgr(G,V,Mod,O) return [Win,R]; } \end{verbatim} +In the above Asir program, the client creates two servers and it requests +Gr\"obner basis computations by the Buchberger algorithm +and the $F_4$ algorithm to the servers for the same input. +The client watches the streams by {\tt ox\_select()} +and the result which is returned first is taken. Then the remaining +server is reset. \subsubsection{Nesting of client-server communication} -Under OpenXM-RFC 100 an OpenXM server can be a client of other servers. -Figure \ref{tree} illustrates a tree-like structure of an OpenXM -client-server communication. \begin{figure} \label{tree} \begin{center} @@ -78,6 +74,12 @@ client-server communication. \caption{Tree-like structure of client-server communication} \end{center} \end{figure} +%%Prog: load ("dfff"); df_demo(); enter 100. +Under OpenXM-RFC 100 an OpenXM server can be a client of other servers. +%Figure \ref{tree} +Figure 2 +illustrates a tree-like structure of an OpenXM +client-server communication. Such a computational model is useful for parallel implementation of algorithms whose task can be divided into subtasks recursively. @@ -134,13 +136,13 @@ algorithms whose task can be divided into subtasks rec %\end{verbatim} % A typical example is a parallelization of the Cantor-Zassenhaus -algorithm for polynomial factorization over finite fields. +algorithm for polynomial factorization over finite fields, which is a recursive algorithm. At each level of the recursion, a given polynomial can be divided into two non-trivial factors with some probability by using a randomly generated polynomial as a {\it separator}. We can apply the following simple parallelization: -When two non-trivial factors are generated on a server, +when two non-trivial factors are generated on a server, one is sent to another server and the other factor is factorized on the server itself. %\begin{verbatim} @@ -152,7 +154,7 @@ itself. % if ( N == E ) return [F]; % M = field_order_ff(); K = idiv(N,E); L = [F]; % while ( 1 ) { -% /* gererate a random polynomial */ +% /* generate a random polynomial */ % W = monic_randpoly_ff(2*E,V); % /* compute a power of the random polynomial */ % T = generic_pwrmod_ff(W,F,idiv(M^E-1,2)); @@ -251,7 +253,7 @@ work well on OpenXM. %Such a distributed computation is also possible on OpenXM as follows: % %The client creates two servers and it requests -%Gr\"obner basis comutations from the homogenized input and the input itself +%Gr\"obner basis computations from the homogenized input and the input itself %to the servers. %The client watches the streams by {\tt ox\_select()} %and the result which is returned first is taken. Then the remaining