ISO/IEC JTC1/SC22/WG5-N1689 Letter to the Convener from John Wallin Hi John, I just got a read of the British Standards Institution response to the Fortran 08 draft. I am probably preaching to the choir, but here are a few comments. I am very disturbed to see the suggestions about slipping the schedule two years and/or dropping major features in the language. In particular, I am concerned about dropping co-arrays. (I am not doing to talk about the macros or BITS features.) Although this is a new feature, it is coming at a critical time for the language. With Intel creating 80-core chips scheduled for release in the next five years, we need a way to take advantage of this new computing power. Adding on to this, the speed of network connections between boxes is making the walls between CPUs less problematic. In five years, it would be surprising if many machines don't have two to four CPU chips, each with a few dozen (or more cores). The target for our audience will probably be higher end versions of the machines for scientific use - with perhaps several boxes tied together as well. The machines will probably be non-homogeneous and hierarchical, particularly in terms of memory access times. As a data point, it is useful to note that my mid-end current home machine has 96 floating point pipelines in its graphics card and a dual core CPU. I believe it is critical to realize that parallel computing is here now for commodity PCs, and this isn't some concept that is going to happen in the distant future. These hardware changes are going to affect users at the desktop level tremendously, as programmers struggle to optimize their codes for this new hardware. I think the biggest mistake in the document is that "co-arrays would be relevant to only a minority of users." I don't believe this will be true in five or ten years for anyone who wants to get the performance out of their machine they need to solve scientific problems, especially given the current trends in hardware evolution. Right now, as you know, the options for doing parallel computing are fairly limited. You can use HPF extensions, but it limits the types of codes that you can program. The same is true with OpenMP. For many complex problems, MPI is the only workable option especially if you are crossing over a network to access remote data. MPI is a very flexible, general, and yet horrific way to do work on complex parallel code. It is very difficult to write and debug code using MPI, and the book keeping aspects tend to dominate the code. I teach a course in high performance/parallel computing. Seeing how students respond to MPI and the other paradigms out there (threads, sockets, openMP, etc), I believe there is a huge need to have a language that can express parallel concepts easily. Co-arrays fit very nicely into what people need to do. It isn't perfectly intuitive, but it is infinitely better than most of the other options around AND it fits the array model of Fortran perfectly. It is also clear that the demand for this type of paradigm is going to grow greatly over the next few years as hardware changes. We haven't barely begun to address these issues in the Computational/Computer Science curriculum, but I suspect industry is going to start demanding our students know how to take advantage of the hardware that is coming. Having something we can teach them that is straightforward would greatly help make this possible. I also should note that the argument that we need more experience with Fortran 03 doesn't quite make sense to me. Co-arrays really only address issues that were in the 95 draft and are largely independent of the revisions to 03. Yes - the feature does add complexity to the language, but it doesn't interfere or interact with 03 in a deep way. In summary, I think the hardware on commodity PCs is going to force us to use parallel programming constructs on any code we want to run efficiently. The current paradigms are not well suited for the task in many types of complex codes. If we don't have constructs available to make this work, the language will be in serious trouble. Fortran 08's co-arrays are critical to taking advantage of the new hardware that is on the way. Well, that's my two cents. I hope all is going well for you and hope to see you at the November meeting. -John Wallin