Affinity: A Concurrent Programming System for Multicomputers
Creators: name: Steele, Craig S.
Publisher: name: California Institute of Technology
Year: 1992

description: Affinity is an experiment to explore a simple, convenient, and expressive programming model that provides adequate power for complex programming tasks while setting few constraints on potential concurrency. Although the programmer is required to formulate a computational problem explicitly into medium-sized pieces of data and code, most of the additional functions necessary for concurrent execution are implicit. The execution of the light-weight, reactive processes, called actions, implicitly induces atomicity and consistency of data modifications. The programmer accesses shared data structures in a shared-memory fashion, but without the need for explicit locking to manage the problems of concurrent access and mutual exclusion. Program control flow is distributed and implicit. The name given to the programming model, Affinity, has a definition, "causal connection or relationship," that is fitting to the way programs are structured and scheduled. Affinity consistency and coherence properties provide a tractable discipline for the dangerous power of a concurrent, shared-memory programming style. Existing programming complexity-management techniques such as object-oriented languages can be used in this multicomputer environment. Affinity programs can compute consistent and correct results despite staleness of data, and asynchrony and nondeterminism in execution of code. Program correctness is invariant under replication, or cloning, of actions. This aspect of the model yields a simple and robust mechanism for fault- tolerance. The practicality of the Affinity programming model has been demonstrated by an implementation on a second-generation multicomputer, the Ametek S/2010. The implementation is distributed, scalable, and relatively insensitive to network latency. Affinity has demonstrated reasonable efficiency and performance for computations with tens of processing nodes, hundreds of actions, and thousands of shared data structures.
description: © 1992 by Craig S. Steele. California Institute of Technology. 

Submitted May 27, 1992. 

1 would particularly like to thank my research advisor, Chuck Seitz, for his patience, impatience, and insistence that simplicity is the essence of good research. The other
members of my examining committee, Yaser Abu-Mostafa, Mani Chandy, Doug Rees, and Steve Taylor, deserve gratitude for volunteering to plow through the muddy fields of another persons mind. I owe incalculable debt to past and present students in t he group who have persisted in attempting to penetrate the equally baffling depths of concurrent systems design and my exposition: Wen-King Su, Don Speck, Jakov Seizović, Lena Peterson, Mike Pertel, John Ngai, Sven Mattisson, Charles Flaig, Nanette Boden, and particularly Bill Athas, for his services in his roles as officemate, Amos Throop crewmember, and consulting adventurer. Without the help of Arlene DesJardina, we'd all be... well, without. I am indebted to Chris Lee for consorting with daemons on my behalf. I owe special thanks to Laura. Jones for her proofreading and many helpful suggestions. I'd like to thank my parents and aunt for their support and love, and my brother for tolerating a near-permanent database bug while I wrote this thesis. My sons Benjamin and Quinton are constant reminders of the innate power of inquiry; their joy in discovery is a continuing inspiration. The small children described in this section were sponsored in large part by my wife, Vicky, who is also the monitoring agency. The research described in this thesis was sponsored in part by the Defense Advanced Research Projects Agency (DARPA). Submicron Systems Architecture Project.
description: Submitted - 92-08a.pdf
Submitted - 92-08a.ps