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

skip to main content
10.1145/2824815.2824820acmconferencesArticle/Chapter ViewAbstractPublication PagessplashConference Proceedingsconference-collections
research-article

Manyfold actors: extending the C++ actor framework to heterogeneous many-core machines using OpenCL

Published: 26 October 2015 Publication History

Abstract

The processing power of modern many core hardware such as graphics processing units (GPUs) or coprocessors is increasingly available for general-purpose computation. The seamless way of actor systems to addresses concurrent and distributed programming makes it an attractive approach to integrate these novel architectures. In this work, we introduce OpenCL-enabled actors to the C++ Actor Framework (CAF). This offers a high level interface for accessing any OpenCL device without leaving the actor paradigm. The new type of actor is integrated into the runtime environment of CAF and gives rise to transparent message passing in distributed systems on heterogeneous hardware. New actors are instantiated by the function spawn_cl, while the runtime environment handles the discovery and setup of OpenCL devices in the background. Our evaluations on a commodity GPU, an Nvidia TESLA, and an Intel PHI reveal the expected linear scaling behavior when offloading larger work items. For sub-second duties, the efficiency of offloading was found to largely differ between devices. Moreover, our findings indicate a negligible overhead over programming the native OpenCL API.

References

[1]
G. Agha. Actors: A Model of Concurrent Computation In Distributed Systems. Technical Report 844, MIT, Cambridge, MA, USA, 1986.
[2]
G. Agha, I. A. Mason, S. Smith, and C. Talcott. Towards a Theory of Actor Computation. In Proceedings of CONCUR, volume 630 of LNCS, pages 565–579, Heidelberg, 1992. Springer-Verlag.
[3]
AMD. Aparapi. http://aparapi.github.io, 2015.
[4]
J. Armstrong. Making Reliable Distributed Systems in the Presence of Software Errors. PhD thesis, Department of Microelectronics and Information Technology, KTH, Sweden, 2003.
[5]
J. Armstrong. A History of Erlang. In Proceedings of the third ACM SIGPLAN conference on History of programming languages (HOPL III), pages 6–1–6–26, New York, NY, USA, 2007. ACM.
[6]
D. Blythe. The Direct3D 10 System. In ACM SIGGRAPH 2006 Papers, SIGGRAPH ’06, pages 724–734, New York, NY, USA, 2006. ACM.
[7]
CAPS. Cray Inc., NVIDIA and the Portland Group. The OpenACC Application Programming Interface, v1.0, November 2011.
[8]
D. Charousset, R. Hiesgen, and T. C. Schmidt. CAF - The C++ Actor Framework for Scalable and Resource-efficient Applications. In Proc. of the 5th ACM SIGPLAN Conf. on Systems, Programming, and Applications (SPLASH ’14), Workshop AGERE!, New York, NY, USA, Oct. 2014. ACM.
[9]
L. Dagum and R. Menon. OpenMP: an industry standard API for shared-memory programming. Computational Science and Engineering, IEEE, 5(1):46–55, 1998.
[10]
T. Desell and C. A. Varela. SALSA Lite: A Hash-Based Actor Runtime for Efficient Local Concurrency. In G. Agha, A. Igarashi, N. Kobayashi, H. Masuhara, S. Matsuoka, E. Shibayama, and K. Taura, editors, Concurrent Objects and Beyond, volume 8665 of Lecture Notes in Computer Science, pages 144–166. Springer Berlin Heidelberg, 2014. ISBN 978- 3-662-44470-2.
[11]
J. Fang, A. L. Varbanescu, and H. Sips. A Comprehensive Performance Comparison of CUDA and OpenCL. In Parallel Processing (ICPP), pages 216–225, 2011.
[12]
P. Harvey, K. Hentschel, and J. Sventek. Parallel Programming in Actor-Based Applications via OpenCL. In The 16th International Conference on Middleware, New York, NY, USA, Dec. 2015. ACM.
[13]
C. Hewitt, P. Bishop, and R. Steiger. A Universal Modular ACTOR Formalism for Artificial Intelligence. In Proceedings of the 3rd IJCAI, pages 235–245, San Francisco, CA, USA, 1973. Morgan Kaufmann Publishers Inc.
[14]
Intel. Intel Xeon PhiTM Coprocessor x100 Product Family Datasheet. http://www.intel.com/content/www/us/en/processors/xeon/xeonphi-coprocessor-datasheet.html, April 2015.
[15]
L. V. Kale and S. Krishnan. Charm++: Parallel programming with message-driven objects. Parallel Programming using C++, pages 175–213, 1996.
[16]
D. B. Kirk and W.-m. W. Hwu. Programming Massively Parallel Processors, A Hands-on Approach. Morgan Kaufmann, second edition, 2013.
[17]
A. Klöckner, N. Pinto, Y. Lee, B. Catanzaro, P. Ivanov, and A. Fasih. PyCUDA and PyOpenCL: A Scripting-Based Approach to GPU Run-Time Code Generation. Parallel Computing, 38(3):157–174, 2012.
[18]
S. J. Krieder, J. M. Wozniak, T. Armstrong, M. Wilde, D. S. Katz, B. Grimmer, I. T. Foster, and I. Raicu. Design and Evaluation of the Gemtc Framework for GPU-enabled Manytask Computing. In Proceedings of the 23rd International Symposium on High-performance Parallel and Distributed Computing, HPDC ’14, pages 153–164, New York, NY, USA, 2014. ACM. ISBN 978-1-4503-2749-7.
[19]
Lee Howes and Maria Rovatsou. SYCL integrates OpenCL devices with modern C++. Khronos Group, 2015.
[20]
E. Lindholm, M. J. Kilgard, and H. Moreton. A User-Programmable Vertex Engine. In Proceedings of the 28th Annual Conference on Computer Graphics and Interactive Techniques, SIGGRAPH ’01, pages 149–158, New York, NY, USA, 2001. ACM.
[21]
D. S. Medina, A. St-Cyr, and T. Warburton. OCCA: A unified approach to multi-threading languages. ArXiv e-prints, March 2014.
[22]
A. Munshi. The OpenCL Specification. Khronos OpenCL Working Group, Khronos Group, 2012. URL http://www.khronos.org/registry/cl/specs/ opencl-1.2.pdf,(13.09.2013). Version 1.2, Revision 19.
[23]
J. Nickolls and W. J. Dally. The GPU Computing Era. IEEE Micro, 30(2):56–69, 2010.
[24]
NVIDIA. Tesla C2075 Computing Processor Board (Board Specification), September 2011.
[25]
OpenACC-standard.org. The OpenACC Application Programming Interface, 2013.
[26]
J. D. Owens, M. Houston, D. Luebke, S. Green, J. E. Stone, and J. C. Phillips. GPU Computing. Proceedings of the IEEE, 96(5):879–899, 2008.
[27]
M. Scarpino. OpenCL in Action: How to Accelerate Graphics and Computation. Manning Publications Company, Manning Publication Co., 20 Baldwin Road, Shelter Island, NY 11964, 2011.
[28]
S. Srinivasan and A. Mycroft. Kilim: Isolation-Typed Actors for Java. In Proceedings of the 22nd ECOOP, volume 5142 of LNCS, pages 104–128, Berlin, Heidelberg, 2008. Springer-Verlag.
[29]
The Khronos Group. The Khronos Group. http://www.khronos.org/, August 2015.
[30]
Typesafe Inc. Akka. http://akka.io, March 2012.

