Nothing Special   »   [go: up one dir, main page]

skip to main content
10.1145/2627373.2627381acmconferencesArticle/Chapter ViewAbstractPublication PagespldiConference Proceedingsconference-collections
tutorial

A Composable Array Function Interface for Heterogeneous Computing in Java

Published: 09 June 2014 Publication History

Abstract

Heterogeneous computing has now become mainstream with virtually every desktop machines featuring accelerators such as Graphics Processing Units (GPUs). While heterogeneity offers the promise of high-performance and high-efficiency, it comes at the cost of huge programming difficulties. Languages and interfaces for programming such system tend to be low-level and require expert knowledge of the hardware in order to achieve its potential.
A promising approach for programming such heterogeneous systems is the use of array programming. This style of programming relies on well known parallel patterns that can be easily translated into GPU or other accelerator code. However, only little work has been done on integrating such concepts in mainstream languages such as Java.
In this work, we propose a new Array Function interface implemented with the new features from Java 8. While similar in spirit to the new Stream API of Java, our API follows a different design based on reusability and composability. We demonstrate that this API can be used to generate OpenCL code for a simple application. We present encouraging preliminary performance results showing the potential of our approach.

References

[1]
Aparapi. https://code.google.com/p/aparapi/.
[2]
Project Sumatra. http://openjdk.java.net/projects/sumatra/.
[3]
B. Catanzaro, M. Garland, and K. Keutzer. Copperhead: Compiling an embedded data parallel language. In Proceedings of the 16th ACM Symposium on Principles and Practice of Parallel Programming, PPoPP '11, pages 47--56, New York, NY, USA, 2011. ACM.
[4]
M. M. T. Chakravarty, G. Keller, S. Lee, T. L. McDonell, and V. Grover. Accelerating haskell array codes with multicore gpus. In Proceedings of the POPL 2011 Workshop on Declarative Aspects of Multicore Programming, pages 3--14, 2011.
[5]
A. Collins, D. Grewe, V. Grover, S. Lee, and A. Susnea. NOVA: A functional language for data parallelism. Nvidia, 2013. Technical Report.
[6]
CUDA. Nvidia CUDA. http://developer.nvidia.com/.
[7]
C. Dubach, P. Cheng, R. Rabbah, D. F. Bacon, and S. J. Fink. Compiling a high-level language for gpus: (via language support for architectures and compilers). In Proceedings of the 33rd ACM SIGPLAN Conference on Programming Language Design and Implementation, PLDI '12, pages 1--12, New York, NY, USA, 2012. ACM.
[8]
G. Duboscq, T. Würthinger, L. Stadler, C. Wimmer, D. Simon, and H. Mössenböck. Graal ir: An intermediate representation for speculative optimizations in a dynamic compiler. In Proceedings of the 7th ACM Workshop on Virtual Machines and Intermediate Languages, VMIL '13, pages 1--10, New York, NY, USA, 2013. ACM.
[9]
J. Guo, W. Rodrigues, J. Thiyagalingam, F. Guyomarc'h, P. Boulet, and S.-B. Scholz. Harnessing the power of GPUs without losing abstractions in SAC and ArrayOL: A comparative study. In Proceedings of the IPDPS 2011 Workshop on High-Level Parallel Programming Models and Supportive Environments, pages 1183--1190, 2011.
[10]
S. Herhut, R. L. Hudson, T. Shpeisman, and J. Sreeram. River trail: A path to parallelism in javascript. In Proceedings of the 2013 ACM SIGPLAN International Conference on Object Oriented Programming Systems Languages & Applications, OOPSLA '13, pages 729--744, New York, NY, USA, 2013. ACM. ISBN 978-1-4503-2374-1. URL http://doi.acm.org/10.1145/2509136.2509516.
[11]
J. Hoberock and N. Bell. Thrust: A parallel template library. http://developer.nvidia.com/thrust.
[12]
JOCL. Java bindings for OpenCL. http://www.jocl.org/.
[13]
R. Lämmel. Google's MapReduce programming model -- revisited. Science of Computer Programming, 70(1):1--30, 2008.
[14]
D. Lea. The java.util.concurrent synchronizer framework. Sci. Comput. Program., 58(3):293--309, Dec. 2005. ISSN 0167-6423. URL http://dx.doi.org/10.1016/j.scico.2005.03.007.
[15]
M. McCool, A. D. Robison, and J. Reinders. Structured Parallel Programming. Morgan Kaufmann, 2012.
[16]
F. Mueller and Y. Zhang. Hidp: A hierarchical data parallel language. In Proceedings of the 2013 IEEE/ACM International Symposium on Code Generation and Optimization (CGO), CGO '13, pages 1--11, Washington, DC, USA, 2013. IEEE Computer Society.
[17]
OpenACC. OpenACC. http://www.openacc-standard.org/.
[18]
OpenCL. Opencl. http://www.khronos.org/opencl/.
[19]
P. C. Pratt-Szeliga, J. W. Fawcett, and R. D. Welch. Rootbeer: Seamlessly using GPUs from java. In G. Min, J. Hu, L. C. Liu, L. T. Yang, S. Seelam, and L. Lefevre, editors, HPCC-ICESS, 2012.
[20]
M. Steuwer and S. Gorlatch. SkelCL: Enhancing OpenCL for high-level programming of multi-GPU systems. In Parallel Computing Technologies, volume 7979 of Lecture Notes in Computer Science, pages 258--272. Springer, 2013.
[21]
W. Thies and S. Amarasinghe. An empirical characterization of stream programs and its implications for language and compiler design. In Proceedings of the 19th international conference on Parallel architectures and compilation techniques, PACT '10, pages 365--376, New York, NY, USA, 2010. ACM.

