Co-Arrays and Multi-Cores¶
Speaker: Bob Numrich, University of Minnesota
See: http://www.co-array.org/; this is Co-Array Fortran.
"Fortran is a modern language": Fortran 2003 is the current standard. It is object-oriented. "If you want the language to survive, you should use it that way." The syntax is not like that of C++ or Java.
It supports parameterized types, which are something like C++ templates.
The next version will be Fortran 2008 (maybe the name will change; it is not out yet). The co-array Fortran model will be part of the standard. "Push your favorite vendor to get it out."
The co-array model is "SPMD with a fixed number of virtual images."
SPMD, here, means a single program replicated a number of times (somewhat like the MPI model); it is not SIMD.
The different images can all be doing different things, but they are the same program (doing different things because of branching, etc.).
Co-Array Fortran is a "Partitioned Global Address Space language".
The language distinguishes between local data and global data.
What is a co-array? From http://docs.cray.com/books/S-2346-23/html-S-2346-23/g2200.html:
A syntactic extension to Fortran that offers a method for programming data passing; a data object that is identically allocated on each image and can be directly referenced syntactically by any other image.
The speaker did not bother to provide this definition.
Note that gfortran, GNU's most modern Fortran, focusses on Fortran 95, and has only a few features of Fortran 2003, much less than features of the upcoming 2008. G95 is a fork, and it supports more of Fortran 2003.
"Do we really want to chase this latest fad" (manycore chips??)
"Accelerators should be mapped to an image." Compilers should be able to generate code for GPUs. This should be done by the compiler. GPUs are like various long-vector machines that were too hard to program and are now dead. "You don't design a language to match hardware." This is a surprising thing to hear from a Fortran enthusiast!
G95 has a preliminary portable implementation (not gfortran)? Both the Cray and G95 implementations of co-arrays are "a little buggy". IBM will have one "some time soon". The speaker suggests to "Ask Intel for a multi-core implementation".
Chatter during the meeting seems to indicate vendors do not find the "business need" for the co-array features. It seems that the Fortran standards committee is not doing so well in getting compiler vendors to move along with the standard.