Optimizing Large-Scale ODE Simulations
Abstract
We present a strategy to speed up Runge-Kutta-based ODE simulations of large systems with nearest-neighbor coupling. We identify the cache/memory bandwidth as the crucial performance bottleneck. To reduce the required bandwidth, we introduce a granularity in the simulation and identify the optimal cluster size in a performance study. This leads to a considerable performance increase and transforms the algorithm from bandwidth bound to CPU bound. By additionally employing SIMD instructions we are able to boost the efficiency even further. In the end, a total performance increase of up to a factor three is observed when using cache optimization and SIMD instructions compared to a standard implementation. All simulation codes are written in C++ and made publicly available. By using the modern C++ libraries Boost.odeint and Boost.SIMD, these optimizations can be implemented with minimal programming effort.
- Publication:
-
arXiv e-prints
- Pub Date:
- December 2014
- DOI:
- 10.48550/arXiv.1412.0544
- arXiv:
- arXiv:1412.0544
- Bibcode:
- 2014arXiv1412.0544M
- Keywords:
-
- Physics - Computational Physics;
- Computer Science - Performance;
- Nonlinear Sciences - Chaotic Dynamics
- E-Print:
- 18 pages, 9 figures submitted to SIAM Journal of Scientific Computing