{'fraction_non_alphanumeric': 0.021136063408190225, 'fraction_numerical': 0.0019815059445178335, 'mean_word_length': 5.286307053941909, '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}}
Transferring Data from High-Performance Simulations to Extreme Scale Analysis Applications in Real-Time

Extreme scale analytics often requires distributed memory algorithms in order to process the volume of data output by high performance simulations. Traditionally, these analysis routines post-process data saved to disk after a simulation has completed. However, concurrently executing both simulation and analysis can yield great benefits – reduce or eliminate disk I/O, increase output frequency to improve fidelity, and ultimately shorten time-to-discovery. One such method for concurrent simulation and analysis is in transit – transferring data from the resource running the simulation to a separate resource running the analysis. In transit analysis can be beneficial since computational resources may not have certain resources needed for analysis (e.g. GPUs) and to reduce the impact of performing analysis tasks to the run time of the simulation. The work described in this paper compares three techniques for transferring data between distributed memory applications: 1) writing data to and reading data from a parallel file system, 2) copying data into and out of a network-accessed shared memory pool, and 3) streaming data in parallel from the processes in the simulation application to the processes in the analysis application. Our results show that using a shared memory pool and streaming data over high-bandwidth networks can both drastically increase I/O speeds and lead to quicker analysis.