We investigate the performance characteristics of a numerically enhanced scalar product (dot) kernel loop that uses the Kahan algorithm to compensate for numerical errors, and describe efficient SIMD-vectorized implementations on recent Intel processors. Using low-level instruction analysis and the execution-cache-memory (ECM) performance model we pinpoint the relevant performance bottlenecks for single-core and thread-parallel execution, and predict performance and saturation behavior. We show that the Kahan-enhanced scalar product comes at almost no additional cost compared to the naive (non-Kahan) scalar product if appropriate low-level optimizations, notably SIMD vectorization and unrolling, are applied. We also investigate the impact of architectural changes across four generations of Intel Xeon processors.
@article{arxiv.1505.02586,
title = {Performance analysis of the Kahan-enhanced scalar product on current multicore processors},
author = {Johannes Hofmann and Dietmar Fey and Jan Eitzinger and Georg Hager and Gerhard Wellein},
journal= {arXiv preprint arXiv:1505.02586},
year = {2019}
}