{'fraction_non_alphanumeric': 0.019978969505783387, 'fraction_numerical': 0.0, 'mean_word_length': 5.56551724137931, '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}}
A Linear Algebraic View of Loop Transformations and Their Interaction

Although optimizing transformations have been studied for over two decades, the interactions between them is not well understood. This is particularly important for the success of parallelizing compilers. In order to deal with interactions, we view loop transformations as multiplication by a suitable matrix. The transformations considered are loop interchange, permutation, reversal, hyperplane (skew-ing), tiling and concurrentization. Since these transformations are realized as matrix products, this is easy to implement in a compiler. We show an example where loop interchange by itself is illegal but becomes legal when considered after loop reversal. We show that unimodular transformations are not suucient for minimizing communication volume arising from inter-tile communication in the case of tiling. We present several additional examples of the use of this approach.