Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
research-article
Open access

History of coarrays and SPMD parallelism in Fortran

Published: 12 June 2020 Publication History

Abstract

The coarray programming model is an expression of the Single-Program-Multiple-Data (SPMD) programming model through the simple device of adding a codimension to the Fortran language. A data object declared with a codimension is a coarray object. Codimensions express the idea that some objects are located in local memory while others are located in remote memory. Coarray syntax obeys most of the same rules for normal array syntax. It is familiar to the Fortran programmer so the use of coarray syntax is natural and intuitive. Although the basic idea is quite simple, inserting it into the language definition turned out to be difficult.
In addition, the process was complicated by rapidly changing hardware and heated arguments over whether parallelism should be supported best as an interface to language-independent libraries, as a set of directives superimposed on languages, or as a set of specific extensions to existing languages.
In this paper, we review both the early history of coarrays and also their development into a part of Fortran 2008 and eventually into a larger part of Fortran 2018. Coarrays have been used, for example, in weather forecasting and in neural networks and deep learning.

References

[1]
American Standards Association. 1966. American Standard FORTRAN X3.9-1966.
[2]
John V Ashby and John K Reid. 2008. Migrating a Scientific Application from MPI to Coarrays. CUG 2008 Proceedings (2008), 1–8.
[3]
John Backus. 1981. The History of Fortran I, II, and III. In History of Programming Languages I, Richard L. Wexelblat (Ed.). ACM, New York, NY, USA, 25–74.
[4]
Dan Bonachea and Paul H. Hargrove. 2017. GASNet Specification, v1.8.1. Technical Report LBNL-2001064. Lawrence Berkeley National Laboratory.
[5]
William W. Carlson, Jesse M. Draper, David E. Culler, Kathy Yelick, Eugene Brooks, and Karen Warren. 1999. Introduction to UPC and language specification. CCS-TR-99-157 (May 1999). Available at https://www.researchgate.net/ .
[6]
Ian D. Chivers and Jane Sleightholme. 2008. Compiler support for the Fortran 2003 Standard. ACM Fortran Forum 27, 2 (2008), 22–24.
[7]
Milan Curcic. 2019. A parallel Fortran framework for neural networks and deep learning. ACM Fortran Forum 38, 1 (2019), 4–21.
[8]
Aleksander Donev. 2007. Rationale for Co-arrays in Fortran 2008. ACM Fortran Forum 26, 3 (2007), 9–19.
[9]
Maria Eleftheriou, Siddhartha Chatterjee, and José Moreira. 2002. A C++ Implementation of the Co-Array Programming Model for Blue Gene/L.
[10]
Alessandro Fanfarillo, Tobias Burnus, Valeria Cardellini, Salvatore Filippone, Dan Nagle, and Damian Rouson. 2014. OpenCoarrays: open-source transport layers supporting coarray Fortran compilers. In Proceedings of the 8th International Conference on Partitioned Global Address Space Programming Models. ACM, 4.
[11]
Alessandro Fanfarillo, Sudip Kumar Garain, Dinshaw Balsara, and Daniel Nagle. 2019. Resilient computational applications using Coarray Fortran. Parallel Comput. 81 (2019), 58–67.
[12]
Karl Feind. 1995. Shared Memory Access (SHMEM) Routines. CUG 1995 Proceedings (1995), 303–308.
[13]
Fujitsu. 2017. Advanced Software for the FUJITSU Supercomputer PRIMEHPC FX100. https://web.archive.org/web/2017*/ http://www.fujitsu.com/global/Images/primehpc-fx100-soft-en.pdf Also at NA http://www.fujitsu.com/global/Images/ primehpc-fx100-soft-en.pdf .
[14]
Sudip Garain, Dinshaw S. Balsara, and John Reid. 2015. Comparing Coarray Fortran (CAF) with MPI for Several Structured Mesh PDE Applications. J. Comput. Phys. 297, C (Sept. 2015), 237–253.
[15]
GNU. 2020. Fortran 2008 Features supported by GNU Fortran. https://web.archive.org/web/20191221152824/http:// fortranwiki.org/fortran/show/Fortran+2008+status Also at NA http://fortranwiki.org/fortran/show/Fortran+2008+status .
[16]
High Performance Fortran Forum. 1993. High Performance Fortran Language Specification Version 1.0.
[17]
IEEE. 1985. IEEE Standard 754–1985 for binary floating-point arithmetic. Institute of Electrical and Electronics Engineers, New York.
[18]
INCITS PL22.3. 2020. Website. https://j3-fortran.org
[19]
International Business Machines Corporation. 1954. Specifications for The IBM Mathematical FORmula TRANSlating System, FORTRAN. Available at https://www.computerhistory.org/collections/catalog/102679231 .
[20]
ISO. 1978. American Standard programming language FORTRAN ANSI X3.9-1978.
[21]
ISO. 1991. Information technology – Programming languages – FORTRAN ISO/IEC 1539:1991.
[22]
ISO/IEC. 2004. International Standard ISO/IEC 1539-1:2004 Information technology - Programming languages - Fortran -Part 1: Base language. ISO/IEC, Geneva.
[23]
ISO/IEC. 2010. International Standard ISO/IEC 1539-1:2010(E) Information technology - Programming languages - Fortran -Part 1: Base language. ISO/IEC, Geneva.
[24]
ISO/IEC. 2018. International Standard ISO/IEC 1539-1:2018(E) Information technology - Programming languages - Fortran -Part 1: Base language. ISO/IEC, Geneva.
[25]
ISO/IEC JTC1/SC22/WG5. 2020. Website. https://wg5-fortran.org/documents.html
[26]
Troy A Johnson. 2013. Coarray C++. In Proceedings of the 7th International Conference on PGAS Programming Models (PGAS ’13). The University of Edinburgh, Edinburgh, UK, 54–66.
[27]
Ken Kennedy, Charles Koelbel, and Hans Zima. 2007. The Rise and Fall of High Performance Fortran: An Historical Object Lesson. In Proceedings of the Third ACM SIGPLAN Conference on History of Programming Languages (HOPL III). ACM, New York, NY, USA, 7–1–7–22.
[28]
John Mellor-Crummey, Laksono Adhianto, William N. Scherer, III, and Guohua Jin. 2009. A New Vision for Coarray Fortran. In Proceedings of the Third Conference on Partitioned Global Address Space Programing Models (PGAS ’09). ACM, New York, NY, USA, Article 5, 9 pages.
[29]
Message Passing Interface Forum. 2015. MPI: A Message-Passing Interface Standard Version 3.1. University of Tennessee, Knoxville, Tennessee. Available at https://www.mpi-forum.org/docs/ .
[30]
Michael Metcalf, John Reid, and Malcolm Cohen. 2004. Fortran 95/2003 Explained. Oxford University Press.
[31]
Michael Metcalf, John Reid, and Malcolm Cohen. 2018. Modern Fortran Explained incorporating Fortran 2018. Oxford University Press.
[32]
G. Mozdzynski, M. Hamrud, N. Wedi, J. Doleschal, and H. Richardson. 2012. A PGAS implementation by co-design of the ECMWF Integrated Forecasting System (IFS). (2012), 652–661.
[33]
NAG. 2020. NAG Fortran Compiler. https://web.archive.org/web/20191224113758/www.nag.co.uk/nag-compiler Also at NA https://www.nag.co.uk/nag-compiler .
[34]
Robert W. Numrich. 1997. F −− : A Parallel Extension to Cray Fortran. Scientific Programming 6 (1997), 275–284.
[35]
Robert W. Numrich. 2018. Parallel Programming with Co-arrays. CRC Press.
[36]
Robert W. Numrich and John Reid. 1998. Co-array Fortran for Parallel Programming. SIGPLAN Fortran Forum 17, 2 (Aug. 1998), 1–31.
[37]
Robert W. Numrich and John Reid. 2005. Co-array Fortran. SIGPLAN Fortran Forum 24, 2 (Aug. 2005), 4–17.
[38]
Robert W. Numrich, John Reid, and K. Kim. 1998. Writing a multigrid solver using co-array Fortran. In Applied Parallel Computing Large Scale Scientific and Industrial Problems. PARA 1998., Kågström B., Dongarra J., Elmroth E., and Waśniewski J. (Eds.). Lecture Notes in Computer Science, vol 1541. Springer, Berlin, Heidelberg, 390–399.
[39]
R. W. Numrich, P. L. Springer, and J. C. Peterson. 1994. Measurement of communication rates on the cray T3D interprocessor network. In High-Performance Computing and Networking. HPCN-Europe 1994., Gentzsch W. and Harms U. (Eds.). Lecture Notes in Computer Science, vol 797. Springer, Berlin, Heidelberg, 150–157.
[40]
Robert W. Numrich and Jon L. Steidel. 1997a. F −− : A Simple Parallel Extension to Fortran 90. SIAM News 30 (1997), 1, 6–7.
[41]
Robert W. Numrich and Jon L. Steidel. 1997b. Simple Parallel Extensions to Fortran 90. In Proceedings of the Eighth SIAM Conference on Parallel Processing for Scientific Computing, PPSC 1997, Hyatt Regency Minneapolis on Nicollel Mall Hotel, Minneapolis, Minnesota, USA, March 14-17, 1997.
[42]
OpenMP. 2020. Compilers and Tools,. https://www.openmp.org/resources/openmp-compilers-tools/
[43]
OpenMP Architecture Review Board. 1997. OpenMP Fortran Application Programming Interface 1.0. Available at https: //www.openmp.org/wp-content/uploads/fspec10.pdf .
[44]
OpenMP Architecture Review Board. 2018. OpenMP Application Programming Interface. Available at https://www.openmp. org/wp-content/uploads/OpenMP-API-Specification-5.0.pdf .
[45]
Parallel Computing Forum. 1991. PCF Parallel Fortran Extensions. SIGPLAN Fortran Forum 10, 3 (Sept. 1991), 1–57.
[46]
Douglas M. Pase, Tom MacDonald, and Andrew Meltzer. 1994. The CRAFT Fortran Programming Model. Scientific Programming 3 (1994), 227–253.
[47]
Craig Rasmussen, Matthew Sottile, Jarek Nieplocha, Robert Numrich, and Eric Jones. 2004. Co-array Python: A Parallel Extension to the Python Language, Vol. 3149. 632–637.
[48]
Soren Rasmussen, Ethan D Gutmann, Brian Friesen, Damian Rouson, Salvatore Filippone, and Irene Moulitsas. 2018. Development and performance comparison of MPI and Fortran Coarrays within an atmospheric research model. In Proceedings of PAW-ATM 18: Parallel Applications Workshop, Alternatives to MPI (PAW 18).
[49]
Jean E. Sammet. 1981. The Early History of COBOL. In History of Programming Languages I, Richard L. Wexelblat (Ed.). ACM, New York, NY, USA, 199–243.
[50]
Aaron Sawdey, Matthew O’Keefe, Rainer Bleck, and Robert W. Numrich. 1994. The Design, Implementation, and Performance of a Parallel Ocean Circulation Model. In Proceedings of the Sixth ECMWF Workshop on the Use of Parallel Processors in Meteorology. 523–550.
[51]
A. Shterenlikht, L. Margetts, and L. Cebamanos. 2018. Modelling fracture in heterogeneous materials on HPC systems using a hybrid MPI/Fortran coarray multi-scale CAFE framework. Advances in Engineering Software 125 (2018), 155–166.
[52]
V. S. Sunderam. 1990. PVM: A framework for parallel distributed computing. Concurrency and Computation Practice and Experience 2, 4 (Dec. 1990), 315–339.
[53]
Atsuya Uno. 2005. Software of the Earth Simulator. Journal of the Earth Simulator 3 (2005), 52–59.
[54]
Andrew Vaught. 2012. G95 Website. https://web.archive.org/web/20191210041340/http://www.g95.org/ Also at NA http://www.g95.org .

