{'fraction_non_alphanumeric': 0.017361111111111112, 'fraction_numerical': 0.0, 'mean_word_length': 5.292576419213974, 'pattern_counts': {'":': 0, '<': 0, '<?xml version=': 0, '>': 0, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
Zero-Overhead Interfaces for High-Performance Computing Libraries and Kernels

In this paper we propose a domain-specific language-based approach to reduce the overhead associated with accessing external data from computational kernels. Libraries which aid application developers in parallelizing and optimizing their codes need a way to expose their internal data stores to user code. An efficient interface as well as an optimized data layout are imperative for high application performance. We focus on codes which operate on regular grids and require only local interactions. These stencil-based programs form a class of algorithms found at the heart of many computer simulations and PDE solvers. Many stencil codes are memory bound, meaning that their performance depends heavily on an efficient usage of the computers' memory subsystem. This work's contribution is to give an extensive review of the available implementation alternatives and to put them in context with the state of the art. From this we derive our domain-specific language (DSL) which alleviates many of the shortcomings of previous designs, especially related to the utilization of SIMD units and simplifying the address generation. Simultaneously it provides a natural, object-oriented way of expressing data structures and accesses. We validate our DSL with benchmark results obtained from two kernels: one reverse time migration and one Lattice Boltzmann method.