MathGroup Archive 2009

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: ParallelTable doesn't work, but Table does

  • To: mathgroup at smc.vnet.net
  • Subject: [mg101772] Re: [mg101689] ParallelTable doesn't work, but Table does
  • From: Iván Lazaro <gaminster at gmail.com>
  • Date: Thu, 16 Jul 2009 08:21:56 -0400 (EDT)
  • References: <200907140937.FAA01989@smc.vnet.net> <4A5CD404.4040301@mit.edu>

This is the almost complete code without parallelization. Thanks for all the
answers.


Num = 4;
Time = 600;


r[r4_] := {1, 1, 1, r4};
A[a13_, a14_, a23_, a24_, a32_, a34_, a42_,
   a43_] := {{1, 1, a13, a14}, {1, 1, a23, a24}, {1, a32, 1,
    a34}, {1, a42, a43, 1}};



Variable[] := Flatten[Table[Subscript[x, i][t], {i, 1, Num}]]

JacobianMatrix[funs_List, vars_List] := Outer[D, funs, vars]

CondIni[] := Table[{Subscript[x, i][0] == 0.1*i}, {i, 1, Num}]

Y = Table[{Subscript[x, i][t], Subscript[x, i + 4][t],
    Subscript[x, i + 8][t], Subscript[x, i + 12][t]}, {i, 5, 8}];

YI9 = Flatten[
   Table[{Subscript[x, i][0] == If[Mod[i, 5] == 0, 1, 0, 0],
     Subscript[x, i + 4][0] == If[Mod[i + 4, 5] == 0, 1, 0, 0],
     Subscript[x, i + 8][0] == If[Mod[i + 8, 5] == 0, 1, 0, 0],
     Subscript[x, i + 12][0] == If[Mod[i + 12, 5] == 0, 1, 0, 0]}, {i,
      5, 8}]];
YI3 = Flatten[CondIni[]];
Ecua[r4_, a13_, a14_, a23_, a24_,a32_,
   a34_, a42_, a43_] :=
  Flatten[Table[
    r[r4][[i]]*
     Subscript[x, i][
      t]*(1 - Sum[
        A[a13, a14, a23, a24,a32, a34, a42,
           a43][[i, j]] *Subscript[x, j][t], {j, 1, Num}]), {i, 1,
     Num}]] ;



Do[


 J = JacobianMatrix[
   Ecua[r4_, a13_, a14_, a23_, a24_,a32_,
   a34_, a42_, a43_], Variable[]];

 E1 = Flatten[Transpose[J.Y]];

 EQ3 = Table[
   D[Subscript[x, i][t], {t, 1}] ==
    Ecua[r4_, a13_, a14_, a23_, a24_,a32_,
   a34_, a42_, a43_][[i]], {i, 1, 4}];

 EQ9 = Table[D[Subscript[x, i][t], {t, 1}] == E1[[i - 4]], {i, 5, 20}];

 sol = NDSolve[Join[EQ9, EQ3, YI3, YI9],
   Table[Subscript[x, i][t], {i, 1, 20}], {t, 0, Time},
   MaxSteps -> Infinity, AccuracyGoal -> 2];

PhiT = Table[{Subscript[x, i][t], Subscript[x, i + 4][t],
       Subscript[x, i + 8][t], Subscript[x, i + 12][t]}, {i, 5,
       8}] /. sol /. t -> Time];

EL=Log[PhiT]

 If[EL > 0,
  PutAppend[Join[A[a13, a14, a23, a24,a32, a34, a42,  a43],
     r[r4], EL],"File"]],


 {a13, 0, 2.00, 0.01}, {a14, 0, 2.00, 0.01}, {a23, 0, 2.00, 0.01}, {a24, 0,
2.00,
  0.01}, {a32, 0, 2.00, 0.01}, {a34, 0, 2.00, 0.01}, {a42, 0, 2.00, 0.01},
{a43, 0, 2.00,
  0.01},  {r4, 0.01, 0.50, 0.01}]



2009/7/14 Zach Bj=F8rnson <bjornson at mit.edu>

> Hi- Can you send me your notebook so I can play with it, please? -Zach
>
>
> On 7/14/2009 3:45 PM, Iv=E1n Lazaro wrote:
>
>> Thanks for the answer.
>>
>> I tried that, but did't work.
>>
>> A and r, are a 4x4 matrix and a vector, respectivily. Ecua[] simply
>> construct equations for NDSolve, and Variables[] do the same. JacobianMatrix
>> make the Jacobian of equations given by Ecua, using the variables
>> Variable[]. EQ3, EQ9, YI3, YI9 are simply defintions of equations to be
>> given to NDSolve a 3-dimensional system of equations and a 9-dimensional
>> respectivly.
>>
>> The problem i'm triyng to resolve is very time consuming, so I expected
>> that parallelizing could make it faster. As an alternative, i tried with Do
>> instead of Table (and ParallelDo instead of ParallelTable), but the error
>> doesn't disapper. The problem seems to be in NDSolve; maybe is not posible
>> parallelize many NDSolve solutions, altought they are not related.
>>
>


  • Prev by Date: Re: Releasing memory
  • Next by Date: Re: Assigning Values to Many Symbols at Once
  • Previous by thread: Re: ParallelTable doesn't work, but Table does
  • Next by thread: Re: ParallelTable doesn't work, but Table does