Re: Any idea how to parallelize this small code construct
- To: mathgroup at smc.vnet.net
- Subject: [mg110892] Re: Any idea how to parallelize this small code construct
- From: "Jon Harrop" <usenet at ffconsultancy.com>
- Date: Sat, 10 Jul 2010 04:01:36 -0400 (EDT)
- References: <i13tso$7j1$1@smc.vnet.net>
"pratip" <pratip.chakraborty at gmail.com> wrote in message news:i13tso$7j1$1 at smc.vnet.net... > Dear Group, > > Here is a simple code to solve linear systems. It is motivated from > Fullerton University numerics example. Now if someone can suggest how > to parallelize this code. > > SORmethod[A0_, B0_, P0_, omega_, max_] := > Module[{A = N[A0], B = N[B0], i, j, k = 0, n = Length[P0], P = P0, > oldP = P0}, > While[ k < max, > Do[P[[i]] = (1 - omega) oldP[[i]] + > omega/A[[i, > i]] (B[[i]] - Sum[A[[i, j]] P[[j]], {j, 1, i - 1}] - > Sum[A[[i, j]] oldP[[j]], {j, 1 + i, n}]) , {i, 1, n}]; > oldP = P; > k = k + 1; ]; > Return[P] ] Frigo et al. described a cache oblivious divide-and-conquer algorithm that parallelizes such functions effectively but you'll need modern infrastructure for load-balanced parallelism on multicores. I don't really see the point of parallelizing that in Mathematica. The serial implementation might be useful as an educational exercise but it will be orders of magnitude slower than necessary and Mathematica cannot express an efficient parallel solution. Cheers, Jon.