Affiliation:
1. University of Lugano, Lugano, Switzerland
2. University of Texas at Arlington, Arlington, TX, USA
Abstract
Recent advances have enabled GPUs to be used as general-purpose parallel processors on commodity hardware for little cost. However, the ability to program these devices has not kept up with their performance. The programming model for GPUs has a number of restrictions that make it difficult to program. For example, software running on the GPU cannot perform dynamic memory allocation, requiring the programmer to pre-allocate all memory the GPU might use. To achieve good performance, GPU programmers must also be aware of how data is moved between host and GPU memory and between the different levels of the GPU memory hierarchy.
We describe Firepile, a library for GPU programming in Scala. The library enables a subset of Scala to be executed on the GPU. Code trees can be created from run-time function values, which can then be analyzed and transformed to generate GPU code. A key property of this mechanism is that it is modular: unlike with other meta-programming constructs, the use of code trees need not be exposed in the library interface. Code trees are general and can be used by library writers in other application domains. Our experiments show Firepile users can achieve performance comparable to C code targeted to the GPU with shorter, simpler, and easier-to-understand code.
Publisher
Association for Computing Machinery (ACM)
Subject
Computer Graphics and Computer-Aided Design,Software
Reference34 articles.
1. Aparapi: Java API for expressing GPU bound data parallel algorithms. http://developer.amd.com/zones/java/aparapi/Pages/default.aspx 2011. Aparapi: Java API for expressing GPU bound data parallel algorithms. http://developer.amd.com/zones/java/aparapi/Pages/default.aspx 2011.
2. Lime
3. Brook for GPUs
4. Language virtualization for heterogeneous parallel computing
Cited by
2 articles.
订阅此论文施引文献
订阅此论文施引文献,注册后可以免费订阅5篇论文的施引文献,订阅后可以查看论文全部施引文献
1. Exploration of Supervised Machine Learning Techniques for Runtime Selection of CPU vs. GPU Execution in Java Programs;Accelerator Programming Using Directives;2018
2. Accelerating Habanero-Java programs with OpenCL generation;Proceedings of the 2013 International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools;2013-09-11