GRID-Machine
view release on metacpan or search on metacpan
lib/GRID/Machine/perlparintro.pod view on Meta::CPAN
user 0m0.036s
sys 0m0.008s
casiano@beowulf:~$ time ssh orion 'pi/pi 0 1000000000 1'
3.141593
real 0m29.120s
user 0m0.028s
sys 0m0.003s
As you can see, there is some heterogeneity here. Machine C<nereida> (my desktop)
is slower than the others two. C<beowulf> is the fastest.
Now let us run the parallel perl program in C<nereida> using only the C<beowulf>
node. The time spent is roughly comparable to the I<pure C> time. That is nice:
The overhead introduced by the coordination tasks is not as large (compare it
with the C<beowulf> entry above):
pp2@nereida:~/LGRID_Machine/examples$ time gridpipes.pl 1 1000000000
Process 0: machine = beowulf partial = 3.141593 pi = 3.141593
Pi = 3.141593. N = 1000000000 Time = 27.058693
lib/GRID/Machine/perlparintro.pod view on Meta::CPAN
pp2@nereida:~/LGRID_Machine/examples$ time gridpipes.pl 2 1000000000
Process 0: machine = beowulf partial = 1.570796 pi = 1.570796
Process 1: machine = orion partial = 1.570796 pi = 3.141592
Pi = 3.141592. N = 1000000000 Time = 15.094719
real 0m17.684s
user 0m0.904s
sys 0m0.260s
We can see that the sequential pure C version took 32 seconds in my desktop (C<nereida>).
By using two machines I have SSH access I have reduced that time to roughly 18 seconds.
This a factor of C<32/18 = 1.8> times faster. This factor is even better if I
don't consider the set-up time: C<32/15 = 2.1>. The total time decreases
if I use the three machines:
pp2@nereida:~/LGRID_Machine/examples$ time gridpipes.pl 3 1000000000
Process 0: machine = beowulf partial = 1.047198 pi = 1.047198
Process 1: machine = orion partial = 1.047198 pi = 2.094396
Process 2: machine = nereida partial = 1.047198 pi = 3.141594
Pi = 3.141594. N = 1000000000 Time = 10.971036
( run in 0.260 second using v1.01-cache-2.11-cpan-299005ec8e3 )