OpenMP is a relatively new programming paradigm, which can easily deliver good parallel performance for small numbers (<16) of processors. Success with more processors is more difficult to produce. MPI is a relatively mature programming paradigm, and there have been many reports of highly-scalable MPI codes for large numbers (hundreds, even thousands) of processors. In this paper, we explore the causes of poor scalability with OpenMP from two points of view. First, we incrementally transform the loops in a combustion application until we achieve reasonably good parallel scalability, and chronicle the effect of each step. Then, we approach scalability from the other direction by transforming a highly scalable program simulating the core flow of a solid fuel rocket engine (originally written with MPI calls), directly to OpenMP, and report the barriers to scalability that were detected. The list of incremental transformations includes well-known techniques such as loop interchange and loop fusion, plus new ones which make use of the unique features of OpenMP, such as barrier removal and the use of ordered serial loops. The list of barriers to scalability includes the use of the ALLOCATE statement within a parallel region, as well as the lack of a reduction clause for a PARALLEL region in OpenMP. We conclude with a list of key issues which need to be addressed to make OpenMP a more easily scalable paradigm. Some of these are OpenMP implementation issues; some are language issues.
We describe simulations of solid rocket motors that involve coupling between the core fluid flow, the structural response of the propellant and case, and the combustion of the propellant. A partitioned predictorcorrector algorithm is employed to treat the fluidstructure interaction. The combustion rate of the propellant is coupled to the fluid flow via an empirical power law relationship. Our algorithm couples the physical processes involved using a partitioned approach, enabling us to use existing codes to perform the bulk of our simulations. We give special consideration to the jump conditions that hold at the fluid-structure-combustion interface, and specialize them for the early burn phase. The interface between the eroding solid and the fluid is treated using an ALE formulation, which provides a consistent technique for handling the eroding solid. Data are presented that demonstrate the parallel performance of our code on a variety of architectures. Results from simulations of the space shuttle solid rocket motor demonstrate the applicability of our approach. Future extensions of the simulation capability to include thermal effects, turbulence and material failure will be discussed.
scite is a Brooklyn-based organization that helps researchers better discover and understand research articles through Smart Citations–citations that display the context of the citation and describe whether the article provides supporting or contrasting evidence. scite is used by students and researchers from around the world and is funded in part by the National Science Foundation and the National Institute on Drug Abuse of the National Institutes of Health.