||Fortran 90 is not just the long-awaited updating of the Fortran language to modern computing practices. It is also the vanguard of a much larger revolution in computing, that of multiprocessor computers and widespread parallel programming. Parallel computing has been a feature of the largest supercomputers for quite some time. Now, however, it is rapidly moving towards the desktop.
As we watched the gestation and birth of Fortran 90 by its governing "X3J3 Committee" (a process interestingly described by a leading committee member, Michael Metcalf, in the Foreword that follows), it became clear to us that the right moment for moving Numerical Recipes from Fortran 77 to Fortran 90 was sooner, rather than later.
Fortran 90 compilers are now widely available. Microsoft's Fortran PowerSta-tion for Windows 95 brings that firm's undeniable marketing force to PC desktop; we have tested this compiler thoroughly on our code and found it excellent in compatibility and performance. In the UNIX world, we have similarly tested, and had generally fine experiences with, DEC's Fortran 90 for Alpha AXP and IBM's xlf for RS/6000 and similar machines. NAG's Fortran 90 compiler also brings excellent Fortran 90 compatibility to a variety of UNIX platforms. There are no doubt other excellent compilers, both available and on the way. Fortran 90 is completely backwards compatible with Fortran 77, by the way, so you don't have to throw away your legacy code, or keep an old compiler around.
There have been previous special versions of Fortran for parallel supercomputers, but always specific to a particular hardware. Fortran 90, by contrast, is designed to provide a general, architecture-independent framework for parallel computation. Equally importantly, it is an international standard, agreed upon by a large group of computer hardware and software manufacturers and international standards bodies.
With the Fortran 90 language as a tool, we want this volume to be your complete guide for learning how to "think parallel." The language itself is very general in this regard, and applicable to many present and future computers, or even to other parallel computing languages as they come along. Our treatment emphasizes general principles, but we are also not shy about pointing out parallelization "tricks" that have frequent applicability. These are not only discussed in this volume's principal text chapters (Chapters 21-23), but are also sprinkled throughout the chapters of Fortran 90 code, called out by a special "parallel hint" logo (left, above). Also scattered throughout the code chapters are specific "Fortran 90 tips," with their own distinct graphic call-out (left). After you read the text chapters, you might want simply to browse among these hints and tips.
A special note to С programmers: Right now, there is no effort at producing a parallel version of С that is comparable to Fortran 90 in maturity, acceptance, and stability. We think, therefore, that С programmers will be well served by using this volume for an educational excursion into Fortran 90, its parallel programming constructions, and the numerical algorithms that capitalize on them. С and C++ programming have not been far from our minds as we have written this volume, and we think that you will find that time spent in absorbing its principal lessons (in Chapters 21-23) will be amply repaid in the future, as С and C++ eventually develop standard parallel extensions.