Object Support in an Array-based GPGPU Extension for Ruby (bibtex)
by Matthias Springer and Hidehiko Masuhara
Abstract:
This paper presents implementation and optimization techniques to support objects in Ikra, an array-based parallel extension to Ruby with dynamic compilation. The high-level goal of Ikra is to allow developers to exploit GPU-based high-performance computing without paying much attention to intricate details of the underlying GPU infrastructure and CUDA. Ikra supports dynamically-typed object-oriented programming in Ruby and performs a number of optimizations. It supports parallel operations (e.g., map, each) on arrays of polymorphic objects, allowing polymorphic method calls inside a kernel by compiling them to conditional branches. To reduce branch divergence, Ikra shuffles thread assignments to base array elements based on runtime types of elements. To facilitate memory coalescing, Ikra stores objects in a structure-of-arrays (SoA) representation (columnar object layout). To eliminate intermediate data in global memory, Ikra merges cascaded parallel sections into one kernel using symbolic execution.
Reference:
Object Support in an Array-based GPGPU Extension for Ruby (Matthias Springer and Hidehiko Masuhara), In Proceedings of the 3rd ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming, ACM, 2016.
Bibtex Entry:
@inproceedings{springer2016array,
  author = {Matthias Springer and Hidehiko Masuhara},
  title = {Object Support in an Array-based {GPGPU} Extension for {Ruby}},
  booktitle = {Proceedings of the 3rd ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming},
  series = {ARRAY 2016},
  year = 2016,
  date = {2016-06-14},
  month = jun,
  isbn = {978-1-4503-4384-8},
  location = {Santa Barbara, CA, USA},
  pages = {25--31},
  numpages = 7,
  opturl = {http://doi.acm.org/10.1145/2935323.2935327},
  doi = {10.1145/2935323.2935327},
  acmid = 2935327,
  publisher = {ACM},
  address = {New York, NY, USA},
  keywords = {CUDA, GPGPU, Ruby, Object-Oriented Programming},
  pdf = {array2016.pdf},
  abstract = {This paper presents implementation and optimization techniques to support objects in Ikra, an array-based parallel extension to Ruby with dynamic compilation. The high-level goal of Ikra is to allow developers to exploit GPU-based high-performance computing without paying much attention to intricate details of the underlying GPU infrastructure and CUDA.

Ikra supports dynamically-typed object-oriented programming in Ruby and performs a number of optimizations. It supports parallel operations (e.g., map, each) on arrays of polymorphic objects, allowing polymorphic method calls inside a kernel by compiling them to conditional branches. To reduce branch divergence, Ikra shuffles thread assignments to base array elements based on runtime types of elements. To facilitate memory coalescing, Ikra stores objects in a structure-of-arrays (SoA) representation (columnar object layout). To eliminate intermediate data in global memory, Ikra merges cascaded parallel sections into one kernel using symbolic execution.}
}
Powered by bibtexbrowser