Cited By

View all
  • (2022)The State of FortranComputing in Science & Engineering10.1109/MCSE.2022.315986224:2(63-72)Online publication date: 1-Mar-2022
  • (2021)Parallel Hybrid Simulations of Block Copolymer Nanocomposites using Coarray FortranMacromolecular Theory and Simulations10.1002/mats.20210000730:4Online publication date: 31-Mar-2021
  • (2020)Refining Fortran Failed Images2020 IEEE/ACM Fifth International Workshop on Extreme Scale Programming Models and Middleware (ESPM2)10.1109/ESPM251964.2020.00009(1-11)Online publication date: Nov-2020

Recommendations

Comments

Information & Contributors

Information

Published In

cover image Proceedings of the ACM on Programming Languages
Proceedings of the ACM on Programming Languages  Volume 4, Issue HOPL
June 2020
1524 pages
EISSN:2475-1421
DOI:10.1145/3406494
Issue’s Table of Contents
This work is licensed under a Creative Commons Attribution International 4.0 License.

Publisher

Association for Computing Machinery

New York, NY, United States

Publication History

Published: 12 June 2020
Published in PACMPL Volume 4, Issue HOPL

Permissions

Request permissions for this article.

Check for updates

Author Tags

  1. Coarrays
  2. Fortran
  3. High Performance Computing (HPC)
  4. Massively Parallel Processors (MPP)
  5. Parallel programming
  6. Single Program Multiple Data (SPMD)

Qualifiers

  • Research-article

Contributors

Other Metrics

Bibliometrics & Citations

Bibliometrics

Article Metrics

  • Downloads (Last 12 months)176
  • Downloads (Last 6 weeks)23
Reflects downloads up to 03 Oct 2024

Other Metrics

Citations

Cited By

View all
  • (2022)The State of FortranComputing in Science & Engineering10.1109/MCSE.2022.315986224:2(63-72)Online publication date: 1-Mar-2022
  • (2021)Parallel Hybrid Simulations of Block Copolymer Nanocomposites using Coarray FortranMacromolecular Theory and Simulations10.1002/mats.20210000730:4Online publication date: 31-Mar-2021
  • (2020)Refining Fortran Failed Images2020 IEEE/ACM Fifth International Workshop on Extreme Scale Programming Models and Middleware (ESPM2)10.1109/ESPM251964.2020.00009(1-11)Online publication date: Nov-2020

View Options

View options

PDF

View or Download as a PDF file.

PDF

eReader

View online with eReader.

eReader

Get Access

Login options

Full Access

Media

Figures

Other

Tables

Share

Share

Share this Publication link

Share on social media