{'fraction_non_alphanumeric': 0.01694915254237288, 'fraction_numerical': 0.001784121320249777, 'mean_word_length': 5.198895027624309, '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}}
Experiences in Tuning Performance of Hybrid MPI / OpenMP Applications on Quad-core Systems

The Hybrid method of parallelization (using MPI for internode communication and OpenMP for intra-node communication) seems a natural fit for the way most clusters are built today. It is generally expected to help programs run faster due to factors like availability of greater bandwidth for intra-node communication. However, optimizing hybrid applications for maximum speedup is difficult primarily due to inadequate transparency provided by the OpenMP constructs and also due to the dependence of the resulting speedup on the combination in which MPI and OpenMP is used. In this paper we mention some of our experiences in trying to optimize applications built using MPI and OpenMP. More specifically, we talk about the different techniques that could be helpful to other researchers working on hybrid applications. To demonstrate the usefulness of these optimizations, we provide results from optimizing a few typical scientific applications. Using these optimizations, one hybrid code ran up to 34% faster than pure-MPI code.