Performance Dissection of a Molecular Dynamics Code across CUDA and GPU Generations
Matthew Wezowicz, Trilce Estrada, Sandeep A. Patel, Michela Taufer · 2013
The first release of CUDA was in 2007. Since then, we have experienced frequent new releases. CUDA reached its maximum performance with CUDA 4.0. Since its release, NVIDIA has started a re-design of the CUDA framework driven by software engineering principles, i.e., the search for a general, multi-layer framework whose compiler back-end is unified with OpenCL. At the same time, the GPU architecture has been moving from Fermi to Kepler by including faster memory speed larger numbers of stream processors, and redesigned pipelines. The two directions have orthogonal results in terms of performance. The software generality has resulted in the slow down of codes that were heavily optimized for older generations of CUDA, while the hardware improvements have resulted in steadily increasing performance. The performance dissection presented in this paper identifies sweet spots and trade-offs between software generality and hardware improvements for a diverse set of kernels in an open-source molecular dynamics code.