My D. Phil. research was in the field of theoretical particle physics, in particular predicting the properties of `exotic' mesons [1, 12-14]. This involved a combination of theoretical and computational work, the latter culminating in the development of a computationally-intensive Fortran program to perform a lattice-based calculation (which required weeks of CPU time on a VAX 11/780!) [12].
On completing my D.Phil, in October 1986 I joined the Theoretical High Energy Physics group in the Physics Department of Southampton University. For the first two years I was involved in the Esprit Supernode project, whose objective was the "development and application of a reconfigurable multi-transputer machine". During this time I developed programs for two large high-energy physics applications on multi-transputer computers:
The magnetic monopole work was done in collaboration with the IBM UK Scientific Centre in Winchester, who employed advanced visualisation techniques to display the complicated solutions. The results were published in both academic and popular journals [10,11], and attracted the attention of two eminent mathematicians in Oxford, resulting in a collaboration with them to calculate and visualise the trajectories of a pair of colliding monopoles. These results were recorded in a short movie [38], which was shown at conferences and universities worldwide.
After this I was involved in the pre-study phase of the Esprit Genesis project (October 1988 - March 1989). In this I developed two Fortran programs for the `Genesis' benchmark suite: CG2 (later renamed QCD2) and CG3, which perform the conjugate gradient iteration kernels of dynamical fermion lattice gauge theory simulations. Both sequential and message-passing versions were developed. I also used this benchmark suite to evaluate the T800 transputer, and an 8-processor Alliant FX/8 computer at the University of Urbana-Champaign, as part of a wide survey of parallel machines [7-8, 35].
More recently, in 1995 I developed HPF versions of these benchmarks, and in 1998 I developed highly optimised sequential Fortran 77 and Fortran 77 + MPI message-passing versions, together with scripts to simplify their use, and made the whole package available on the World Wide Web.
From April - September 1989 I worked at `Transputer Technology Solutions Ltd' (now the Southampton Parallel Applications Centre), a commercial offshoot of the Concurrent Computation group (see below). Here I performed a feasibility study for the Central Electricity Generating Board of porting a Cray Fortran program to multi-transputer machines [34]. I also developed a graphical performance monitor for transputers.
From TTS Ltd. I moved back to Southampton University in October 1989, this time to the newly-formed Concurrent Computation Group in the Department of Electronics and Computer Science.
My experiences of data-parallel programming of transputers and other distributed-memory machines in the Supernode and Genesis projects convinced me of the need to develop software tools to support this programming model.
An opportunity to enter this field of research came in 1989 with the start of the Esprit project PUMA (`Parallel Universal Message-Passing Architectures'; October 1989 - March 1992). My idea was to explore the possibility of automatically transforming, for distributed-memory message-passing architectures, standard Fortran 90 programs that had been supplemented by declarations specifying how data were to be distributed over the processor memories. It appeared to me that some of the new features of Fortran 90, which was then a forthcoming new standard, could facilitate this task, for instance its array syntax which expressed the potential for data parallelism, and explicit procedure interfaces.
In the PUMA project I therefore designed a small set of extensions to Fortran 90 for specifying data distribution, called Distributed Fortran 90, and developed a translator (called ADAPT) to transform a Distributed Fortran 90 program into a standard Fortran program to run on each processor of the target machine, with calls to an array-based communications library (ADLIB) for performing the data communications [9, 23, 31-33].
At about the same time a few other academic groups independently developed proposals for similar extensions to Fortran, in particular Fortran D from Rice and Syracuse Universities and Vienna Fortran from the University of Vienna. In January 1992 an international working group was established to develop a standard for such extensions to Fortran, called `High Performance Fortran' (HPF), with the participation of all of the major parallel computer vendors and a number of leading research groups. My work, along with Fortran D and Vienna Fortran, provided a significant input to the language development, and indeed [32] was one of 6 major input documents to the forum. I was the originator and author of a new feature of HPF, `pure procedures' [5, section 4.3], and made a proposal for `elemental references' to pure procedures [6, section 12], as well as a number of other contributions to the standard. Both of these features have now both been incorporated in the latest revision of the official Fortran standard, Fortran 95.
After the end of the PUMA project I was funded by the Esprit project CAMAS (`Computer Aided Migration of Application Systems'; October 1992 - September 1994) to develop tools to help programmers convert sequential Fortran codes into message-passing form. In this project I used the front-end of ADAPT as the basis for developing an interactive inter-procedural analyser, IDA [27, 29-30], which is now available in the public domain. I also began work on a static performance estimator for Fortran programs [4, 28].
As a small off-shoot of this work I also developed a tool called CMUNGE for encrypting and compacting C source codes, which I used to package IDA's source code for distribution.
[IDA Web page; CMUNGE Web page.]
I left the CAMAS project in April 1994 before completing the latter tool in order to commence a two-year EPSRC-funded research project, with support from NAG Ltd, entitled "The Efficient Translation of HPF for Distributed Memory Systems". The aims of this project were to develop a Subset HPF (see Footnote 1) compilation system and to use it as a platform for the research and development of advanced optimisations for HPF.
This project resulted in the development of a public domain Subset HPF compilation system, SHPF. It comprises the ADAPT translator, which I modified to support Subset HPF, together with a runtime library, ADLIB, which was developed by a colleague in a related project. SHPF provides unusually comprehensive and unrestricted support for Subset HPF's data mapping features, and employs some novel and significant optimisations [2, 18-21]. It was released to a number of test sites in June 1995, and was made publicly available by anonymous ftp in December 1995. The development and enhancement of this system is an ongoing activity, and new versions were released in June 1996 and September 1997, and further upgrades are planned.
From June 1996 until my departure from Southampton University at the end of October 1996 I was the coordinator of the Esprit HPC Standards project. Its purpose was to financially support European participation in meetings in the USA to develop three major HPC standards, namely HPF-2, MPI-2 (`Message-Passing Interface') and Parkbench (a standard set of parallel kernels and benchmarks), and to disseminate information about these activities electronically and by conducting workshops.
During my time in the project I set-up the project's Web page and expenses' claims procedure, and organised funding for a major HPF workshop in Vienna, at which I also gave a presentation about SHPF.
In July and August 1998 I made further developments to the Genesis CG2 and CG3 benchmarks, namely optimising the HPF and Fortran 77 versions and producing an optimised Fortran 77 + MPI message-passing version. I also developed scripts to facilitate their use and made the whole package available on the World Wide Web.
Other activities include Web page creation and maintenance, and giving HPF tutorials [16].
Footnotes:
(1) Subset HPF was an officially-defined subset of the HPF 1.0
language that was intended to be implemented by initial releases of
HPF compilers as a first step. In practice, commercial HPF compilers
have mainly concentrated on supporting this core set of extensions,
and the latest version of the HPF language definition, HPF 2.0, is very
similar to Subset HPF 1.0 in terms of its extensions to standard Fortran.
[Back to the text]