I have to solve a non-linear ODE of the shape $$\partial_zA=f(A)$$ with $f$ a non-linear function and $A$ a matrix/vector with >1e6 variables (i.e. $A$ is a matrix with >1000x1000 entries). For each calculation of the right hand side of the system (i.e. $f(A)$) I have to calculate roughly five matrix-matrix multiplications $B\cdot A$ with $B$ a constant matrix and roughly five FFTs over each row of $A$. $A$ is using complex numbers.

To solve this system I intended to use a solver such as odeint from boost. I also intended to run the calculation on a GPU, to use the increased speed of matrix-matrix-multiplications and batch FFTs. I had to find out, though, that odeint does not support thrust::complex as value type. Therefore, my current approach is to copy $A$ to the GPU in each step, and return $f(A)$ afterwards to the solver. This is rather costly, and therefore I would like to avoid it.

Thus, are there other strategies (apart from writing my own solver) which could help solving this PDE in reasonable time? Should I still try to go for the GPU, or rather try things like MPI (or a hybrid approach)? Moreover, I noticed that for several sets of parameters the equation behaves rather stiff. Are there options for solving the system in that case?

  • $\begingroup$ Good answers are likely to depend on properties of $f$. What is the original equation you're trying to solve? $\endgroup$ May 6, 2020 at 9:57
  • $\begingroup$ @DavidKetcheson: It's a rather long equation, which can be condensed into that function $f(A)$. Moreover, depending on the parameters for the starting conditions I can either add or remove terms from $f(A)$, therefore I intended to keep the question more general. Is an answer still possible without that information? $\endgroup$
    – arc_lupus
    May 8, 2020 at 10:54
  • 1
    $\begingroup$ In my opinion, no, it's not possible to give a very useful answer with the information you have provided. $\endgroup$ May 9, 2020 at 9:33


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Browse other questions tagged or ask your own question.