{'fraction_non_alphanumeric': 0.013972055888223553, 'fraction_numerical': 0.003992015968063872, 'mean_word_length': 5.555555555555555, '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 Set of Microbenchmarks for Measuring OpenMP Task Overheads

Asynchronous tasks make it easy to express the parallelism in a broad variety of computations and are especially useful for writing parallel applications with irregular and/or dynamic workloads. Their introduction into the OpenMP specification has greatly extended the scope of this API. Yet the body of benchmarks using OpenMP tasks remains minimal. The EPCC OpenMP Microbenchmarks provide measurements of overheads incurred by OpenMP constructs in version 2.0-compliant implementations. These microbenchmarks are widely used to explore the behavior of OpenMP constructs on a given platform. To thoroughly test an OpenMP 3.0 implementation, we have extended these microbenchmarks by twenty-one new microbenchmarks that measure overheads incurred by various common uses of OpenMP tasks, including task synchronization. We include evaluations of both commercial and open source implementations of OpenMP tasks on various multicore platforms.