version 1.2, 2001/03/07 07:17:02 |
version 1.3, 2001/03/07 08:12:56 |
|
|
% $OpenXM: OpenXM/doc/ascm2001/homogeneous-network.tex,v 1.1 2001/03/07 02:42:10 noro Exp $ |
% $OpenXM: OpenXM/doc/ascm2001/homogeneous-network.tex,v 1.2 2001/03/07 07:17:02 noro Exp $ |
|
|
\subsection{Distributed computation with homogeneous servers} |
\subsection{Distributed computation with homogeneous servers} |
\label{section:homog} |
\label{section:homog} |
Line 133 typical example is {\it quicksort}, where an array to |
|
Line 133 typical example is {\it quicksort}, where an array to |
|
partitioned into two sub-arrays and the algorithm is applied to each |
partitioned into two sub-arrays and the algorithm is applied to each |
sub-array. In each level of recursion, two subtasks are generated |
sub-array. In each level of recursion, two subtasks are generated |
and one can ask other OpenXM servers to execute them. Though |
and one can ask other OpenXM servers to execute them. Though |
this make little contribution to the efficiency, it is worth |
this makes little contribution to the efficiency, it is worth |
to show that such an attempt is very easy under OpenXM. |
to show that such an attempt is very easy under OpenXM. |
Here is an Asir program. |
Here is an Asir program. |
A predefined constant {\tt LevelMax} determines |
A predefined constant {\tt LevelMax} determines |
Line 211 def c_z(F,E,Level) |
|
Line 211 def c_z(F,E,Level) |
|
/* launch a server if necessary */ |
/* launch a server if necessary */ |
if ( Proc1 < 0 ) Proc1 = ox_launch(); |
if ( Proc1 < 0 ) Proc1 = ox_launch(); |
/* send a request with Level = Level+1 */ |
/* send a request with Level = Level+1 */ |
|
/* ox_c_z is a wrapper of c_z on the server */ |
ox_cmo_rpc(Proc1,"ox_c_z",lmptop(G),E, |
ox_cmo_rpc(Proc1,"ox_c_z",lmptop(G),E, |
setmod_ff(),Level+1); |
setmod_ff(),Level+1); |
/* the rest is done on this server */ |
/* the rest is done on this server */ |