{'fraction_non_alphanumeric': 0.010891763104152484, 'fraction_numerical': 0.0013614703880190605, 'mean_word_length': 5.533333333333333, '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}}
Realizing energy-efficient thread affinity configurations with supervised learning

The affinity with which each thread executes can significantly impact both the execution time and power consumption of parallel applications. Finding an optimal mapping of threads to cores is a considerable challenge as it requires runtime tracking and analysis of many interacting system elements. As we head towards the exascale era, and gear up for HPC systems consisting of a billion heterogeneous cores, the problem of thread affinity will not only grow in important but also become more complex, potentially making it infeasible to develop effective mapping heuristics through manual effort. This paper presents a strategy for automatically deriving heuristics for making judicious decisions for thread mapping and migration. At the heart of the system is a collection of machine learning models that are trained to learn workload behavior under different execution environments. Hardware performance counters are used extensively to collect a wide array of attributes that describe different aspects of workload characteristics. These attributes are then distilled to the most salient features using a series of feature selection techniques. Experimental results on a set of contemporary parallel workloads on three Intel-based platforms, show that on average, our system can achieve a 32% improvement in both power and performance over policies implemented in the Linux kernel.