Solving Ordinary Differential Equations on GPUs

Ordinary Differential Equations (ODEs) are a fundamental mathematical tool to model physical, biological or chemical systems, and they are widely used in engineering, economics and social sciences. Given their vast appearance, it is of crucial importance to develop efficient numerical routines for solving ODEs that employ the computational power of modern GPUs. Here, we present a high-level approach to compute numerical solutions of ODEs by developing a generic implementation of the most common algorithms and combining this with modern C\(++\) libraries like VexCL and Thrust. Our approach is based on generic programming and results in highly scalable and easy-to-use source code.

[1]  Ernst Hairer,et al.  Solving Ordinary Differential Equations I: Nonstiff Problems , 2009 .

[2]  E. Ott Chaos in Dynamical Systems: Contents , 2002 .

[3]  L. Verlet Computer "Experiments" on Classical Fluids. I. Thermodynamical Properties of Lennard-Jones Molecules , 1967 .

[4]  Berend Smit,et al.  Understanding molecular simulation: from algorithms to applications , 1996 .

[5]  Karline Soetaert,et al.  Solving Differential Equations in R , 2012 .

[6]  Ernst Hairer,et al.  Simulating Hamiltonian dynamics , 2006, Math. Comput..

[7]  C. Sparrow The Lorenz Equations: Bifurcations, Chaos, and Strange Attractors , 1982 .

[8]  Karl Rupp,et al.  Programming CUDA and OpenCL: A Case Study Using Modern C++ Libraries , 2012, SIAM J. Sci. Comput..

[9]  Andrei Alexandrescu,et al.  Modern C++ design: generic programming and design patterns applied , 2001 .

[10]  Mario Mulansky,et al.  Odeint - Solving ordinary differential equations in C++ , 2011, ArXiv.

[11]  Carol S. Woodward,et al.  Enabling New Flexibility in the SUNDIALS Suite of Nonlinear and Differential/Algebraic Equation Solvers , 2020, ACM Trans. Math. Softw..

[12]  William H. Press,et al.  Numerical recipes in C. The art of scientific computing , 1987 .

[13]  P. Holmes,et al.  The nature of the coupling between segmental oscillators of the lamprey spinal generator for locomotion: A mathematical model , 1982, Journal of mathematical biology.

[14]  Jürgen Kurths,et al.  Synchronization: Phase locking and frequency entrainment , 2001 .

[15]  T. Schwager,et al.  Computational Granular Dynamics: Models and Algorithms , 2005 .

[16]  Yoshiki Kuramoto,et al.  Chemical Oscillations, Waves, and Turbulence , 1984, Springer Series in Synergetics.

[17]  G. Teschl Ordinary Differential Equations and Dynamical Systems , 2012 .

[18]  Aaftab Munshi,et al.  The OpenCL specification , 2009, 2009 IEEE Hot Chips 21 Symposium (HCS).

[19]  James Reinders,et al.  Intel threading building blocks - outfitting C++ for multi-core processor parallelism , 2007 .

[20]  E. Hairer,et al.  Solving ordinary differential equations I (2nd revised. ed.): nonstiff problems , 1993 .

[21]  Ronald L. Rivest,et al.  Introduction to Algorithms , 1990 .

[22]  Janet E. Jones On the determination of molecular fields. —II. From the equation of state of a gas , 1924 .

[23]  Nathan Bell,et al.  Thrust: A Productivity-Oriented Library for CUDA , 2012 .

[24]  Alexander A. Stepanov,et al.  C++ Standard Template Library , 2000 .

[25]  E. Ott Chaos in Dynamical Systems: Contents , 1993 .

[26]  Jürgen Kurths,et al.  Synchronization - A Universal Concept in Nonlinear Sciences , 2001, Cambridge Nonlinear Science Series.

[27]  E. Hairer,et al.  Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems , 2010 .

[28]  Ramon E. Moore Methods and applications of interval analysis , 1979, SIAM studies in applied mathematics.

[29]  David S. Wise,et al.  Representation-transparent matrix algorithms with scalable performance , 2007, ICS '07.