views:

67

answers:

2

hi, i am solving a system of ordinary differential equations using the odeint function. Is it possible (and if yes how) to parallelize easily this kind of problem?

+1  A: 

Numerically integrating an ODE is an intrinsically sequential operation, since you need each result to compute the following one (well, except if you're integrating from multiple starting points). So I guess the answer is no.

static_rtti
+2  A: 

The answer above is wrong, solving a ODE nummerically needs to calculate the function f(t,y)=y' several times per iteration, e.g. four times for Runge-Kutta. But i dont know any package for python doing this.

tillsten
I'm guessing that you are saying that static_rtti's answer is incorrect and that, since f(t,y)=y' is calculated several times per iteration, one can parallelize solving the ODE on a per step basis (by having 4 processors for instance which each calculate a f(t,y)=y'). However, in the Runge-Kutta algorithm, each f(t,y)=y' that we solve for is dependent on the previous y' that has been calculated (to find the y that we use in f(t,y)) and is therefore serial.
Justin Peel