NM - Numerical Methods

Projects for summer 2016

  1. Efficient discretization schemes for non-hydrostatic equations

    Non-hydrostatic (NH) models based on the Euler system of equations are used for high-resolution atmospheric modeling. Recently, element-based Galerkin method such as the discontinuous Galerkin (DG) is becoming increasingly popular for NH modeling due to its high-order accuracy, geometric flexibility and excellent parallel efficiency. A 2D prototype NH model based on DG method (DG-NH model) has been developed for the research purpose. This Euler solver (MPI parallel) has multiple time-stepping options, and used as a framework for testing new algorithms for the spatial and temporal discretization.

    The research topic of this summer internship would be to implement a computationally efficient version of the DG algorithm, which avoids integral formulation of the governing equations via a flux reconstruction (FR) procedure. The student intern will implement the new FR scheme in DG-NH model and test its computational efficiency and accuracy using a variety of benchmark tests.

    Skills/Qualification: This project is best suited to students at the graduate level. Internship candidates for this position Students should have strong background in numerical methods, solution techniques for partial differential equations with DG or finite-volume/element method. Excellent knowledge of Fortran 90/95 programming language is a requirement. Working knowledge of C/C++ and MPI programming are desirable.

    Back to top

  2. Implementation design parallel atmospheric PDE solvers using Radial Basis Functions on many-core CPUs and GPUs

    Numerical methods based on radial basis functions (RBFs) for solving partial differential equations (PDEs) are gaining in popularity because of their simplicity and their inherently “grid-free” nature. Good performance results have been demonstrated using RBF finite difference (RBF-FD) methods to solve the 2D shallow water equations on both CPU’s and GPU’s, despite the unstructured memory access patterns and large stencils sizes required by the method.

    The goals of this 2016 summer internship will focus on extending these 2D results to the 3D primitive equations of the atmosphere. The summer project could develop along one or more of the following three research axes, depending on the qualifications and interests of the successful student applicant(s): 1) focus on the optimization and/or parallelization of the 3D primitive equations on one or more many-core architectures; 2) focus on validating, evaluating, and improving the numerical results for standard test cases such as the Held-Suarez or Baroclinic Instability problem; 3) focus on exploring different RBF-based numerical strategies (such as comparing RBF’s based on Gaussian functions with those based on polyharmonic splines) to efficiently implement RBF-based PDE solvers on the sphere or in limited-area domains for climate and weather problems.

    In the case of option 1), the project would focus on achieving good performance on novel architectures, such as the latest Intel Xeon/Xeon Phi processors or NVIDIA GPUs. Beginning with an RBF kernel for the primitive equations on CPUs, the three key software design issues to tackle would be: a) developing an optimal GPU and Xeon Phi implementation of the primitive equations; creating the multi-card/multi-node distributed memory implementation that minimizes the communication overhead, possibly using techniques such as overlapping communication and computation; b) benchmarking and optimizing the node performance through application profiling; and c) understanding the techniques and prospects for achieving performance portability between CPUs and GPUs in a single code base. The student intern will explore, implement and gather profiled measurements for the different strategies involved, and select an optimal strategy for testing scalability. The student will present results along with their analysis at the conclusion of the project.

    Skills/Qualifications: Strong programming skills in Matlab, and either of the following languages C, C++ or Fortran are required. Familiarity with techniques for solving PDEs numerically (and with RBFs is desirable); Familiarity with at least one parallel programming paradigm, such as message passing interface (MPI), thread parallelization using pragmas, or the SIMD programming (e.g. with CUDA or OpenCL) is required.

    Back to top