Tag Info

New answers tagged

2

I do not have time to explore this deeply, but a quick Trace of the issue indicates that the functionality simply is not written to preserve packing. Observe: args = RandomReal[1, {10000}]; On["Packing"]; tr = Trace @ ParallelTable[x, {x, args}, Method -> "ItemsPerEvaluation" -> 100]; FirstPosition[tr, Developer`FromPackedArray::punpack1] {5, ...


4

In this case you would need SetSharedFunction as you are dealing with DownValues. However, the communication overhead you introduce with this is likely going to negate any benefits or parallelization. Try to write parallel code that never requires write access to the same variable from different threads. Reformulate your problem in terms of ParallelMap or ...


4

You have to replace SetSharedVariable with SetSharedFunction. longComputation[n_] := n SetSharedFunction[zeros] ParallelDo[ zeros[n] = longComputation[n], {n, 30, 70, 10} ] Why? From the docs of SetSharedVariable: Shared variables without a value evaluate to Null. This is what was happening to you, because zeros[30] = ... defines a function ...


3

To demonstrate evaluation in parallel computing on different number of kernels 1)Default list of kernels run for parallel computing `$ConfiguredKernels` (*("<<`1` local kernels>>", 6]}*) 2) Run ParallelTable on all kernels: LaunchKernels[]; ParallelTable[Pause[1]; f[i], {i, 6}] // AbsoluteTiming (*{1.009058, {f[1], f[2], f[3], ...


3

Before evaluating ParallelTable just launch however many kernels you want to use: LaunchKernels[4] By default ParallelTable and the other Parallel* functions call LaunchKernels[] which will launch whatever you have configured(default is essentially LaunchKernels[Min[$ProcessorCount, $MaxLicenseSubprocesses]]).


3

The integral over a spherical region is easily performed by Mathematica even analytically. Assuming f=1 and for brevity putting the center of the sphere at the origin: Timing@Integrate[1, {x, -r, +r}, {y, -Sqrt[r^2 - x^2], +Sqrt[ r^2 - x^2]}, {z, -Sqrt[r^2 - x^2 - y^2], +Sqrt[r^2 - x^2 - y^2]}] (*{0.218401, 4 Pi r^3 / 3}*) Assigning a numerical value to ...


3

For your example, I would simply do this: R = 2.3; {x0, y0, z0} = {1.2, 2.3, 3.4}; NIntegrate[1, {x, -R + x0, R + x0}, {y, y0 - Sqrt[R^2 - (x - x0)^2], y0 + Sqrt[R^2 - (x - x0)^2]}, {z, z0 - Sqrt[R^2 - (x - x0)^2 - (y - y0)^2], z0 + Sqrt[R^2 - (x - x0)^2 - (y - y0)^2]}]; For a general function func = Function[{x,y,z},body] and a set of boundaries ...



Top 50 recent answers are included