Abstract:
Nowadays, GPU accelerators are widely used in areas with large data-parallel computations such as scientific computations or neural networks. Programmers can either write code in low-level CUDA/OpenCL code or use a GPU extension for a high-level programming language for better productivity. Most extensions focus on statically-typed languages, but many programmers prefer dynamically-typed languages due to their simplicity and flexibility. This paper shows how programmers can write high-level modular code in Ikra, a Ruby extension for array-based GPU computing. Programmers can compose GPU programs of multiple reusable parallel sections, which are subsequently fused into a small number of GPU kernels. We propose a seamless syntax for separating code regions that extensively use dynamic language features from those that are compiled for efficient execution. Moreover, we propose symbolic execution and a program analysis for kernel fusion to achieve performance that is close to hand-written CUDA code.
Reference:
Modular Array-based GPU Computing in a Dynamically-typed Language (Matthias Springer, Wauligmann, Peter and Hidehiko Masuhara), In Proceedings of the 4th ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming (ARRAY2017), ACM, 2017.
Bibtex Entry:
@inproceedings{springer2017array,
author = {Matthias Springer and Wauligmann, Peter and Hidehiko Masuhara},
pdf = {array2017.pdf},
title = {Modular Array-based {GPU} Computing in a Dynamically-typed Language},
booktitle = {Proceedings of the 4th ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming (ARRAY2017)},
month = jun,
series = {ARRAY 2017},
year = {2017},
isbn = {978-1-4503-5069-3},
location = {Barcelona, Spain},
pages = {48--55},
numpages = {8},
url = {http://doi.acm.org/10.1145/3091966.3091974},
doi = {10.1145/3091966.3091974},
acmid = {3091974},
publisher = {ACM},
address = {New York, NY, USA},
keywords = {CUDA, GPGPU, Ruby, kernel fusion, Ikra},
date = {2017-06-18},
abstract = {Nowadays, GPU accelerators are widely used in areas with large data-parallel computations such as scientific computations or neural networks. Programmers can either write code in low-level CUDA/OpenCL code or use a GPU extension for a high-level programming language for better productivity. Most extensions focus on statically-typed languages, but many programmers prefer dynamically-typed languages due to their simplicity and flexibility.
This paper shows how programmers can write high-level modular code in Ikra, a Ruby extension for array-based GPU computing. Programmers can compose GPU programs of multiple reusable parallel sections, which are subsequently fused into a small number of GPU kernels. We propose a seamless syntax for separating code regions that extensively use dynamic language features from those that are compiled for efficient execution. Moreover, we propose symbolic execution and a program analysis for kernel fusion to achieve performance that is close to hand-written CUDA code.}
}