{'fraction_non_alphanumeric': 0.01734906315058987, 'fraction_numerical': 0.0, 'mean_word_length': 6.068627450980392, '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}}
Evaluating the Separation of Algorithm and Implementation within Existing Programming Models

Implementation details and performance tuning obfuscate the algorithms in programs. In the SAIMI project (Separating Algorithm and Implementation via Programming Model Injection), we are investigating ways to use simpler, more restricted programming models to orthogonally express important subcomputations and express implementation details as transformations on the subcomputations. In this initial phase of the project, we are evaluating separation in existing programming models especially with respect to look-up table, grid-based, sparse computation, and task graph programming models. In this paper, we illustrate the general approach of the SAIMI project with a source-to-source compilation tool called Mesa that automates most aspects of applying look-up transformations in scientific codes; we use the CGPOP miniapp as an example geoscience code to discuss the coupling between the discretization grid implementation details and the communication routines that support the simulation algorithms; and we evaluate the ability of existing programming languages such as Cilk, TBB, CnC, and OpenMP to represent general, dynamic task graphs that arise in sparse computations. We conclude with future directions for developing orthogonal implementation abstractions and building on the orthogonal capabilities in existing programming languages.