Title
Accelerating Lattice Boltzmann Applications with OpenACC
Abstract
An increasingly large number of HPC systems rely on heterogeneous architectures combining traditional multi-core CPUs with power efficient accelerators. Designing efficient applications for these systems has been troublesome in the past as accelerators could usually be programmed only using specific programming languages - such as CUDA - threatening maintainability, portability and correctness. Several new programming environments try to tackle this problem; among them OpenACC offers a high-level approach based on directives. In OpenACC, one annotates existing C, C++ or Fortran codes with compiler directive clauses to mark program regions to offload and run on accelerators and to identify available parallelism. This approach directly addresses code portability, leaving to compilers the support of each different accelerator, but one has to carefully assess the relative costs of potentially portable approach versus computing efficiency. In this paper we address precisely this issue, using as a test-bench a massively parallel Lattice Boltzmann code. We implement and optimize this multi-node code using OpenACC and OpenMPI. We also compare performance with that of the same algorithm written in CUDA, OpenCL and C for GPUs, Xeon-Phi and traditional multi-core CPUs, and characterize through an accurate time model its scaling behavior on a large cluster of GPUs.
Year
DOI
Venue
2015
10.1007/978-3-662-48096-0_47
Lecture Notes in Computer Science
Keywords
Field
DocType
OpenACC,OpenMPI,Lattice Boltzmann methods,Accelerator computing,Performance analysis
Massively parallel,CUDA,Computer science,Correctness,Parallel computing,Fortran,Directive,Compiler,Software portability,Maintainability
Conference
Volume
ISSN
Citations 
9233
0302-9743
2
PageRank 
References 
Authors
0.40
12
4
Name
Order
Citations
PageRank
Enrico Calore1508.63
Jiri Kraus2626.41
Sebastiano Fabio Schifano319128.37
Raffaele Tripiccione414520.46