{'fraction_non_alphanumeric': 0.034624413145539906, 'fraction_numerical': 0.0005868544600938967, 'mean_word_length': 4.7407407407407405, '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}}
Semantic tiling-Extended Abstract

Tiling is a well known program transformation, typically applied to loop programs, used to reorder the computation with many different goals: exploiting locality in the memory hierarchy, adapting the granularity of computation to data transfers, and/or exposing coarsegrain parallelism, to name just a few. The tiling transformation, T : ‡ 7→ 〈‡t, ‡l〉 maps a point z in the iteration space to a tile zt and to a local index zl within a tile. The computation performed at the new, reordered iteration, 〈zt, zl〉 is identical to that performed at the original point z. We view such a tiling as a purely “syntactic” tiling. All previous research on tiling has adopted this view. In particular, for every dependence edge z→ z′ in the original computation, there is a corresponding edge T (z)→ T (z′) in the transformed computation. In this paper, we explore an alternative view, called semantic tiling. It is first and foremost a tiling transformation, in the sense that we use a function T to map the original iterations to the transformed ones. However, it may not be true that the intermediate results computed by the transformed program are identical to those in the original. Alternatively, the transformation may make use of semantic properties of the computations in order to derive the tiled program. We illustrate our ideas with some examples from dense linear algebra, where “blocked” versions of the standard algorithms are well known in the mathematical literature. Consider the forward substitution problem. Let A be a n×n be a lower triangular matrix and b a vector of size n. The conventional program that solves the equation A.x = b uses the following steps: