A few months ago, I was looking for bibliographic references to papers about parallel programming languages. I discovered the Annual Review of Scalable Computing, a six-volume collection of overview papers on different scalable-computing aspects. Among the 15 high-quality papers in the first three volumes, I found three concerning my actual interest: "Advances in Programming Languages for Parallel Computing," by Domenico Talia; "JAVM: Internet Parallel Computing Using Java," by L.F. Lau and others; and "High Performance Fortran for Advanced Applications," by Siegfried Benkner. However, the whole collection is worth noticing.
The books provide a forum for scalable-computing researchers to publish extended-length papers on new developments. Each volume contains five articles. In Volume 1, Chapter 1 covers active objects in the BaLinda parallel programming model and related topics such as parallel object calls. Chapter 2 describes parallel techniques for simulating large and complex systems. Chapter 3 provides an excellent introduction to high-performance Fortran, which is still a good, easy-to-use tool for producing scalable parallel applications. Chapter 4 is about optimizing interprocess communication in computing clusters. It presents a distributed algorithm for the dynamic IPC problem, which is NP-hard. The last chapter is about designing superservers with clusters and commodity components. A superserver is a high-performance computing (HPC) system that integrates mainstream commodity components to process large-scale general problems including technical computing, business applications, and networking services.
In Volume 2, the first three chapters concern scalable computing's software aspects. I liked Chapter 2, which provides an excellent comparison of programming languages used for parallel programming. Besides some important and well-known facts on the Parallel Virtual Machine, the Message Passing Interface, and OpenMP, you can learn about parallel declarative languages (such as PARLOG and concurrent Prolog) and parallel functional languages such as Multilisp and Sisal.
Chapter 4 describes Datarol, a parallel machine architecture for fine-grain multithreading, which solves the latency problem. The last chapter (more than one hundred pages) provides a valuable overview of static task-scheduling problems and allocation algorithms.
Volume 3 describes such topics as resource management systems for HPC clusters, tools for monitoring parallel applications, task scheduling on networks of workstations, and transaction management in mobile data-access systems. The last chapter, "Architecture Inclusive Parallel Programming," discusses architecture independence—parallel programming's Holy Grail.
The Annual Review of Scalable Computing provides a strong overview on the most emergent aspects of high-performance scalable computing. Readers interested in these topics should find the whole book, or at least selected articles, worth studying. The numerous bibliographic references following each article will help readers continue their studies.
Cite this article: F. Kaplan, "From Baghdad to Manila: Another Lousy Analogy for the Occupation of Iraq," IEEE Distributed Systems Online, vol. 5, no. 9, 2004.