Re: Specifying jobs in Parallel Computing
- To: mathgroup at smc.vnet.net
- Subject: [mg31030] Re: Specifying jobs in Parallel Computing
- From: Mike Yukish <may106 at psu.edu>
- Date: Fri, 5 Oct 2001 01:22:39 -0400 (EDT)
- Organization: Penn State University, Center for Academic Computing
- References: <9pecem$sil$1@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
The ParallelTable load shares by design, as it sends a new term to be evaluated to a remote kernel when that remote kernel is done with the last one. So your CPU 3 kernel will be working faster, and therefore picking up more of the load. If you want to do what you said below, send iterates 2001 to 3000 to CPU 3, for example, you'll have to write your own little routine to do that (not hard). It is worth it if the function in the iteration is small, because the comm latency between kernels can be extensive. Coarsely spreading out the problem will result in only a few communications. Not doing a coarse parallelization results in 3000 communications. The only drawback is if you miscalculate and one kernel has much more work than the others. "Toshiyuki (Toshi) Meshii" wrote: > Hello, > > I wonder if I can specify the quantity of the jobs by ParallelTable, or > similar commands. > > For example, suppose there is one master + three slave machines connected. > All I can do at this moment is like > > a = ParallelTable[ i^2 +3, {i, 1, 3000}] > > so that I do not know the load level of each slave machines. > > Because I know the CPU speed, I want to divide the total job so that (for > example) > CPU 1 --- i = 1 to 500 > CPU 2 --- i = 501 to 2000 > CPU 3 --- i = 2001 to 3000 > > Is this possible by Mathematica's parallel computing kit? > > -Toshi