Cited By

View all
  • (2023)GPotion: An embedded DSL for GPU programming in ElixirProceedings of the XXVII Brazilian Symposium on Programming Languages10.1145/3624309.3624314(1-8)Online publication date: 25-Sep-2023
  • (2018)OpenCL Actors – Adding Data Parallelism to Actor-Based Programming with CAFProgramming with Actors10.1007/978-3-030-00302-9_3(59-93)Online publication date: 7-Sep-2018
  • (2016)Revisiting actor programming in C++Computer Languages, Systems and Structures10.1016/j.cl.2016.01.00245:C(105-131)Online publication date: 1-Apr-2016

Recommendations

Comments

Please enable JavaScript to view thecomments powered by Disqus.

Information & Contributors

Information

Published In

cover image ACM Conferences
AGERE! 2015: Proceedings of the 5th International Workshop on Programming Based on Actors, Agents, and Decentralized Control
October 2015
64 pages
ISBN:9781450339018
DOI:10.1145/2824815
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 ACM 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: 26 October 2015

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Actor Model
  2. C++
  3. Coprocessor
  4. GPGPU Computing
  5. OpenCL

Qualifiers

  • Research-article

Conference

SPLASH '15
Sponsor:

Acceptance Rates

Overall Acceptance Rate 19 of 35 submissions, 54%

Upcoming Conference

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

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

Other Metrics

Citations

Cited By

View all
  • (2023)GPotion: An embedded DSL for GPU programming in ElixirProceedings of the XXVII Brazilian Symposium on Programming Languages10.1145/3624309.3624314(1-8)Online publication date: 25-Sep-2023
  • (2018)OpenCL Actors – Adding Data Parallelism to Actor-Based Programming with CAFProgramming with Actors10.1007/978-3-030-00302-9_3(59-93)Online publication date: 7-Sep-2018
  • (2016)Revisiting actor programming in C++Computer Languages, Systems and Structures10.1016/j.cl.2016.01.00245:C(105-131)Online publication date: 1-Apr-2016

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