{'fraction_non_alphanumeric': 0.0327683615819209, 'fraction_numerical': 0.0011299435028248588, 'mean_word_length': 5.559259259259259, '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}}
Parallel computing: thoughts following a four-year tour of academic outreach

We still wrestle these questions today. To provide context, let’s do a quick review of the situation.CPU architectures had reached a variety of limits on design features, which had served so well through earlier periods. Strategies such as instruction-level parallelism, out-of-order execution, caches, and especially frequency scaling (and thus power considerations) had all reached levels where further progress had reached either an outright wall (power) or plateaus of diminishing return. Yet, transistor budgets continued (and still continue) their relentless exponential march of Moore’s-law doublings. So, what are we to do with this bounty? The software performance ramp had stalled, and application performance was no longer realizing a “Moore’s dividend” [19]. How could we restore this ramp? The most obvious idea was to replicate the core execution units, and push the responsibility for application performance back to the software community. Alternatively, as I sometimes explained to my software developer friends, the hardware side of the industry has perpetrated a practical joke on their software counterparts, sliding the sequential-model rug out from under halfcentury of software design. Expertise in parallel computing long preceded this multicore shift, of course. Those with acute performance requirements modelers for purposes scientific, financial, seismic, computer-generated imagery (CGI) animation and more – were already steeped in the lore, successfully employing parallel computation as normal part of work. What was new was the leap of faith: for domains beyond traditional high performance computing (HPC), would this potentially new performance even matter?