Lawrence Snyder, Professor of Computer Science & Engineering, University of Washington

Lawrence Snyder, pioneer of the Configurable, Highly Parallel (ChiP) architecture and other milestones in parallel computation, has been involved in computational science and engineering for more than three decades. His interest in computers took hold before he started college.

"The summer before I started college at the University of Iowa, I got a job as a computer operator for a room-sized computer, the IBM 7044," he says. "It was used mostly for analysis of data from unmanned satellites in the early years of the space program. The 7044 was a classic mainframe with many flashing lights and a nice array of keys on the front panel for instruction-at-a-time programming in octal. When things were slow, I'd key in instructions to create fancy light patterns, trying without notes or references for the longest possible display. It was geeky, of course, but what else can you do with an idle computer whose only other peripherals are disks or tapes? Quickly, I became a programmer and worked on a variety of research projects throughout college. I majored in math (there was no computer science major yet), and went on to grad school at Carnegie Mellon University (CMU), writing a thesis under the direction of Nico Habermann."

Snyder received his B.A. in mathematics and economics from the University of Iowa in 1968 and his Ph.D. in computer science from CMU in 1973. He joined Yale University as an assistant professor of computer science in 1973 and was named associate professor in 1978. He was a visiting scholar at the University of Washington (UW) from 1979 to 1980 before joining Purdue University as an associate professor. Snyder has been a professor of computer science & engineering at UW since 1983. He also was a visiting scholar at Harvard and the Massachusetts Institute of Technology (1987 to 1988) and a visiting professor at Sydney University (1994 to 1995).

Snyder and his group at UW currently are working on Advanced ZPL, a general-purpose parallel language extending the ZPL array programming language. ZPL stands for Z-Level Programming language, a reference to the programming model it implements. Developed by Snyder and his colleagues in 1993 and publicly released in 1997, ZPL is a portable, high-performance parallel programming language for science and engineering computations. "Advanced ZPL's goal is to provide the complete feature set needed for general parallel programming, while maintaining ZPL's performance-with-portability property," Snyder explains. "Though many groups have worked on data parallel languages, the more ambitious general-purpose case has attracted much less attention. The problems--language level support for such features as pipelining, sparse arrays, load balancing, etc.--tend to be quite challenging, but the hand-in-hand design of the language and the compiler have proved effective. Overall, the research is interesting and exciting."

Snyder's work on ZPL and development of the ChiP architecture in 1980 are among many significant contributions Snyder has made to parallel computing. "The ChiP pioneered configurable interconnect for on-chip communication," he says. "Field programmable gate arrays (FPGAs) are the most widely known use of these principles. Indeed, a chip I designed in 1979 was the first FPGA. Another accomplishment of significance is the Chaos router, a randomizing, nonminimal adaptive packet router that I developed with Smragda Konstantinidou. In addition to yielding an effective router, the Chaos research 'tamed' the problem of livelock by 'randomizing it away.'"

Snyder also proposed the CTA (Candidate Type Architecture), an abstract parallel computer. "The CTA parallel machine model and my arguments for why it is superior to the PRAM (Parallel Random Access Machine) model were important contributions, I think, to clarifying how programmers should think about parallel machines," he says. "The significance is embodied in the fact that the CTA is the model used by most parallel programmers today, though they don't know it by name."

Snyder has served on numerous advisory panels and is an active member of ACM, IEEE, and other professional organizations. He was named a Fellow of IEEE in 1992 for "Contributions to parallel computer programming, computer architecture and the theoretical foundations of computer science," and a Fellow of ACM in 1994. He was an editor of IEEE Transactions on Parallel and Distributed Systems from 1991 to 1996, and previously edited other journals. Snyder is the author or co-author of more than 150 journal publications, book chapters, and technical reports.

"Though it is natural for academics to focus on their research contributions, I think it is also important for all of us to take our turn at service responsibilities," says Snyder. "Many do, of course, and I think this is essential to the vitality of the field. I've been involved in two National Research Council studies that I think are significant. One report, released in 1994, was 'Academic Careers in Experimental Computer Science and Engineering,' which investigated how 'systems people' should be evaluated for promotion and tenure. The other report, finished just this June, is titled, 'Being Fluent with Information Technology.' It concerns what everyone should know about information technology to be an effective life-long learner."

Other Issues of PCR Back to PCR CRPC Home Page