Jayaraj, Jagan2013-10-172013-10-172013-08https://hdl.handle.net/11299/158483University of Minnesota Ph.D. dissertation. August 2013. Major: Computer science. Advisors: Prof. Pen-Chung Yew and Prof. Paul R. Woodward. 1 computer file (PDF); viii, 149 pages, appendix A.Computational Fluid Dynamics is an important area in scientific computing. The weak scaling of codes is well understood with about two decades of experience using MPI. The recent proliferation of multi- and many-core processors have made the modern nodes compute rich, and the per-node performance has become very crucial for the overall machine performance. However, despite the use of thread programming, obtaining good performance at each core is extremely challenging. The challenges are primarily due to memory bandwidth limitations and difficulties in using the short SIMD engines effectively. This thesis is about the techniques, strategies, and a tool, to improve the in-core performance. Fundamental to the strategy is a hierarchical data layout made of small cubical structures of the problem state called the briquettes. The difficulties in computing the spatial derivatives (also called near neighbor computations in the literature) in a hierarchical data layout are well known, and data blocking is extremely unusual in finite difference codes. This work details how to simplify programming for the new data layout, the inefficiencies of the programming strategy, and how to overcome the inefficiencies.The transformation to eliminate the overheads is called pipeline-for-reuse. It is followed by a storage optimization called maximal array contraction. Both pipeline-for-reuse and maximal array contraction are highly tedious and error-prone. Therefore, we built a source-to-source translator called CFD Builder to automate the transformations using directives. The directive based approach we adopted to enable the transformations eliminates the need for complex analysis, and this work provides the linear time algorithms to perform the transformations under the stated assumptions. The benefits of the briquettes and CFD Builder are demonstrated individually with three different applications on two different architectures and two different compilers. We see up to 6.92x performance improvement with applying both the techniques. This strategy with briquettes and CFD Builder was evaluated against commonly known transformations for data locality and vectorization. Briquettes and pipeline-for-reuse transformations to eliminate the overheads outperforms even the best combination of canonical transformations, for data locality and vectorization, applied manually by up to 2.15xen-USCompilerComputational Fluid DynamicsData blockingDirectivesHigh PerformanceSource-to-sourceA strategy for high performance in computational fluid dynamicsThesis or Dissertation