From the Back Cover
A balanced overview of the techniques used to design and program parallel computers There is a software gap between parallel computers and programmers′ abilities to program such computers. Programming a parallel computer requires closely studying the target algorithm or application, more so than in traditional sequential programming. Today′s programmer must be aware of the communication and data dependencies of the algorithm or application; yet, programmers do not have the tools to help them implement an algorithm on a parallel computer platform. This book provides the techniques necessary to explore parallelism in algorithms, serial as well as iterative. It shows how to systematically design special–purpose parallel processing structures to implement algorithms. The book begins by explaining how to classify an algorithm, and then identifying which technique would be appropriate to implement the application on a parallel platform. It provides techniques for studying and analyzing several types of algorithms—parallel, serial–parallel, non–serial–parallel, and regular iterative algorithms. New techniques for extracting parallelism and controlling thread workload are shown for the first time, such as z–transform, graphic, algebraic, and nonlinear workload specification for the threads. Also featured in the book: A review of algorithms and how to parallelize each algorithm category Ten case studies, detailed in separate chapters, that address implementing parallel algorithms on multithreaded parallel computers and developing special–purpose parallel machines A chapter dedicated to enhancing single processor performance End–of–chapter problems (solutions and lecture notes are available) Algorithms and Parallel Computing is intended for application developers, researchers, and graduate students and seniors in computer engineering, electrical engineering, and computer science. Software developers and major computer manufacturers will also find the material highly beneficial.
About the Author
Fayez Gebali , PhD, has taught at the University of Victoria since 1984 and has served as the Associate Dean of Engineering for undergraduate programs since 2002. He has contributed to dozens of journals and technical reports and has completed four books. Dr. Gebali′s primary research interests include VLSI design, processor array design, algorithms for computer arithmetic, and communication system modeling.