Refactoring the Elastic-Viscous-Plastic (EVP) Sea Ice Dynamics Solver
This study reveals two dominant bottlenecks in the computational performance of the EVP sea ice dynamics solver and remedies them. Rewriting the code (refactoring) to improve memory access patterns overcomes issues with synchronization across processing units, and hardware bandwidth enhancements solve performance scaling issues on single compute nodes.
Sea ice dynamics calculations are the most computationally expensive aspect of the sea ice component of earth system models. The refactorization described in this work allows the entire EVP calculation to be performed on a single compute node and has the potential to significantly improve the efficiency of long-term and multiple-ensemble-member earth system simulations.
The elastic–viscous–plastic (EVP) dynamical solver within the sea ice model, CICE v6.5.1, suffers from two dominant computational bottlenecks, namely (1) the number of synchronization points required for parallel computations during each time step combined with the irregular domain of active sea ice points, and (2) the lack of single-instruction, multiple-data (SIMD) code generation.
The standard EVP solver is refactored based on two generic patterns. The first pattern exposes how general finite differences on masked multi-dimensional arrays can be expressed in order to produce significantly better code generation by changing the memory access pattern from random access to direct access. The second pattern takes an alternative approach to handle static grid properties.
The measured single-core performance improvement is more than a factor of 5 compared to the standard implementation, scaling strongly until the available memory bandwidth is saturated. On architectures with sufficient bandwidth, strong scaling results in a single-node improvement factor of 35 over the standard implementation. This study also demonstrates improved performance on GPU processors.