{'fraction_non_alphanumeric': 0.013716525146962769, 'fraction_numerical': 0.003919007184846506, 'mean_word_length': 5.869955156950673, '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}}
Compiler directed architecture-dependent communication optimizations

Communication required for distributed data structures is one of the major overheads of parallelization. Poor communication performance limits the scalability of a given program, i.e. the number of processors that can effectively work on a problem. 
Differences in the architectures of different parallel systems affect how communication models perform on these systems. To minimize communication overheads, the parallel application should use the communication model that performs best on the target machine. For many systems, a static communication resource reservation model enables more efficient resource usage and improved communication performance. 
Data parallel compilers are well-suited to the task of selecting the appropriate communication model for the target architecture. With communication pattern analysis and architecture information, the compiler can optimize communication within each communication step and between communication steps. Knowledge of the target communication resources and all communication patterns enables the compiler to schedule use of limited resources and eliminate redundant control information. 
This thesis describes the implementation of a communication generation and optimization phase in the Fx compiler. The effect of these communication optimizations are evaluated on a suite of programs. Targeting alternative communication models can reduce communication time up to 50% and total execution time by 10 to 20%.