Hydrodynamic Computation with Hybrid Programming on CPU-GPU Clusters

TitleHydrodynamic Computation with Hybrid Programming on CPU-GPU Clusters
Publication TypeTech Report
Year of Publication2013
AuthorsDong, T., V. Dobrev, T. Kolev, R. Rieben, S. Tomov, and J. Dongarra
Technical Report Series TitleUniversity of Tennessee Computer Science Technical Report
Numberut-cs-13-714
Date Published07-2013
Abstract

The explosion of parallelism and heterogeneity in today’s computer architectures has created opportunities as well as challenges for redesigning legacy numerical software to harness the power of new hardware. In this paper we address the main challenges in redesigning BLAST { a numerical library that solves the equations of compressible hydrodynamics using high order nite element methods (FEM) in a moving Lagrangian frame { to support CPU-GPU clusters. We use a hybrid MPI + OpenMP + CUDA programming model that includes two layers: domain decomposed MPI parallelization and OpenMP + CUDA acceleration in a given domain. To optimize the code, we implemented custom linear algebra kernels and introduced an auto-tuning technique to deal with heterogeneity and load balancing at runtime. Our tests show that 12 Intel Xeon cores and two M2050 GPUs deliver a 24x speedup compared to a single core, and a 2.5x speedup compared to 12 MPI tasks in one node. Further, we achieve perfect weak scaling, demonstrated on a cluster with up to 64 GPUs in 32 nodes. Our choice of programming model and proposed solutions, as related to parallelism and load balancing, specifically targets high order FEM discretizations, and can be used equally successfully for applications beyond hydrodynamics. A major accomplishment is that we further establish the appeal of high order FEMs, which despite their better approximation properties, are often avoided due to their high computational cost. GPUs, as we show, have the potential to make them the method of choice, as the increased computational cost is also localized, e.g., cast as Level 3 BLAS, and thus can be done very efficiently (close to \free” relative to the usual overheads inherent in sparse computations).