Is ParallelMap and Parallelize@Map expected to work with Sow and Reap construct.
This is a rather brief toy code to find all Primes just to force the use of Sow/Reap inside Map
Reap[Map[
If[PrimeQ@#, Sow@#] &,
Range[10]
]][[2]]
and the output is, as expected
{{2, 3, 5, 7}}
But when I do
Reap[Parallelize@Map[
If[PrimeQ@#, Sow@#] &,
Range[1000]
]][[2]]
I got the output
{}
And the same was the output when I ran
Reap[
ParallelMap[
If[PrimeQ@#, Sow@#] &,
Range[10]
]
][[2]]
2 questions :
1) How is this explainable ?
2) If this is the case, how do I efficiently I spawn parallel jobs which accumulate something ?
Sowin a subkernel andReapin the main kernel, so it can't work. These are separate processes that do not share any memory. The main kernel merely submits evaluations to the subkernels and collects results. – Szabolcs Oct 03 '13 at 21:59