Abstract
This chapter shows how a directive-based model can make it possible for application scientists to "keep" their codes, accelerate them with reduced programming effort, and achieve performance equal to or better than that obtained using hand-written code and low-level programming interfaces. Specifically, this chapter covers programmers' experiences porting two commonly used algorithms-Feldkamp and stencil-on single and multiple GPUs along with multicore platforms. These algorithms are representative of computational patterns used in a variety of domains including computational fluid dynamics, PDE solvers, MRI imaging, and image processing for computed tomography among several others. Additional discussion explains how OpenMP, another widely utilized directive-based programming model, can co-exist with OpenACC thus creating a hybrid programming strategy to target and distribute the workload across multiple GPUs.At the end of this chapter the reader will have a basic understanding of: How to profile and gain a basic understanding of code characteristics for GPUs; How to compile an OpenACC code using relevant compilation flags and analyze the compilation information; How to incrementally improve an OpenACC code; How to use OpenMP with OpenACC in the same code; How to tune OpenACC code and provide relevant hints to achieve close to, or better performance than CUDA code.
| Original language | English |
|---|---|
| Title of host publication | Parallel Programming with OpenACC |
| Publisher | Elsevier Inc. |
| Pages | 147-166 |
| Number of pages | 20 |
| ISBN (Print) | 9780124103979 |
| DOIs | |
| State | Published - 2017 |
Keywords
- Accelerators
- Compiler optimizations
- Computed tomography
- Multicore
- MultiGPU
- OpenACC
- OpenMP
- Parallel programming
- Parallelization
- Stencil
Fingerprint
Dive into the research topics of 'Using OpenACC for stencil and Feldkamp algorithms'. Together they form a unique fingerprint.Cite this
- APA
- Author
- BIBTEX
- Harvard
- Standard
- RIS
- Vancouver