skip to main content
survey

A Comprehensive Exploration of Languages for Parallel Computing

Published: 18 January 2022 Publication History

Abstract

Software-intensive systems in most domains, from autonomous vehicles to health, are becoming predominantly parallel to efficiently manage large amount of data in short (even real-) time. There is an incredibly rich literature on languages for parallel computing, thus it is difficult for researchers and practitioners, even experienced in this very field, to get a grasp on them. With this work we provide a comprehensive, structured, and detailed snapshot of documented research on those languages to identify trends, technical characteristics, open challenges, and research directions. In this article, we report on planning, execution, and results of our systematic peer-reviewed as well as grey literature review, which aimed at providing such a snapshot by analysing 225 studies.

Supplementary Material

ciccozzi (ciccozzi.zip)
Supplemental movie, appendix, image and software files for, A Comprehensive Exploration of Languages for Parallel Computing

References

[1]
Lorenzo Addazi, Federico Ciccozzi, Philip Langer, and Ernesto Posse. 2017. Towards seamless hybrid graphical-textual modelling for UML and profiles. In Proceedings of the 13th European Conference on Modelling Foundations and Applications. Retrieved from http://www.es.mdh.se/publications/4751-.
[2]
Lorenzo Addazi, Federico Ciccozzi, and Björn Lisper. 2019. Executable modelling for highly parallel accelerators. In Proceedings of the Workshop on Modelling Language Engineering and Execution at MoDELS.
[3]
Vikas Aggarwal, Alan D. George, Changil Yoon, Kishore Yalamanchili, and Herman Lam. 2011. SHMEM+ A multilevel-PGAS programming model for reconfigurable supercomputing. ACM Transactions on Reconfigurable Technology and Systems 4, 3 (2011), 1–24.
[4]
Snorri Agnarsson. 2010. Parallel programming in morpho. In Proceedings of the International Workshop on Applied Parallel Computing. Springer, 97–107.
[5]
Gita Alaghband and Harry F. Jordan. 1994. Overview of the force scientific parallel language. Scientific Programming 3, 1 (1994), 33–47.
[6]
Marco Aldinucci et al. 2003. eskimo: Experimenting skeletons on the shared address model. In Proceedings of the 2nd International Workshop on, Vol. 16. Computer Science Department, University of Pisa, Italy, 44–58.
[7]
Marco Aldinucci, Sonia Campa, Marco Danelutto, Peter Kilpatrick, and Massimo Torquati. 2012. Targeting distributed systems in fastflow. In Proceedings of the European Conference on Parallel Processing. Springer, 47–56.
[8]
Muhammad Aleem, Radu Prodan, and Thomas Fahringer. 2012. The javasymphony extensions for parallel gpu computing. In Proceedings of the 2012 41st International Conference on Parallel Processing. IEEE, 30–39.
[9]
Nauman Bin Ali and Kai Petersen. 2014. Evaluating strategies for study selection in systematic literature studies. In Proceedings of the International Symposium on Empirical Software Engineering and Measurement. ACM.
[10]
Makoto Amamiya, Masahiko Satoh, Akifumi Makinouchi, Ken-ichi Hagiwara, Taiichi Yuasa, Hitoshi Aida, Kazunori Ueda, Keijiro Araki, Tetsuo Ida, and Takanobu Baba. 1994. Research on programming languages for massively parallel processing. In Proceedings of the International Symposium on Parallel Architectures, Algorithms and Networks. IEEE, 443–450.
[11]
Vasco Amaral, Beatriz Norberto, Miguel Goulão, Marco Aldinucci, Siegfried Benkner, Andrea Bracciali, Paulo Carreira, Edgars Celms, Luís Correia, Clemens Grelck, Helen Karatza, Christoph Kessler, Peter Kilpatrick, Hugo Martiniano, Ilias Mavridis, Sabri Pllana, Ana Respício, José Simão, Luís Veiga, and Ari Visa. 2020. Programming languages for data-Intensive HPC applications: A systematic mapping study. Parallel Computing 91 (2020), 102584. DOI:https://doi.org/10.1016/j.parco.2019.102584
[12]
Manel Ammar, Mouna Baklouti, and Mohamed Abid. 2012. Extending MARTE to support the specification and the generation of data intensive applications for massively parallel SoC. In Proceedings of the 2012 15th Euromicro Conference on Digital System Design. IEEE, 715–722.
[13]
Birger Andersen. 1994. A general, fine-grained, machine independent, object-oriented language. ACM SIGPLAN Notices 29, 5 (1994), 17–26.
[14]
Hugo Andrade and Ivica Crnkovic. 2018. A review on software architectures for heterogeneous platforms. In Proceedings of the 25th Asia-Pacific Software Engineering Conference. 209–218.
[15]
Hugo Andrade, Jan Schroeder, and Ivica Crnkovic. 2019. Software deployment on heterogeneous platforms: A systematic mapping study. IEEE Transactions on Software Engineering 47, 8 (2019), 1–1.
[16]
Keijiro Araki, Itsujiro Arita, and Masaki Hirabaru. 1984. NANO-2: HIGH-LEVEL PARALLEL PROGRAMMING LANGUAGE FOR MULTIPROCESSOR SYSTEM HYPHEN. In Proceedings-IEEE Computer Society International Conference. IEEE, 449–456.
[17]
F. Arbab, J. W. De Bakker, M. M. Bonsangue, J. J. M. M. Rutten, A. Scutella, and G. Zavattaro. 2000. A transition system semantics for the control-driven coordination language MANIFOLD. Theoretical Computer Science 240, 1 (2000), 3–47.
[18]
Takanobu Baba and Tsutomu Yoshinaga. 1995. A-NETL: A language for massively parallel object-oriented computing. In Proceedings of the Programming Models for Massively Parallel Computers. IEEE, 98–105.
[19]
Woongki Baek, Chi Cao Minh, Martin Trautmann, Christos Kozyrakis, and Kunle Olukotun. 2007. The OpenTM transactional application programming interface. In Proceedings of the 16th International Conference on Parallel Architecture and Compilation Techniques. IEEE, 376–387.
[20]
Riyadh Baghdadi, Ulysse Beaugnon, Albert Cohen, Tobias Grosser, Michael Kruse, Chandan Reddy, Sven Verdoolaege, Adam Betts, Alastair F. Donaldson, Jeroen Ketema, Javed Absar, Sven Van Haastregt, Alexey Kravets, Anton Lokhmotov, Robert David, and Elnar Hajiyev. 2015. Pencil: A platform-neutral compute intermediate language for accelerator programming. In Proceedings of the 2015 International Conference on Parallel Architecture and Compilation. IEEE, 138–149.
[21]
Mouna Baklouti, Manel Ammar, Philippe Marquet, Mohamed Abid, and Jean-Luc Dekeyser. 2011. A model-driven based framework for rapid parallel SoC FPGA prototyping. In Proceedings of the 2011 22nd IEEE International Symposium on Rapid System Prototyping. IEEE, 149–155.
[22]
G. H. Barnes, R. M. Brown, M. Kato, D. J. Kuck, D. L. Slotnick, and R. A. Stokes. 1968. The ILLIAC IV computer. IEEE Transactions on Computers C-17, 8 (1968), 746–757.
[23]
Pablo Basanta-Val and Marisol García-Valls. 2015. A library for developing real-time and embedded applications in C. Journal of Systems Architecture 61, 5–6 (2015), 239–255.
[24]
Victor R. Basili, Gianluigi Caldiera, and H. Dieter Rombach. 1994. The goal question metric approach. In Proceedings of the Encyclopedia of Software Engineering. Vol. 2. Wiley, 528–532.
[25]
Michael Bauer, John Clark, Eric Schkufza, and Alex Aiken. 2010. Sequoia++ User Manual, University of Chicago. Retrieved from https://www.classes.cs.uchicago.edu/archive/2011/winter/32102-1/reading/sequoia-manual.pdf. (2010). Accessed: 2021-06-15.
[26]
Saniya Ben Hassen, Henri E. Bal, and Ceriel J. H. Jacobs. 1998. A task-and data-parallel programming language based on shared objects. ACM Transactions on Programming Languages and Systems 20, 6 (1998), 1131–1170.
[27]
Siegfried Benkner and Viera Sipkova. 2003. Exploiting distributed-memory and shared-memory parallelism on clusters of smps with data parallel programs. International Journal of Parallel Programming 31, 1 (2003), 3–19.
[28]
Kenneth J. Berry and Paul W. Mielke Jr. 1988. A generalization of Cohen’s kappa agreement measure to interval measurement and multiple raters. Educational and Psychological Measurement 48, 4 (1988), 921–933.
[29]
Matthias Besch, Hua Bi, Gerd Heber, Matthias Kessler, and Matthias Wilhelmi. 1997. An object-oriented approach to the implementation of a high-level data parallel language. In Proceedings of the International Conference on Computing in Object-Oriented Parallel Environments. Springer, 97–104.
[30]
Lorenzo Bettini, Rocco De Nicola, Rosario Pugliese, and Gian Luigi Ferrari. 1998. Interactive mobile agents in X-Klaim. In Proceedings 7th IEEE International Workshop on Enabling Technologies: Infrastucture for Collaborative Enterprises. IEEE, 110–115.
[31]
Suchendra M. Bhandarkar and Bonnie M. Edwards. 1995. HyperPascal-an architecture independent Pascal interface for parallel programming. In Proceedings IEEE Southeastcon’95. Visualize the Future. IEEE, 78–84.
[32]
Ganesh Bikshandi, Jose G. Castanos, Sreedhar B. Kodali, V. Krishna Nandivada, Igor Peshansky, Vijay A. Saraswat, Sayantan Sur, Pradeep Varma, and Tong Wen. 2009. Efficient, portable implementation of asynchronous multi-place programs. ACM Sigplan Notices 44, 4 (2009), 271–282.
[33]
Roberto Bisiani and Alessandro Forin. 1987. Architectural support for multilanguage parallel programming on heterogeneous systems. ACM SIGPLAN Notices 22, 10 (1987), 21–30.
[34]
Luc Bläser. 2006. A component language for structured parallel programming. In Proceedings of the Joint Modular Languages Conference. Springer, 230–250.
[35]
Marek Blazewicz, Steven R. Brandt, Michal Kierzynka, Krzysztof Kurowski, Bogdan Ludwiczak, Jian Tao, and Jan Weglarz. 2011. CaKernel–a parallel application programming framework for heterogenous computing architectures. Scientific Programming 19, 4 (2011), 185–197.
[36]
Robert L. Bocchino Jr, Stephen Heumann, Nima Honarmand, Sarita V. Adve, Vikram S. Adve, Adam Welc, and Tatiana Shpeisman. 2011. Safe nondeterminism in a deterministic-by-default parallel language. ACM SIGPLAN Notices 46, 1 (2011), 535–548.
[37]
Daniele Bonetta, Danilo Ansaloni, Achille Peternier, Cesare Pautasso, and Walter Binder. 2012. Node.scala: Implicit parallel programming for high-performance web services. In Proceedings of the European Conference on Parallel Processing. Springer, 626–637.
[38]
Daniele Bonetta, Luca Salucci, Stefan Marr, and Walter Binder. 2016. Gems: Shared-memory parallel programming for node. js. ACM SIGPLAN Notices 51, 10 (2016), 531–547.
[39]
George Horaţiu Botorog and Herbert Kuchen. 1998. Efficient high-level parallel programming. Theoretical Computer Science 196, 1–2 (1998), 71–107.
[40]
Stephan Brandauer, Elias Castegren, Dave Clarke, Kiko Fernandez-Reyes, Einar Broch Johnsen, Ka I. Pun, S. Lizeth Tapia Tarifa, Tobias Wrigstad, and Albert Mingkun Yang. 2015. Parallel objects for multicores: A glimpse at the parallel language encore. In Proceedings of the International School on Formal Methods for the Design of Computer, Communication and Software Systems. Springer, 1–56.
[41]
Pearl Brereton, Barbara A. Kitchenham, David Budgen, Mark Turner, and Mohamed Khalil. 2007. Lessons from applying the systematic literature review process within the software engineering domain. Journal of Systems and Software 80, 4 (2007), 571–583.
[42]
Peter Brezány. 1983. Denotational semantics of parallel programming languages. Kybernetika 19, 3 (1983), 248–262.
[43]
Ron Brightwell, Mike Heroux, Zhaofang Wen, and Junfeng Wu. 2009. Parallel phase model: A programming model for high-end parallel machines with manycores. In Proceedings of the 2009 International Conference on Parallel Processing. IEEE, 92–99.
[44]
Andre R. Brodtkorb, Christopher Dyken, Trond R. Hagen, Jon M. Hjelmervik, and Olaf O. Storaasli. 2010. State-of-the-art in heterogeneous computing. Sci. Program. 18, 1 (Jan. 2010), 1–33. DOI:https://doi.org/10.1155/2010/540159
[45]
Ansgar Brüll and Herbert Kuchen. 1996. TPascal–A language for task parallel programming. In Proceedings of the European Conference on Parallel Processing. Springer, 654–659.
[46]
Paul-Jean Cagnard. 2000. The ParCeL-2 programming language. In Proceedings of the European Conference on Parallel Processing. Springer, 767–770.
[47]
Ran Canetti, L. Paul Fertig, Saul A. Kravitz, Dalia Malki, Ron Y. Pinter, Sara Porat, and Avi Teperman. 1991. The parallel C (pC) programming language. IBM Journal of Research and Development 35, 5.6 (1991), 727–741.
[48]
Brian D. Carlstrom, Austen McDonald, Hassan Chafi, JaeWoong Chung, Chi Cao Minh, Christos Kozyrakis, and Kunle Olukotun. 2006. The Atomos transactional programming language. In Proceedings of the 27th ACM SIGPLAN Conference on Programming Language Design and Implementation. 1–13.
[49]
Bryan Carpenter and Geoffrey Fox. 2003. HPJava: A data parallel programming alternative. Computing in Science and Engineering 5, 3 (2003), 60–64.
[50]
Bryan Catanzaro, Michael Garland, and Kurt Keutzer. 2011. Copperhead: Compiling an embedded data parallel language. In Proceedings of the 16th ACM Symposium on Principles and Practice of Parallel Programming. 47–56.
[51]
Vincent Cavé, Jisheng Zhao, Jun Shirako, and Vivek Sarkar. 2011. Habanero-Java: The new adventures of old X10. In Proceedings of the 9th International Conference on Principles and Practice of Programming in Java. 51–61.
[52]
Bradford L. Chamberlain, David Callahan, and Hans P. Zima. 2007. Parallel programmability and the chapel language. The International Journal of High Performance Computing Applications 21, 3 (2007), 291–312.
[53]
Rohit Chandra, Anoop Gupta, and John L. Hennessy. 1994. COOL: An object-based language for parallel programming. Computer 27, 8 (1994), 13–26.
[54]
K. Mani Chandy and Ian Foster. 1995. A notation for deterministic cooperating processes. IEEE Transactions on Parallel and Distributed Systems 6, 8 (1995), 863–871.
[55]
Chapel, Version 1.24.1. 2021. The Chapel Parallel Programming Language. Retrieved from https://chapel-lang.org/. (2021). Accessed: 2021-06-15.
[56]
Charm++ Programming Language, Release 6.10.2. 2020. Retrieved from http://charmplusplus.org/. (2020). Accessed: 2021-06-15.
[57]
Kathy Charmaz and Linda Liska Belgrave. 2007. Grounded theory. The Blackwell Encyclopedia of Sociology (2007).
[58]
Federico Ciccozzi, Matthias Tichy, Hans Vangheluwe, and Danny Weyns. 2019. Blended modelling – what, why and how. In Proceedings of the MPM4CPS workshop. Retrieved form http://www.es.mdh.se/publications/5642-.
[59]
R. M. Clapp and T. N. Mudge. 1992. Parallel language constructs for efficient parallel processing. In Proceedings of the 25th Hawaii International Conference on System Sciences, Vol. 2. IEEE, 230–241.
[60]
Keith Clark and Peter J. Robinson. 2002. Agents as multi-threaded logical objects. In Proceedings of the Computational Logic: Logic Programming and Beyond. Springer, 33–65.
[61]
Keith L. Clark and Francis G. McCabe. 2004. Go!–a multi-paradigm programming language for implementing multi-threaded agents. Annals of Mathematics and Artificial Intelligence 41, 2–4 (2004), 171–206.
[62]
Robert Clucas and Stephen Levitt. 2015. CAPP: A C++ aspect-oriented based framework for parallel programming with OpenCL. In Proceedings of the 2015 Annual Research Conference on South African Institute of Computer Scientists and Information Technologists. 1–10.
[63]
Paul Cockshott and Greg Michaelson. 2006. Orthogonal parallel processing in vector Pascal. Computer Languages, Systems and Structures 32, 1 (2006), 2–41.
[64]
Adrian Colbrook, William E. Weihl, Eric A. Brewer, Chrysanthos N. Dellarocas, Wilson C. Hsieh, Anthony D. Joseph, Carl A. Waldspurger, and Paul Wang. 1992. Portable software for multiprocessor systems. Computing and Control Engineering Journal 3, 6 (1992), 275–281.
[65]
Philip Cox, Simon Gauvin, and Andrew Rau-Chaplin. 2005. Adding parallelism to visual data flow programs. In Proceedings of the 2005 ACM Symposium on Software Visualization. 135–144.
[66]
D. Crookes, P. J. Morrow, and P. J. McParland. 1990. IAL: A parallel image processing programming language. IEE Proceedings I (Communications, Speech and Vision) 137, 3 (1990), 176–182.
[67]
Flavio Cruz, Ricardo Rocha, and Seth Copen Goldstein. 2015. Thread-aware logic programming for data-driven parallel programs. ICLP.
[68]
Flavio Cruz, Ricardo Rocha, and Seth Copen Goldstein. 2016. Declarative coordination of graph-based parallel programs. In Proceedings of the 21st ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming. 1–12.
[69]
Daniela S. Cruzes and Tore Dyba. 2011. Recommended steps for thematic synthesis in software engineering. In Proceedings of the 2011 International Symposium on Empirical Software Engineering and Measurement. IEEE, 275–284.
[70]
David E. Culler, Andrea Dusseau, Seth Copen Goldstein, Arvind Krishnamurthy, Steven Lumetta, Thorsten Von Eicken, and Katherine Yelick. 1993. Parallel programming in Split-C. In Supercomputing’93: Proceedings of the 1993 ACM/IEEE Conference on Supercomputing. IEEE, 262–273.
[71]
Marco Danelutto, Roberto Di Meglio, Salvatore Orlando, Susanna Pelagatti, and Marco Vanneschi. 1992. A methodology for the development and the support of massively parallel programs. Future Generation Computer Systems 8, 1–3 (1992), 205–220.
[72]
Tiago José Barreiros Martins de Almeida and Nuno Filipe Valentim Roma. 2010. A parallel programming framework for multi-core DNA sequence alignment. In Proceedings of the 2010 International Conference on Complex, Intelligent and Software Intensive Systems. IEEE, 907–912.
[73]
Pablo de Oliveira Castro, Stéphane Louise, and Denis Barthou. 2010. A multidimensional array slicing dsl for stream programming. In Proceedings of the 2010 International Conference on Complex, Intelligent and Software Intensive Systems. IEEE, 913–918.
[74]
Francisco de Sande, Felix Garcia, Coromoto Leon, and Casiano Rodriguez. 1996. The II parallel programming system. IEEE Transactions on Education 39, 4 (1996), 457–464.
[75]
J. Diaz, C. Muñoz-Caro, and A. Niño. 2012. A survey of parallel programming models and tools in the multi and many-core era. IEEE Transactions on Parallel and Distributed Systems 23, 8 (2012), 1369–1386.
[76]
Walter dos Santos, Luiz F. M. Carvalho, Gustavo de P. Avelar, Átila Silva, Lucas M. Ponce, Dorgival Guedes, and Wagner Meira. 2017. Lemonade: A scalable and efficient Spark-based platform for data analytics. In Proceedings of the 2017 17th IEEE/ACM International Symposium on Cluster, Cloud and Grid Computing. IEEE, 745–748.
[77]
Vinoth Krishnan Elangovan, Rosa M. Badia, and Eduard Ayguadé. 2014. Scalability and parallel execution of ompss-opencl tasks on heterogeneous cpu-gpu environment. In Proceedings of the International Supercomputing Conference. Springer, 141–155.
[78]
Hajime Enomoto, Naoki Yonezaki, Isao Miyamura, and Masayuki Sunuma. 1980. A parallel programming language and description of scheduler. In Proceedings of the IBM Germany Scientific Symposium Series. Springer, 23–41.
[79]
Erlang Programming Language, OTP Release 24.0. 2021. Build Massively Scalable Soft Real-time Systems. Retrieved from https://www.erlang.org/. (2021). Accessed: 2021-06-15.
[80]
Michael Faes and Thomas R. Gross. 2018. Concurrency-aware object-oriented programming with roles. Proceedings of the ACM on Programming Languages 2, OOPSLA (2018), 1–30.
[81]
Jianbin Fang, Chun Huang, Tao Tang, and Zheng Wang. 2020. Parallel programming models for heterogeneous many-cores: A comprehensive survey. CCF Transactions on High Performance Computing 2, 4 (2020), 382–400.
[82]
E. Fernando, D. F. Murad, and B. D. Wijanarko. 2018. Classification and advantages parallel computing in process computation: A systematic literature review. In Proceedings of the International Conference on Computing, Engineering, and Design. 143–147.
[83]
Yuan Yu, Michael Isard, Dennis Fetterly, Mihai Budiu, Úlfar Erlingsson, Pradeep Kumar Gunda, and Jon Currey. 2009. DryadLINQ: A system for general-purpose distributed data-parallel computing using a high-level language. Proceedings of the LSDS-IR. (2009).
[84]
Ian Finlayson, Jerome Mueller, Shehan Rajapakse, and Daniel Easterling. 2015. Introducing tetra: An educational parallel programming system. In Proceedings of the 2015 IEEE International Parallel and Distributed Processing Symposium Workshop. IEEE, 746–751.
[85]
Alcides Fonseca, João Rafael, and Bruno Cabral. 2014. Eve: A parallel event-driven programming language. In European Conference on Parallel Processing. Springer, Cham, 170–181.
[86]
Rhys S. Francis, Ian D. Mathieson, Paul G. Whiting, Martin R. Dix, Harvey L. Davies, and Leon D. Rotstayn. 1994. A data parallel scientific modeling language. Journal of Parallel and Distributed Computing 21, 1 (1994), 46–60.
[87]
M. Frank, M. Hilbrich, S. Lehrig, and S. Becker. 2017. Parallelization, modeling, and performance prediction in the multi-/many core area: A systematic literature review. In Proceedings of the 7th IEEE International Symposium on Cloud and Service Computing. 48–55.
[88]
Robert Frank and Helmar Burkhart. 1997. Application support by software reuse: The ALWAN approach. In Proceedings of the International Conference on High-Performance Computing and Networking. Springer, 636–643.
[89]
Roberto Franzosi. 2010. Quantitative Narrative Analysis. Number 162. Sage.
[90]
Juan José Fumero, Toomas Remmelg, Michel Steuwer, and Christophe Dubach. 2015. Runtime code generation and data management for heterogeneous computing in java. In Proceedings of the Principles and Practices of Programming on the Java Platform. 16–26.
[91]
Abdoulaye Gamatié, Sébastien Le Beux, Éric Piel, Rabie Ben Atitallah, Anne Etien, Philippe Marquet, and Jean-Luc Dekeyser. 2011. A model-driven design framework for massively parallel embedded systems. ACM Transactions on Embedded Computing Systems 10, 4 (2011), 1–36.
[92]
Sofien Gannouni. 2015. A gamma-calculus GPU-based parallel programming framework. In Proceedings of the 2015 2nd World Symposium on Web Applications and Networking. IEEE, 1–4.
[93]
Vahid Garousi, Michael Felderer, and Mika V. Mäntylä. 2019. Guidelines for including grey literature and conducting multivocal literature reviews in software engineering. Information and Software Technology 106 (2019), 101–121.
[94]
Jean-Luc Gaudiot, Tom DeBoni, John Feo, Wim Böhm, Walid Najjar, and Patrick Miller. 2001. The Sisal Project: Real World Functional Programming. Springer Berlin Heidelberg, Berlin, 45–72. DOI:https://doi.org/10.1007/3-540-45403-9_2
[95]
David Gay, Joel Galenson, Mayur Naik, and Kathy Yelick. 2011. Yada: Straightforward parallel programming. Parallel computing 37, 9 (2011), 592–609.
[96]
Michael Gerndt and Andreas Krumme. 1997. A rule-based approach for automatic bottleneck detection in programs on shared virtual memory systems. In Proceedings 2nd International Workshop on High-Level Parallel Programming Models and Supportive Environments. IEEE, 93–101.
[97]
Stefan J. Geuns, Joost P. H. M. Hausmans, and Marco J. G. Bekooij. 2014. Hierarchical programming language for modal multi-rate real-time stream processing applications. In Proceedings of the 2014 43rd International Conference on Parallel Processing Workshops. IEEE, 453–460.
[98]
Fady Ghanim, Uzi Vishkin, and Rajeev Barua. 2017. Easy PRAM-based high-performance parallel programming with ICE. IEEE Transactions on Parallel and Distributed Systems 29, 2 (2017), 377–390.
[99]
Go Programming Language. Retrieved from 2021. https://golang.org/. (2021). Accessed: 2021-06-15.
[100]
Ron Goldman and Richard Gabriel. 1988. Preliminary results with the initial implementation of Qlisp. In Proceedings of the 1988 ACM Conference on LISP and Functional Programming. 143–152.
[101]
Bart Goossens, Hiep Luong, Jan Aelterman, and Wilfried Philips. 2018. Quasar, a high-level programming language and development environment for designing smart vision systems on embedded platforms. In Proceedings of the 2018 Design, Automation and Test in Europe Conference and Exhibition (DATE). IEEE, 1310–1315.
[102]
Thierry Goubier, Renaud Sirdey, Stéphane Louise, and Vincent David. 2011. \(\Sigma\)C: A programming model and language for embedded manycores. In Proceedings of the International Conference on Algorithms and Architectures for Parallel Processing. Springer, 385–394.
[103]
Trisha Greenhalgh and Richard Peacock. 2005. Effectiveness and efficiency of search methods in systematic reviews of complex evidence: Audit of primary sources. BMJ 331, 7524 (2005), 1064–1065.
[104]
Clemens Grelck and Sven-Bodo Scholz. 2006. SAC–a functional array language for efficient multi-threaded execution. International Journal of Parallel Programming 34, 4 (2006), 383–427.
[105]
Andrew S. Grimshaw. 1993. Easy-to-use object-oriented parallel processing with Mentat. Computer 26, 5 (1993), 39–51.
[106]
Andrew S. Grimshaw, Ami Silberman, and Jane W. S. Liu. 1989. Real-time Mentat programming language and architecture. In Proceedings of the 1989 IEEE Global Telecommunications Conference and Exhibition’Communications Technology for the 1990s and Beyond’. IEEE, 141–147.
[107]
Radu Grosu, Yanhong A. Liu, Scott Smolka, Scott D. Stoller, and Jingyu Yan. 2001. Automated software engineering using concurrent class machines. In Proceedings 16th Annual International Conference on Automated Software Engineering. IEEE, 297–304.
[108]
Steven A. Guccione and Mario J. Gonzalez. 1993. A data-parallel programming model for reconfigurable architectures. In [1993] Proceedings IEEE Workshop on FPGAs for Custom Computing Machines. IEEE, 79–87.
[109]
Vadim Guzev. 2008. Parallel C#: The usage of chords and higher-order functions in the design of parallel programming languages. In Proceedings of the PDPTA. 833–837.
[110]
Wieland Hagen, Max Plauth, Felix Eberhardt, Frank Feinbube, and Andreas Polze. 2016. PGASUS: A framework for C++ application development on NUMA architectures. In Proceedings of the 2016 4th International Symposium on Computing and Networking. IEEE, 368–374.
[111]
Michael Haidl and Sergei Gorlatch. 2018. High-level programming for many-cores using C++ 14 and the STL. International Journal of Parallel Programming 46, 1 (2018), 23–41.
[112]
Robert H. Halstead Jr. 1985. Multilisp: A language for concurrent symbolic computation. ACM Transactions on Programming Languages and Systems 7, 4 (1985), 501–538.
[113]
Per Brinch Hansen. 1994. Interference control in SuperPascal–a block-structured parallel language. Computer Journal 37, 5 (1994), 399–406.
[114]
Paul Harvey, Kristian Hentschel, and Joseph Sventek. 2015. Parallel programming in actor-based applications via OpenCL. In Proceedings of the 16th Annual Middleware Conference. 162–172.
[115]
Kenneth A. Hawick and Heath A. James. 2000. A java-based parallel programming support environment. In Proceedings of the International Conference on High-Performance Computing and Networking. Springer, 363–372.
[116]
Troels Henriksen, Niels G. W. Serup, Martin Elsman, Fritz Henglein, and Cosmin E. Oancea. 2017. Futhark: Purely functional GPU-programming with nested parallelism and in-place array updates. In Proceedings of the 38th ACM SIGPLAN Conference on Programming Language Design and Implementation. 556–571.
[117]
Stephan Herhut, Richard L. Hudson, Tatiana Shpeisman, and Jaswanth Sreeram. 2013. River trail: A path to parallelism in JavaScript. ACM SIGPLAN Notices 48, 10 (2013), 729–744.
[118]
J. Hernandez, Pedro de Miguel, M. Barrena, Juan Miguel Martinez, A. Polo, and M. Nieto. 1993. ALBA: A parallel language based on actors. ACM SIGPLAN Notices 28, 4 (1993), 11–20.
[119]
Rich Hickey. 2020. A history of clojure. Proceedings of the ACM on Programming Languages 4, HOPL, Article 71 (June 2020), 46 pages. DOI:https://doi.org/10.1145/3386321
[120]
Holger Hopp and Lutz Prechelt. 1999. CuPit-2: Portable and efficient high-level parallel programming of neural networks. Systems Analysis Modelling Simulation 35, 4 (1999), 379–398.
[121]
Qiming Hou, Kun Zhou, and Baining Guo. 2008. BSGP: Bulk-synchronous GPU programming. ACM Transactions on Graphics 27, 3 (2008), 1–12.
[122]
Eduardo Camilo Inacio and Mario A. R. Dantas. 2014. A survey into performance and energy efficiency in HPC, cloud and big data environments. International Journal of Networking and Virtual Organisations 14, 4 (2014), 299–318.
[123]
Intel’s Coaarray Fortran. 2021. Tutorial: Using Coarray Fortran. Retrieved from https://software.intel.com/content/www/us/en/develop/documentation/fortran-compiler-coarray-tutorial/top.html. (2021). Accessed: 2021-06-15.
[124]
Suresh Jagannathan and Jim Philbin. 1992. A foundation for an efficient multi-threaded scheme system. In Proceedings of the 1992 ACM Conference on LISP and Functional Programming. 345–357.
[125]
JoCaml Programming Language, Version 4.00.1.A. 2014. Retrieved from http://jocaml.inria.fr/. (2014). Accessed: 2021-06-15.
[126]
Alan H. Karp. 1987. Programming for parallelism. Computer 20, 5 (May 1987), 43–57.
[127]
Ryan D. Kelker. 2013. Clojure for Domain-specific Languages. Packt Publishing Ltd.
[128]
C. Kessler and J. Keller. 1995. Joule: Distributed Application Foundations. Technical Report. Agorics Technical Report ADd003.4P, Retrieved from http://www.laputan.org/pub/papers/Joule.pdf. Accessed: 2021-06-15.
[129]
C. Kessler and J. Keller. 2007. Models for Parallel Computing: Review and Perspective. Technical Report. Linköping University, Sweden. ISSN: 0177-0454, Retrieved from https://www.ida.liu.se/chrke55/papers/modelsurvey.pdf.
[130]
Christoph W. Kessler. 2004. Managing distributed shared arrays in a bulk-synchronous parallel programming environment. Concurrency and Computation: Practice and Experience 16, 2–3 (2004), 133–153.
[131]
Christoph W. Keßler and Helmut Seidl. 1997. The Fork95 parallel programming language: Design, implementation, application. International Journal of Parallel Programming 25, 1 (1997), 17–50.
[132]
Christoph W. Keßler and Helmut Seidl. 1999. ForkLight: A control-synchronous parallel programming language. In Proceedings of the International Conference on High-Performance Computing and Networking. Springer, 525–534.
[133]
Barbara Kitchenham and Pearl Brereton. 2013. A systematic review of systematic review process research in software engineering. Information and Software Technology 55, 12 (2013), 2049–2075.
[134]
Barbara A. Kitchenham and Stuart Charters. 2007. Guidelines for Performing Systematic Literature Reviews in Software Engineering. Technical Report EBSE-2007-01. Keele University and University of Durham.
[135]
Svend E. Knudsen. 2011. Using independence to enable parallelism on multicore computers. Software: Practice and Experience 41, 4 (2011), 393–402.
[136]
Krzysztof Kochut. 1989. Execution kernel for parallel logic programming. In Proceedingsof the IEEE Energy and Information Technologies in the Southeast’. IEEE, 491–495.
[137]
Aaron H. Konstam. 1981. A method for controlling parallelism in programming languages. ACM SIGPLAN Notices 16, 9 (1981), 60–65.
[138]
Sriram Krishnamoorthy, Umit Catalyurek, Jarek Nieplocha, Atanas Rountev, and P. Sadayappan. 2006. An extensible global address space framework with decoupled task and data abstractions. In Proceedings 20th IEEE International Parallel & Distributed Processing Symposium. IEEE, 7–pp.
[139]
Vivek Kumar, Julian Dolby, and Stephen M. Blackburn. 2016. Integrating asynchronous task parallelism and data-centric atomicity. In Proceedings of the 13th International Conference on Principles and Practices of Programming on the Java Platform: Virtual Machines, Languages, and Tools. 1–10.
[140]
Andreas Kunft, Lukas Stadler, Daniele Bonetta, Cosmin Basca, Jens Meiners, Sebastian Breß, Tilmann Rabl, Juan Fumero, and Volker Markl. 2018. Scootr: Scaling r dataframes on dataflow systems. In Proceedings of the ACM Symposium on Cloud Computing. 288–300.
[141]
Shigeru Kusakabe, Taku Nagai, Yoshihiro Yamashita, Rin-ichiro Taniguchi, and Makoto Amamiya. 1995. A dataflow language with object-based extension and its implementation on a commercially available parallel machine. In Proceedings of the 9th International Conference on Supercomputing. 308–317.
[142]
V. P. Kutepov, V. N. Malanin, and N. A. Pankov. 2012. Flowgraph stream parallel programming: Language, process model, and computer implementation. Journal of Computer and Systems Sciences International 51, 1 (2012), 65–79.
[143]
F. A. Lara Soares, C. Neri Nobre, and H. Cota de Freitas. 2019. Parallel programming in computing undergraduate courses: A systematic mapping of the literature. IEEE Latin America Transactions 17, 08 (2019), 1371–1381.
[144]
James Larus. 1992. C**: A large-grain, object-oriented, data-parallel programming language. In Proceedings of the International Workshop on Languages and Compilers for Parallel Computing. Springer, 326–341.
[145]
Alexey Lastovetsky. 2002. Adaptive parallel computing on heterogeneous networks with mpC. Parallel Computing 28, 10 (2002), 1369–1407.
[146]
Jinpil Lee, Mitsuhisa Sato, and Taisuke Boku. 2007. Design and implementation of OpenMPD: An OpenMP-like programming language for distributed memory systems. In Proceedings of the International Workshop on OpenMP. Springer, 143–147.
[147]
Jinpil Lee, Minh Tuan Tran, Tetsuya Odajima, Taisuke Boku, and Mitsuhisa Sato. 2011. An extension of XcalableMP PGAS lanaguage for multi-node GPU clusters. In Proceedings of the European Conference on Parallel Processing. Springer, 429–439.
[148]
Sunwoo Lee, Byung Kwan Jung, Minsoo Ryu, and Seungwon Lee. 2009. Extending component-based approaches for multithreaded design of multiprocessor embedded software. In Proceedings of the 2009 IEEE International Symposium on Object/Component/Service-Oriented Real-Time Distributed Computing. IEEE, 267–274.
[149]
Mingjie Lin, Ilia Lebedev, and John Wawrzynek. 2010. OpenRCL: Low-power high-performance computing with reconfigurable devices. In Proceedings of the 2010 International Conference on Field Programmable Logic and Applications. IEEE, 458–463.
[150]
Chao Liu and Miriam Leeser. 2016. Unified and lightweight tasks and conduits: A high level parallel programming framework. In Proceedings of the 2016 IEEE High Performance Extreme Computing Conference (HPEC). IEEE, 1–7.
[151]
Fei Liu, Yi Yang, and Ling-ze Wang. 2016. A survey of the heterogeneous computing platform and related technologies. In Proceedings of the International Conference on Informatics, Management Engineering and Industrial Application. 6–12. DOI:https://doi.org/10.12783/dtetr/imeia2016/9229
[152]
Ivan Llopard, Christian Fabre, and Albert Cohen. 2017. From a formalized parallel action language to its efficient code generation. ACM Transactions on Embedded Computing Systems 16, 2 (2017), 1–28.
[153]
Hans-Wolfgang Loidl, Phil Trinder, Kevin Hammond, Abdallah Al Zain, and Clem Baker-Finch. 2008. Semi-explicit parallel programming in a purely functional style: GpH. Process Algebra for Parallel and Distributed Processing: Algebraic Languages in Specification-Based Software Development (2008), 47–76.
[154]
Anton Lokhmotov, Benedict R. Gaster, Alan Mycroft, Neil Hickey, and David Stuttard. 2007. Revisiting SIMD programming. In Proceedings of the International Workshop on Languages and Compilers for Parallel Computing. Springer, 32–46.
[155]
Roberto Lublinerman, Jisheng Zhao, Zoran Budimlić, Swarat Chaudhuri, and Vivek Sarkar. 2011. Delegated isolation. ACM SIGPLAN Notices 46, 10 (2011), 885–902.
[156]
Philipp Lucas, Nicolas Fritz, and Reinhard Wilhelm. 2006. The development of the data-parallel GPU programming language CGiS. In Proceedings of the International Conference on Computational Science. Springer, 200–203.
[157]
Steven Lucco and Oliver Sharp. 1991. Parallel programming with coordination structures. In Proceedings of the 18th ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. 197–208.
[158]
Tim H. MacKenzie and Trevor I. Dix. 1998. Object-oriented ease-based parallel primitives in C++. In Proceedings 1998 International Conference on Parallel and Distributed Systems. IEEE, 623–630.
[159]
Jari-Matti Makela, Martti Forsell, and Ville Leppanen. 2017. Towards a language framework for thick control flows. In Proceedings of the 2017 IEEE International Parallel and Distributed Processing Symposium Workshops. IEEE, 814–823.
[160]
Yong Mao, Yunhong Gu, Jia Chen, and Robert L. Grossman. 2006. FastPara: A high-level declarative data-parallel programming framework on clusters. In Proceedings of Parallel and Distributed Computing and Systems, November (2006), 13–15.
[161]
A. Marcoux, C. Maurel, and P. Salle. 1988. AL 1: A language for distributed applications. In [1988] Proceedings. Workshop on the Future Trends of Distributed Computing Systems in the 1990s. 270–276.
[162]
Massimo Maresca and Pierpaolo Baglietto. 1993. A programming model for reconfigurable mesh based parallel computers. In Proceedings of Workshop on Programming Models for Massively Parallel Computers. IEEE, 124–133.
[163]
Cristian Mateos, Alejandro Zunino, and Mat Hirsch. 2013. EasyFJP: Providing hybrid parallelism as a concern for divide and conquer Java applications. Computer Science and Information Systems 10, 3 (2013), 1129–1163.
[164]
Håkan Mattsson and Christoph Kessler. 2004. Towards a bulk-synchronous distributed shared memory programming environment for grids. In Proceedings of the International Workshop on Applied Parallel Computing. Springer, 519–526.
[165]
Patrick McCormick, Jeff Inman, James Ahrens, Jamaludin Mohd-Yusof, Greg Roth, and Sharen Cummins. 2007. Scout: A data-parallel programming language for graphics processors. Parallel computing 33, 10–11 (2007), 648–662.
[166]
Suejb Memeti, Lu Li, Sabri Pllana, Joanna Kołodziej, and Christoph Kessler. 2017. Benchmarking OpenCL, OpenACC, OpenMP, and CUDA: Programming productivity, performance, and energy consumption. In Proceedings of the of ARMS-CC. 1–6.
[167]
Olivier Michel. 1996. Design and implementation of 812: A declarative data-parallel language. Computer Languages 22, 2–3 (1996), 165–179.
[168]
Russ Miller and Quentin F. Stout. 1989. An introduction to the portable parallel programming language Seymour. In [1989] Proceedings of the 13th Annual International Computer Software and Applications Conference. IEEE, 94–101.
[169]
Andreas Mitschele-Thiel. 1993. The DSPL programming environment. In Proceedings of Workshop on Programming Models for Massively Parallel Computers. IEEE, 35–42.
[170]
Sparsh Mittal and Jeffrey S. Vetter. 2015. A survey of CPU-GPU heterogeneous computing techniques. ACM Computing Surveys 47, 4, Article 69 (July 2015), 35 pages. DOI:https://doi.org/10.1145/2788396
[171]
Paulo Moura, Paul Crocker, and Paulo Nunes. 2008. High-level multi-threading programming in logtalk. In Proceedings of the International Symposium on Practical Aspects of Declarative Languages. Springer, 265–281.
[172]
National Instruments. 2005. LabVIEW Fundamentals. Technical Report. LabVIEW Manual, 374029A-01, Retrieved form https://www.ni.com/pdf/manuals/374029a.pdf. Accessed: 2021-06-15.
[173]
Nenad Nedeljkovlc and Michael J. Quinn. 1993. Data-parallel programming on a network of heterogeneous workstations. Concurrency: Practice and Experience 5, 4 (1993), 257–268.
[174]
Markus Nestmann. 2017. Building a consistent taxonomy for parallel programming models. In Proceedings of the GI-Jahrestagung.
[175]
Bob Newman and Martin Payne. 1994. Integration of object oriented and concurrent programming. In Proceedings of 20th Euromicro Conference. System Architecture and Integration. IEEE, 258–264.
[176]
T.-A. Nguyen and Pierre Kuonen. 2003. ParoC++: A requirement-driven parallel object-oriented programming language. In Proceedings International Parallel and Distributed Processing Symposium. IEEE, 9–pp.
[177]
Susumu Nishimura and Atsushi Ohori. 1999. Parallel functional programming on recursively defined data via data-parallel recursion. Journal of Functional Programming 9, 4 (1999), 427–462.
[178]
Lukito Edi Nugroho and A. S. M. Sajeev. 1999. Java4P: Java with high-level concurrency constructs. In Proceedings Fourth International Symposium on Parallel Architectures, Algorithms, and Networks. IEEE, 328–333.
[179]
Eddy A. M. Odijk. 1990. POOMA, POOL and parallel symbolic computing: An assessment. In Proceedings of the CONPAR 90–VAPP IV. Springer, 26–38.
[180]
Kazuhiko Ohno, Shigehiro Yamamoto, Takanori Okano, and Hiroshi Nakashima. 2000. Orgel: An parallel programming language with declarative communication streams. In Proceedings of the International Symposium on High Performance Computing. Springer, 344–354.
[181]
Kenneth O’brien, Ilia Pietri, Ravi Reddy, Alexey Lastovetsky, and Rizos Sakellariou. 2017. A survey of power and energy predictive models in HPC systems and applications. ACM Computing Surveys (CSUR) 50, 3 (2017), 1–38.
[182]
Edwin M. Paalvast, Henk J. Sips, and Leo C. Breebaart. 1991. Booster: A high-level language for portable parallel algorithms. Applied Numerical Mathematics 8, 2 (1991), 177–192.
[183]
Patrick Viry. 2017. Ateji PX for Java: Parallel Programming Made Simple. Retrieved form https://www.slideshare.net/PatrickViry/ateji-px-for-java. (2017). Accessed: 2021-06-15.
[184]
Hervé Paulino and Eduardo Marques. 2015. Heterogeneous programming with single operation multiple data. Journal of Computer and System Sciences 81, 1 (2015), 16–37.
[185]
L. Moniz Pereira, L. F. Monteiro, Jose C. Cunha, and Joaquim N. Aparicio. 1988. Concurrency and communication in Delta Prolog. In Proceedings of the 1988 International Specialist Seminar on the Design and Application of Parallel Digital Processors. IET, 94–104.
[186]
Kai Petersen, Robert Feldt, Shahid Mujtaba, and Michael Mattsson. 2008. Systematic mapping studies in software engineering. In Proceedings of the 12th International Conference on Evaluation and Assessment in Software Engineering (EASE’08). British Computer Society, Swinton, UK, 68–77. Retrieved form http://dl.acm.org/citation.cfm?id=2227115.2227123.
[187]
Michael Philippsen, Thomas M. Warschko, Walter F. Tichy, and Christian G. Herter. 1993. Project triton: Towards improved programmability of parallel machines. In [1993] Proceedings of the 26th Hawaii International Conference on System Sciences, Vol. 1. IEEE, 192–201.
[188]
Eduardo Gurgel Pinho and Francisco Heron de Carvalho Junior. 2014. An object-oriented parallel programming language for distributed-memory parallel computing platforms. Science of Computer Programming 80 (2014), 65–90.
[189]
Katalin Popovici, Xavier Guerin, Lisane Brisolara, and Ahmed Jerraya. 2007. Mixed hardware software multilevel modeling and simulation for multithreaded heterogeneous MPSoC. In Proceedings of the 2007 International Symposium on VLSI Design, Automation and Test. IEEE, 1–4.
[190]
Jonathan Ragan-Kelley, Connelly Barnes, Andrew Adams, Sylvain Paris, Frédo Durand, and Saman Amarasinghe. 2013. Halide: A language and compiler for optimizing parallelism, locality, and recomputation in image processing pipelines. Acm Sigplan Notices 48, 6 (2013), 519–530.
[191]
Frédéric Raimbault and Dominique Lavenier. 1993. Relacs for systolic programming. In Proceedings of International Conference on Application Specific Array Processors. IEEE, 132–135.
[192]
Rafael Ramirez. 1998. Time, communication and synchronisation in an agent-based programming language. In Proceedings. 5th International Workshop on Temporal Representation and Reasoning (Cat. No. 98EX157). IEEE, 169–176.
[193]
Pushpa Rao and Clifford Walinsky. 1993. An equational language for data-parallelism. ACM SIGPLAN Notices 28, 7 (1993), 112–118.
[194]
Aseem Rastogi, Matthew A. Hammer, and Michael Hicks. 2014. Wysteria: A programming language for generic, mixed-mode multiparty computations. In Proceedings of the 2014 IEEE Symposium on Security and Privacy. IEEE, 655–670.
[195]
Regents of the University of California. 2013. Bloom Programming Language, Release 0.9.7. Retrieved from http://bloom-lang.net/. (2013). Accessed: 2021-06-15.
[196]
R. J. Richards, Balkrishna Ramkumar, and Sukumar G. Rathnam. 1997. ELMO: Extending (sequential) languages with migratable objects-compiler support. In Proceedings 4th International Conference on High-Performance Computing. IEEE, 180–185.
[197]
Christoph Rieger, Fabian Wrede, and Herbert Kuchen. 2019. Musket: A domain-specific language for high-level parallel programming with algorithmic skeletons. In Proceedings of the 34th ACM/SIGAPP Symposium on Applied Computing. 1534–1543.
[198]
Martin C. Rinard and Monica S. Lam. 1998. The design, implementation, and evaluation of Jade. ACM Transactions on Programming Languages and Systems 20, 3 (1998), 483–545.
[199]
Joseph A. Roback and Gregory R. Andrews. 2010. Gossamer: A lightweight approach to using multicore machines. In Proceedings of the 2010 39th International Conference on Parallel Processing. IEEE, 30–39.
[200]
Mark Rodgers, Amanda Sowden, Mark Petticrew, Lisa Arai, Helen Roberts, Nicky Britten, and Jennie Popay. 2009. Testing methodological guidance on the conduct of narrative synthesis in systematic reviews: Effectiveness of interventions to promote smoke alarm ownership and function. Evaluation 15, 1 (2009), 49–73.
[201]
A. Wendell, O. Rodrigues, Frederic Guyomarc’h, and Jean-Luc Dekeyser. 2012. An MDE approach for automatic code generation from UML/MARTE to OpenCL. Computing in Science and Engineering 15, 1 (2012), 46–55.
[202]
RUST, Version 1.52.1. 2021. A Language Empowering Everyone to Build Reliable and Efficient Software. Retrieved from https://www.rust-lang.org/. (2021). Accessed: 2021-06-15.
[203]
Shigeyuki Sato and Hideya Iwasaki. 2009. A skeletal parallel framework with fusion optimizer for GPGPU programming. In Proceedings of the Asian Symposium on Programming Languages and Systems. Springer, 79–94.
[204]
Scala, Version 2.12.14. 2017. The Scala Programming Language. Retrieved from https://www.scala-lang.org/. (2017). Accessed: 2021-06-15.
[205]
M. Schollmeyer. 1991. Linda and parallel computing-running efficiently on parallel time. IEEE Potentials 10, 3 (1991), 43–45.
[206]
Oren Segal, Martin Margala, Sai Rahul Chalamalasetti, and Mitch Wright. 2014. High level programming framework for FPGAs in the data center. In Proceedings of the 2014 24th International Conference on Field Programmable Logic and Applications (FPL). IEEE, 1–4.
[207]
Yi Shan, Bo Wang, Jing Yan, Yu Wang, Ningyi Xu, and Huazhong Yang. 2010. FPMR: MapReduce framework on FPGA. In Proceedings of the 18th Annual ACM/SIGDA International Symposium on Field Programmable Gate Arrays. 93–102.
[208]
Pritam Prakash Shete, P. P. K. Venkat, Dinesh M. Sarode, Mohini Laghate, S. K. Bose, and R. S. Mundada. 2012. Object oriented framework for CUDA based image processing. In Proceedings of the 2012 International Conference on Communication, Information and Computing Technology (ICCICT). IEEE, 1–6.
[209]
Lawrence Snyder. 2007. The design and development of ZPL. In Proceedings of the 3rd ACM SIGPLAN Conference on History of Programming Languages. 8–1.
[210]
Jon A. Solworth. 1992. Epochs. ACM Transactions on Programming Languages and Systems 14, 1 (1992), 28–53.
[211]
Giandomenico Spezzano and Domenico Talia. 1997. A high-level cellular programming model for massively parallel processing. In Proceedings of the 2nd International Workshop on High-Level Parallel Programming Models and Supportive Environments. IEEE, 55–63.
[212]
Nenad Stankovic and Kang Zhang. 2002. A distributed parallel programming framework. IEEE Transactions on Software Engineering 28, 5 (2002), 478–493.
[213]
Ketil Stølen. 1991. A method for the development of totally correct shared-state parallel programs. In Proceedings of the International Conference on Concurrency Theory. Springer, 510–525.
[214]
R. F. Stone and H. S. M. Zedan. 1989. Designing time critical systems with TACT. In [1989] Proceedingsof the EUROMICRO Workshop on Real Time. IEEE, 74–82.
[215]
Andrew Stromme, Ryan Carlson, and Tia Newhall. 2012. Chestnut: A Gpu programming language for non-experts. In Proceedings of the 2012 International Workshop on Programming Models and Applications for Multicores and Manycores. 156–167.
[216]
Shelly S. Stubbs and Doris L. Carver. 1995. IPCC++: A C++ extension for interprocess communication with objects. In Proceedings of the COMPSAC. IEEE, 205–210.
[217]
Yan Su, Feng Shi, Shahnawaz Talpur, Jin Wei, and Hai Tan. 2014. Exploiting controlled-grained parallelism in message-driven stream programs. The Journal of Supercomputing 70, 1 (2014), 488–509.
[218]
Jiawen Sun, Hans Vandierendonck, and Dimitrios S. Nikolopoulos. 2017. GraphGrind: Addressing load imbalance of graph partitioning. In Proceedings of the International Conference on Supercomputing. 1–10.
[219]
Yuanhao Sun, Tianyou Li, Qi Zhang, Jia Yang, and Shih-wei Liao. 2007. Parallel xml transformations on multi-core processors. In Proceedings of the IEEE International Conference on e-Business Engineering. IEEE, 701–708.
[220]
B. Suresh and R. Nadarajan. 2003. Object oriented parallel programming model on a network of workstations. In Proceedings of the International Conference on Computational Science. Springer, 1000–1010.
[221]
A. R. Surve, A. R. Khomane, and S. Cheke. 2013. Energy awareness in HPC: A survey. International Journal of Computer Science and Mobile Computing 2, 3 (2013), 46–51.
[222]
Lukasz G. Szafaryn, Todd Gamblin, Bronis R. De Supinski, and Kevin Skadron. 2013. Trellis: Portability across architectures with a high-level framework. Journal of Parallel and Distributed Computing 73, 10 (2013), 1400–1413.
[223]
S. Tucker Taft. 2019. ParaSail: A pointer-free pervasively-parallel language for irregular computations. The Art Science and Engineering of Programming 3, 3 (2019), 7. DOI:https://doi.org/10.22152/programming-journal.org/2019/3/7
[224]
S. Tucker Taft, Brad Moore, Luís Miguel Pinho, and Stephen Michell. 2014. Safe parallel programming in Ada with language extensions. In Proceedings of the HILT. 87–96.
[225]
David Tarditi, Sidd Puri, and Jose Oglesby. 2006. Accelerator: Using data parallelism to program GPUs for general-purpose uses. ACM SIGPLAN Notices 41, 11 (2006), 325–335.
[226]
Enric Tejedor, Yolanda Becerra, Guillem Alomar, Anna Queralt, Rosa M. Badia, Jordi Torres, Toni Cortes, and Jesús Labarta. 2017. PyCOMPSs: Parallel computational workflows in Python. The International Journal of High Performance Computing Applications 31, 1 (2017), 66–82.
[227]
The Julia Programming Language. 2021. Julia in a Netshell, Version 1.6.1. Retrieved from https://julialang.org/. (2021). Accessed: 2021-06-15.
[228]
The Open MPI Project. 2021. Open MPI: Open Source High Performance Computing. Retrieved from https://www.open-mpi.org/. (2021). Accessed: 2021-06-15.
[229]
George K. Thiruvathukal, Phillip M. Dickens, and Shahzad Bhatti. 2000. Java on networks of workstations (JavaNOW): A parallel computing framework inspired by Linda and the Message Passing Interface (MPI). Concurrency: Practice and Experience 12, 11 (2000), 1093–1116.
[230]
Peter Thoman, Kiril Dichev, Thomas Heller, Roman Iakymchuk, Xavier Aguilar, Khalid Hasanov, Philipp Gschwandtner, Pierre Lemarinier, Stefano Markidis, Herbert Jordan, Thomas Fahringer, Kostas Katrinis, Erwin Laure, and Dimitrios S. Nikolopoulos. 2018. A taxonomy of task-based parallel programming technologies for high-performance computing. The Journal of Supercomputing 74, 4 (2018), 1422–1434.
[231]
John Thornley. 1995. Declarative Ada: Parallel dataflow programming in a familiar context. In Proceedings of the 1995 ACM 23rd Annual Conference on Computer Science. 73–80.
[232]
Bo-Ming Tong and Ho-Fung Leung. 1998. Data-parallel concurrent constraint programming. The Journal of Logic Programming 35, 2 (1998), 103–150.
[233]
TOP500.org. TOP500 – The List. Retrieved from https://www.top500.org/lists/top500/2020/06/. (????). Accessed: 2020-07-03.
[234]
Anand Tripathi, Vinit Padhye, and Tara Sasank Sunkara. 2014. Beehive: A framework for graph data analytics on cloud computing platforms. In Proceedings of the 2014 43rd International Conference on Parallel Processing Workshops. IEEE, 331–338.
[235]
Jean-Baptiste Tristan, Daniel Huang, Joseph Tassarotti, Adam C. Pocock, Stephen Green, and Guy L. Steele. 2014. Augur: Data-parallel probabilistic modeling. In Proceedings of the Advances in Neural Information Processing Systems. 2600–2608.
[236]
Miwako Tsuji, Mitsuhisa Sato, Maxime Hugues, and Serge Petiton. Multiple-SPMD Programming Environment Based on PGAS and Workflow Toward Post-petascale Computing. In Proceedings of the 42 International Conference on Parallel Processing. DOI:https://doi.org/10.1109/ICPP.2013.58
[237]
David Ungar and Sam S. Adams. 2010. Harnessing emergence for manycore programming: Early experience integrating ensembles, adverbs, and object-based inheritance. In Proceedings of the SPLASH. 19–26.
[238]
Theo Ungerer and Eberhard Zehendner. 1991. A multi-level parallelism architecture. ACM SIGARCH Computer Architecture News 19, 4 (1991), 86–93.
[239]
Gautam Upadhyaya, Vijay S. Pai, and Samuel P. Midkiff. 2007. Expressing and exploiting concurrency in networked applications with aspen. In Proceedings of the PPoPP. 13–23.
[240]
Mark Utting, Min-Hsien Weng, and John G. Cleary. 2013. The JStar language philosophy. In Proceedings of the 2013 International Workshop on Programming Models and Applications for Multicores and Manycores. 31–41.
[241]
Kees van Reeuwijk, Arjan J. C. van Gemund, and Henk J. Sips. 1997. Spar: A programming language for semi-automatic compilation of parallel programs. Concurrency: Practice and Experience 9, 11 (1997), 1193–1205.
[242]
Stéphane Vialle, Thierry Cornu, and Yannick Lallement. 1996. ParCeL-1: A parallel programming language based on autonomous and synchronous actors. ACM SIGPLAN Notices 31, 8 (1996), 43–51.
[243]
Vita Nuova. 1995. Limbo Programming Language. Retrieved from http://www.vitanuova.com/inferno/licence.html. (1995). Accessed: 2021-06-15.
[244]
Jürgen Vollmer and Ralf Hoffart. 1992. Modula-Pa language for parallel programming definition and implementation on a transputer network. In Proceedings of the 1992 International Conference on Computer Languages. IEEE, 54–64.
[245]
Reinhard Von Hanxleden. 2009. SyncCharts in C: A proposal for light-weight, deterministic concurrency. In Proceedings of the 7th ACM International Conference on Embedded Software. 225–234.
[246]
Stewart von Itzstein and David Kearney. 2002. Applications of Join Java. In Proceedings of the 7th Asia-Pacific Computer Systems Architectures Conference. 37–46.
[247]
Benjamin J. L. Wang and Uwe R. Zimmer. 2017. Pure concurrent programming. In Proceedings of the 2017 IEEE International Parallel and Distributed Processing Symposium Workshops. IEEE, 824–831.
[248]
Chen Wang, Ce Yu, Jizhou Sun, and Xiangfei Meng. 2015. DPX10: An efficient X10 framework for dynamic programming applications. In Proceedings of the 2015 44th International Conference on Parallel Processing. IEEE, 869–878.
[249]
H. C. Wang, C. K. Yuen, and M. D. Feng. 1999. BaLinda c++: Run-time support for concurrent object-oriented language. In Proceedings of the of I-SPAN’99. IEEE, 36–41.
[250]
P. Y. Wang, S. B. Seidman, M. D. Rice, and T. E. Gerasch. 1989. An object-method programming language for data parallel computation. In Proceedings of the HICSS, Vol. 2. IEEE, 745–750.
[251]
Y. M. R. D. Wepathana, G. Anthonys, and L. S. K. Udugama. 2015. Compiler for a simplified programming language aiming on Multi Core Students’ Experimental Processor. In Proceedings of the ICIIS. IEEE, 284–289.
[252]
Emily A. West and Andrew S. Grimshaw. 1995. Braid: Integrating task and data parallelism. In Proceedings of the 5th Symposium on the Frontiers of Massively Parallel Computation. IEEE, 211–219.
[253]
Claes Wohlin. 2014. Guidelines for snowballing in systematic literature studies and a replication in software engineering. In Proceedings of the EASE. ACM, Article 38, 38:1–38:10 pages.
[254]
C. Wohlin, P. Runeson, M. Höst, M. C. Ohlsson, B. Regnell, and A. Wesslén. 2012. Experimentation in Software Engineering. Springer.
[255]
Justin M. Wozniak, Timothy G. Armstrong, Michael Wilde, Daniel S. Katz, Ewing Lusk, and Ian T. Foster. 2013. Swift/t: Large-scale application composition via distributed-memory dataflow processing. In Proceedings of the CCGRID. IEEE, 95–102.
[256]
Tianji Wu, Di Wu, Yu Wang, Xiaorui Zhang, Hong Luo, Ningyi Xu, and Huazhong Yang. 2011. Gemma in April: A matrix-like parallel programming architecture on OpenCL. In Proceedings of the 2011 Design, Automation and Test in Europe. IEEE, 1–6.
[257]
Chengzhi Xu, Hong Zhu, Ian Bayley, David Lightfoot, Mark Green, and Peter Marshall. 2016. Caople: A programming language for microservices saas. In Proceedings of the 2016 IEEE Symposium on Service-Oriented System Engineering. IEEE, 34–43.
[258]
Zhiwei Xu and Kai Hwang. 1989. Molecule: A language construct for layered development of parallel programs. IEEE Transactions on Software Engineering 15, 5 (1989), 587–599.
[259]
Eugene Yip, Alain Girault, Partha S. Roop, and Morteza Biglari-Abhari. 2016. The forec synchronous deterministic parallel programming language for multicores. In Proceedings of the MCSOC. IEEE, 297–304.
[260]
Mohamed Youssfi, Omar Bouattane, Mohamed O. Bensalah, ENSET Bd Hassan I. I. BP, and Mohammedia Morocco. 2010. On the object modelling of the Massively parallel architecture Computers. In Proceedings of the 11th IASTED International Conference on Software Engineering and Applications. 71–78.
[261]
Yuanyuan Zhang, Hidetoshi Iwashita, Kuninori Ishii, Masanori Kaneko, Tomotake Nakamura, and Kohichiro Hotta. 2010. Hybrid parallel programming on SMP clusters using XPFortran and OpenMP. In Proceedings of the International Workshop on OpenMP. Springer, 133–148.
[262]
Yunming Zhang, Mengjiao Yang, Riyadh Baghdadi, Shoaib Kamil, Julian Shun, and Saman Amarasinghe. 2018. Graphit: A high-performance graph dsl. Proceedings of the ACM on Programming Languages 2, OOPSLA (2018), 1–30.
[263]
Zhen Zheng, Chanyoung Oh, Jidong Zhai, Xipeng Shen, Youngmin Yi, and Wenguang Chen. 2017. Versapipe: A versatile programming framework for pipelined computing on GPU. In Proceedings of the MICRO. IEEE, 587–599.
[264]
Jin Zhou and Brian Demsky. 2010. Bamboo: A data-centric, object-oriented approach to many-core software. In Proceedings of the 31st ACM SIGPLAN Conference on Programming Language Design and Implementation. 388–399.

Cited By

View all

Recommendations

Comments

Information & Contributors

Information

Published In

cover image ACM Computing Surveys
ACM Computing Surveys  Volume 55, Issue 2
February 2023
803 pages
ISSN:0360-0300
EISSN:1557-7341
DOI:10.1145/3505209
Issue’s Table of Contents

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 18 January 2022
Accepted: 01 August 2021
Revised: 01 August 2021
Received: 01 September 2020
Published in CSUR Volume 55, Issue 2

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Parallel computing
  2. programming
  3. modelling
  4. languages
  5. frameworks
  6. systematic literature review

Qualifiers

  • Survey
  • Refereed

Funding Sources

  • Knowledge Foundation
  • DPAC
  • SACSys
  • Swedish Foundation for Strategic Research

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)377
  • Downloads (Last 6 weeks)43
Reflects downloads up to 03 Jan 2025

Other Metrics

Citations

Cited By

View all

View Options

Login options

Full Access

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Full Text

View this article in Full Text.

Full Text

HTML Format

View this article in HTML Format.

HTML Format

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media