Cited By

View all
  • (2018)Using compiler snippets to exploit parallelism on heterogeneous hardware: a Java reduction case studyProceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3281287.3281292(16-25)Online publication date: 4-Nov-2018
  • (2018)Exploiting high-performance heterogeneous hardware for Java programs using graalProceedings of the 15th International Conference on Managed Languages & Runtimes10.1145/3237009.3237016(1-13)Online publication date: 12-Sep-2018
  • (2018)Towards practical heterogeneous virtual machinesCompanion Proceedings of the 2nd International Conference on the Art, Science, and Engineering of Programming10.1145/3191697.3191730(46-48)Online publication date: 9-Apr-2018
  • Show More Cited By

Index Terms

  1. A Composable Array Function Interface for Heterogeneous Computing in Java

      Recommendations

      Comments

      Please enable JavaScript to view thecomments powered by Disqus.

      Information & Contributors

      Information

      Published In

      cover image ACM Conferences
      ARRAY'14: Proceedings of ACM SIGPLAN International Workshop on Libraries, Languages, and Compilers for Array Programming
      June 2014
      112 pages
      ISBN:9781450329378
      DOI:10.1145/2627373
      Permission to make digital or hard copies of all or part of this work for personal or classroom use is granted without fee provided that copies are not made or distributed for profit or commercial advantage and that copies bear this notice and the full citation on the first page. Copyrights for components of this work owned by others than the author(s) must be honored. Abstracting with credit is permitted. To copy otherwise, or republish, to post on servers or to redistribute to lists, requires prior specific permission and/or a fee. Request permissions from [email protected].

      Sponsors

      Publisher

      Association for Computing Machinery

      New York, NY, United States

      Publication History

      Published: 09 June 2014

      Permissions

      Request permissions for this article.

      Check for updates

      Author Tags

      1. Array programming
      2. GPGPU
      3. Patterns

      Qualifiers

      • Tutorial
      • Research
      • Refereed limited

      Conference

      PLDI '14
      Sponsor:

      Acceptance Rates

      ARRAY'14 Paper Acceptance Rate 17 of 25 submissions, 68%;
      Overall Acceptance Rate 17 of 25 submissions, 68%

      Contributors

      Other Metrics

      Bibliometrics & Citations

      Bibliometrics

      Article Metrics

      • Downloads (Last 12 months)3
      • Downloads (Last 6 weeks)0
      Reflects downloads up to 18 Nov 2024

      Other Metrics

      Citations

      Cited By

      View all
      • (2018)Using compiler snippets to exploit parallelism on heterogeneous hardware: a Java reduction case studyProceedings of the 10th ACM SIGPLAN International Workshop on Virtual Machines and Intermediate Languages10.1145/3281287.3281292(16-25)Online publication date: 4-Nov-2018
      • (2018)Exploiting high-performance heterogeneous hardware for Java programs using graalProceedings of the 15th International Conference on Managed Languages & Runtimes10.1145/3237009.3237016(1-13)Online publication date: 12-Sep-2018
      • (2018)Towards practical heterogeneous virtual machinesCompanion Proceedings of the 2nd International Conference on the Art, Science, and Engineering of Programming10.1145/3191697.3191730(46-48)Online publication date: 9-Apr-2018
      • (2018)Challenges and Proposals for Enabling Dynamic Heterogeneous Execution of Big Data Frameworks2018 IEEE International Conference on Cloud Computing Technology and Science (CloudCom)10.1109/CloudCom2018.2018.00070(335-341)Online publication date: Dec-2018
      • (2017)Heterogeneous Managed Runtime SystemsACM SIGPLAN Notices10.1145/3140607.305076452:7(74-82)Online publication date: 8-Apr-2017
      • (2017)Just-In-Time GPU Compilation for Interpreted Languages with Partial EvaluationACM SIGPLAN Notices10.1145/3140607.305076152:7(60-73)Online publication date: 8-Apr-2017
      • (2017)Heterogeneous Managed Runtime SystemsProceedings of the 13th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments10.1145/3050748.3050764(74-82)Online publication date: 8-Apr-2017
      • (2017)Just-In-Time GPU Compilation for Interpreted Languages with Partial EvaluationProceedings of the 13th ACM SIGPLAN/SIGOPS International Conference on Virtual Execution Environments10.1145/3050748.3050761(60-73)Online publication date: 8-Apr-2017
      • (2017)Boosting Java Performance Using GPGPUsArchitecture of Computing Systems - ARCS 201710.1007/978-3-319-54999-6_5(59-70)Online publication date: 4-Mar-2017
      • (2015)Machine-Learning-based Performance Heuristics for Runtime CPU/GPU SelectionProceedings of the Principles and Practices of Programming on The Java Platform10.1145/2807426.2807429(27-36)Online publication date: 8-Sep-2015
      • Show More Cited By

      View Options

      Login options

      View options

      PDF

      View or Download as a PDF file.

      PDF

      eReader

      View online with eReader.

      eReader

      Media

      Figures

      Other

      Tables

      Share

      Share

      Share this Publication link

      Share on social media