{'fraction_non_alphanumeric': 0.022518765638031693, 'fraction_numerical': 0.005838198498748957, 'mean_word_length': 5.282722513089006, '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}}
ArTA: Adaptive Granularity in Transactional Applications

Software Transactional Memory (STM) is a programming paradigm which simplifies parallel programming for multi-core processors. A key requirement in STMs is the mechanism to track memory accesses and detect conflicts among speculative transactions. Current STMs exploit a fixed-size tracking scheme to detect conflicts, i.e. at the word level. However, the choice of access granularity significantly affects the performance of STMs. While a coarse-grained access tracking increases false conflicts a fine-grained scheme may increase overhead of STMs due to the cost of lock acquisitions. In order to mitigate the disadvantages of a fixed-size access tracking, we propose adaptive granularity in transactional applications (ArTA) to change the granularity of STMs dynamically and in runtime. ArTA is a speculative approach and relies on history of transactions to select access granularity for shared data structures. We have incorporated ArTA into TL2 and compared the performance of the new implementation with the original STM using Stamp v0.9.10 benchmark suite. Our results reveal that ArTA improves performance of applications up to 42%.