High Performance Numerical Simulations To Support System Level Design
Carl, Joshua David
Cyber-physical systems (CPS) represent a class of complex engineered systems where functionality and behavior emerge through the interaction between the computational and physical domains. Simulation provides design engineers with quick and accurate feedback on the behaviors generated by their designs, and, therefore, their correctness. Most modern engineering design workstations use multi-core CPUs that can typically support 8 to 12 parallel computational threads. Furthermore, the CPU is designed to share data across all the computational threads, making a multi-core processor a flexible parallel processing system. These multi-core CPUs also have a multi-layer cache that must be carefully considered when designing parallel software to avoid cache conflicts between the different threads. Unfortunately, most modern simulation environments execute system simulations on a single thread, which does not take full advantage of the processing power available on a modern CPU and for large, complex, CPSs these simulations can take a very long time to complete. This thesis investigates methods to partition and simulate differential equation-based models of cyber-physical systems using multiple threads on a modern multi-core CPU. We describe model partitioning methods using fixed step and variable step numerical integration methods. Our methods consider the multi-layer cache structure of modern multi-core CPUs to avoid simulation performance degradation due to cache conflicts. We study the effectiveness of each parallel simulation algorithm by calculating the relative speedup compared to a serial simulation applied to a series of large electric circuit models (up to 1000 state variables). We also applied our parallel simulation algorithms to NASA’s Water Recovery System as a case study. Our parallel simulation algorithms produced a maximum speedup of 2.5 to 5.2 times the serial simulation, for models without algebraic loops, and a maximum speedup of 3.3 for models with algebraic loops. We also develop a series of guidelines for maximizing performance when developing parallel simulation software intended for use on multi-core CPUs.