0
|
5421 Views
|
3 Replies
|
1 Total Likes
View groups...
Share
GROUPS:

# Sow and reap in parallel submit with outside variable use

Posted 10 years ago
 Hello, I try to use reap and sow to accumulated values during a calculation. It is recommended because it is said to be faster than AppenTo. However, I would like to utilize all my cpu cores by using parallelsubmit on various reap expressions with nested for and sow. It seems that this does not work properly. Please take a look at the following example: end = 5 Reap[ For[t = 0, t < end, t++, Sow[t] ] ] WaitAll[%] returns: {Null, {{0, 1, 2, 3, 4}}} -> Good end = 5 ParallelSubmit[ Reap[ For[t = 0, t < end, t++, Sow[t] ] ] ] WaitAll[%] returns: {Null, {}} -> Bad However, if I replace the end variable with its value like so: ParallelSubmit[ Reap[ For[t = 0, t < 5, t++, Sow[t] ] ] ] WaitAll[%] returns: {Null, {{0, 1, 2, 3, 4}}} -> Good Why is that?
3 Replies
Sort By:
Posted 10 years ago
 Probably, the time required to do all the parallel staff (kernels communication and other) is greater then plain sequential computation time. The benefit from parallel computations can be seen, for example, for ParallelTable[] when it's arg takes some decent time to be evaluated for a single iteration: ParallelTable[Pause[1]; 0.,{4.}]; // AbsoluteTiming Table[Pause[1];0.,{4.}]; // AbsoluteTiming (*{1.009058, Null}*) (*{4.003229, Null}*) I.M.
Posted 10 years ago
 Hi Ivan,thanks for your answer. That solved the problem indeed. However, lets say I put end = 2000, using ParallelSubmit it takes 2 seconds to compute the result. While it barely takes any time when I run Reap[For[t = 0, t < end, t++, Sow[t]]] without using ParallelSubmit.Any Idea why that might be slower?
Posted 10 years ago
 Hi,'end' var should be shared: SetSharedVariable[end] ; end = 5 ; ParallelSubmit[Reap[For[t = 0, t < end, t++, Sow[t]]]] ; WaitAll[%] I.M.