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

Tags

Fields of Study

  • Computer science

Readers

  • Database Systems and Applications
  • Parallel and Distributed Computing.

Technology Areas

  • AI & ML
  • AI & ML - Machine Learning Algorithms
  • AI & ML - Neural Networks
  • Space
  • Space - Spacecraft Maneuvers