{'fraction_non_alphanumeric': 0.021488871834228703, 'fraction_numerical': 0.0, 'mean_word_length': 5.487562189054726, '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}}
Code Optimizations for Complex Microprocessors Applied to CFD Software

Improving large scale, time-dependent numerical simulation of the Navier--Stokes equations is critical for the future of computational fluid dynamics (CFD) in engineering applications. Unfortunately, these computations require massive, and generally expensive, computing resources. With the continuing advances in commodity computer hardware, an alternative approach to computationally expensive CFD computations is emerging in the form of PC clusters. However, to take advantage of clusters most CFD programs require extensive modifications so that they run efficiently on cache-based microprocessor systems. This paper presents techniques and tools that we have developed and used to optimize Navier--Stokes solvers on a single node of a PC cluster through the example CFD code DNSTool. After describing DNSTool, the paper demonstrates how this code is tuned to improve performance through profiling the computational cost of each of the subroutines, adapting the code for cache-based memory systems, and including SWAR (SIMD within a register) based routines. The effect of these improvements is to halve the computational cost on a single node, which in turn significantly increases the performance of the code on a PC cluster.