A collection-oriented programming model for performance portability
Abstract
This paper describes Surge, a collection-oriented programming model that enables programmers to compose parallel computations using nested high-level data collections and operators. Surge exposes a code generation interface, decoupled from the core computation, that enables programmers and autotuners to easily generate multiple implementations of the same computation on various parallel architectures such as multi-core CPUs and GPUs. By decoupling computations from architecture-specific implementation, programmers can target multiple architectures more easily, and generate a search space that facilitates optimization and customization for specific architectures. We express in Surge four real-world benchmarks from domains such as sparse linear-algebra and machine learning and from the same performance-portable specification, generate OpenMP and CUDA C++ implementations. Surge generates efficient, scalable code which achieves up to 1.32x speedup over handcrafted, well-optimized CUDA code.
Document Details
- Document Type
- Pub Defense Publication
- Publication Date
- Jan 24, 2015
- Source ID
- 10.1145/2858788.2688537
Entities
People
- Albert Sidelnik
- Bryan Catanzaro
- Mary Hall
- Michael Garland
- Saurav Muralidharan
Organizations
- Defense Advanced Research Projects Agency
- Nvidia
- University of Utah