Abstract
Recent advances in hardware architectures, particularly multicore and manycore processors, implicitly require programmers to write concurrent programs that can be executed in parallel on multiple cores. However, writing correct and efficient concurrent programs is challenging. The traditional way of writing concurrent programs mixes concurrency and functionality code. As a result, in order to fully exploit the potentials that the underlying hardware provides, the code must be changed to utilize the more advanced hardware resources. To address this challenge, we propose a new parallel programming paradigm which separates programs’ concurrency from their functionality code, harnessing the notable programmability of the Actor model. Specifically, the level of concurrency of an actor system can be dynamically tuned at run-time based on predefined tuning policies, which are programmable and reusable. We have developed two tuning policies, and experimental results show that our approach is effective in achieving high performance on high-end computing architectures, yet it does not introduce extra overhead on the hardware which does not support high level of concurrency. This can be done without extra effort from the programmers. This approach also opens up many opportunities for programming concurrency tuning policies for different purposes without changing the code of the actual computations.









Similar content being viewed by others
Notes
Unless starvation happens, which violates the Actor model’s fairness property, in that case, more workers will be created in ActorFoundry.
References
Agha, G. (1986). Actors: a model of concurrent computation in distributed systems. Cambridge: MIT Press.
Andrews, G. (1999). Foundations of parallel and distributed programming. Boston: Addison-Vesley Longman Publishing Co. Inc.
Armstrong, J. (2007). Programming Erlang: software for a concurrent world pragmatic bookshelf.
Asanovic, K., Bodik, R., Demmel, J., Keaveny, T., Keutzer, K., Kubiatowicz, J., Morgan, N., Patterson, D., Sen, K., Wawrzynek, J., Wessel, D., & Yelick, K. (2009). A view of the parallel computing landscape. Communications of the ACM, 52(10), 56–67.
Astley, M. (1998). The ActorFoundry: a Java-based actor programming environment. Tech. rep., Open Systems Laboratory University of Illinois at Urbana-Champaign.
Blake, G., Dreslinski, R., Mudge, T., & Flautner, K. (2010). Evolution of thread-level parallelism in desktop applications, Proceedings of the 37th annual international symposium on computer architecture (pp. 302–313). New York: ACM.
Campanoni, S., Jones, T., Holloway, G., Wei, G., & Brooks, D. (2012). Helix: making the extraction of thread-level parallelism mainstream. IEEE Micro, 32 (4), 8–18.
Garcia, S., Jeon, D., Louie, C., & Taylor, M. (2012). The Kremlin oracle for sequential code parallelization. IEEE Micro, 32(4), 42–53.
Gropp, W., Lusk, E., & Skjellum, A. (1999). Using MPI: portable parallel programming with the message-passing interface, vol. 1. MIT press.
Haller, P., & Odersky, M. (2007). Actors that unify threads and events. In Murphy, A., & Vitek, J. (Eds.), Coordination Models and Languages LNCS, (Vol. 4467 pp. 171–190): Springer.
Herzeel, C., & Costanza, P. (2010). Dynamic parallelization of recursive code: part 1: managing control flow interactions with the continuator, Proceedings of the ACM international conference on object oriented programming systems languages and applications (pp. 377–396): ACM.
Hylands, C., Lee, E., Liu, J., Liu, X., Neuendorffer, S., Xiong, Y., Zhao, Y., & Zheng, H. (2003). Overview of the Ptolemy Project. Tech. rep., University of California, Berkeley.
Jang, M. (2004). The actor architecture manual. Tech. rep., Open Systems Laboratory University of Illinois at Urbana-Champaign.
Kafura, D. (1990). ACT++: building a concurrent C++ with actors. Journal of Object-Oriented Programming, 3, 25–37.
Karmani, R., Shali, A., & Agha, G. (2009). Actor frameworks for the JVM platform: a comparative analysis, Proceedings of the 7th international conference on the principles and practice of programming in java (PPPJ).
Kasahara, H., Obata, M., & Ishizaka, K. (2001). Automatic coarse grain task parallel processing on SMP using openMP, Proceedings of the 13th international workshop on languages and compilers for parallel computing (pp. 189–207): Springer.
Kim, W. (1997). ThAL: an actor system for efficient and scalable concurrent computing. Ph.D. thesis, University of Illinois at Urbana-Champaign.
Microsoft Corporation (2008). Axum programming language.
Nguyen, T., & Zhao, X. (2016). Decoupled concurrency: a self-adaptive software architecture for programming multicores, Proceedings of the 31st ACM symposium on applied computing (ACM SAC 2016) (pp. 1358–1360).
Srinivasan, S., & Mycroft, A. (2008). Kilim: isolation-typed actors for Java, Proceedings of the 22nd european conference on object-oriented programming (ECOOP 2008) (pp. 104–128).
Sturman, D., & Agha, G. (1994). A protocol description language for customizing failure semantics, Proceedings of the 13th symposium on reliable distributed systems (pp. 148–157).
Sutter, H., & Larus, J. (2005). Software and the concurrency revolution. Queue, 3(7), 54–62.
The E Language (2000). http://www.erights.org/elang.
Varela, C., & Agha, G. (2001). Programming dynamically reconfigurable open systems with SALSA. ACM SIGPLAN Notices, 36, 20–34.
Zhao, X., & Jamali, N. (2013). Load balancing non-uniform parallel computations, ACM SIGPLAN Notices: Proceedings of the 3rd international ACM SIGPLAN workshop on programming based on actors, agents and decentralized control (AGERE at SPLASH 2013) (pp. 1–12). Indianapolis, IN, USA.
Acknowledgements
This work is supported in part by a WSU New Faculty Seed Grant.
Author information
Authors and Affiliations
Corresponding author
Rights and permissions
About this article
Cite this article
Nguyen, T., Zhao, X. Performance tuning for actor programs through decoupled concurrency. Software Qual J 26, 1097–1117 (2018). https://doi.org/10.1007/s11219-017-9371-9
Published:
Issue Date:
DOI: https://doi.org/10.1007/s11219-017-9371-9