# Sow and reap in parallel submit with outside variable use

Posted 9 years ago
4833 Views
|
3 Replies
|
1 Total Likes
|
 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, {}} -> BadHowever, 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}}} -> GoodWhy is that?
3 Replies
Sort By:
Posted 9 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 9 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 9 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.