{'fraction_non_alphanumeric': 0.01555352241537054, 'fraction_numerical': 0.0, 'mean_word_length': 5.924050632911392, '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}}
Portability and Performance: Mentat Applications on Diverse Architectures

Parallel programs are complex, especially when the communication, synchronization, and scheduling issues must be managed by the programmer. Considerable amounts of time and effort are put into developing a parallel program for a particular application, yet once written for one architecture, it may be prohibitively difficult to port the code to another architecture. Mentat is an object-oriented parallel processing system designed for the development of parallel programs where the underlying architecture is an abstraction. Mentat masks the complex aspects of communication, synchronization, and scheduling from the programmer. This facilitates both ease of use and portability. Here we present several applications that have been implemented within the Mentat environment running on three different platforms. For each application we describe the major aspects of its implementation within Mentat, and present performance comparisons of the Mentat implementation against a serial implementation of the application.