Synopses & Reviews
This text is intended for parallel programming courses within computer science departments at both four-year and two-year colleges. More specifically, this text is ideal for those courses in parallel programming and parallel computing where Java is the preferred language. Parallel programming is an elective course offered within most computer science programs. Parallel programming teaches students how to run programs across several computers, as opposed to running a single program on one computer. One advantage of being able to perform parallel programming is the ability of a computer scientist to test many versions of one problem simultaneously. The course, while an elective, is offered within most computer science departments at most universities. Parallel computing is a stable subdiscipline within computer science - some say that with the more powerful microcomputers being developed, it has the potential to gain more interest in coming years. With the prevalence of Java as a programming language, this book offers a more modern take on parallel programming, which will appeal to customers. This book is much more up to date than any other choices on the market today, particularly the market leader from Morgan-Kaufmann, which has not been updated since 1996. The market is looking for a new, up-to-date option and this book delivers with its Java focus and the credentials of the author. Reviewers commented positively on the author's clear writing style, which will be beneficial to students who often are forced to grapple with muddled texts at these higher levels. The author will make unique Java code samples and toolkits available (student downloads on course.com and also on the instructor's website). This book will help further our advancement into higher level portions of the computer science market as we seek to publish a full breadth of choices for the computer science curriculum.
"It's quite good, compared to many of the manuscripts that I get to review. I would be happy to have my students learn from this text for what it offers."
"I think this text will do well. Parallel programming is become more and more important. The parallel Java library makes this a pretty friendly way for Java programmers to start programming in parallel."
"This book will claim a unique position for the use of Java in parallel computing. Java's becoming a preferred language for the students and that's definitely making this book more attractive. In a curriculum that's more leaning toward Java, it's certainly a very good option."
Readers learn the craft of designing and building parallel programs?specifically programs that employ multiple processors operating at once to solve a large computational problem?with the clear presentation and fresh, contemporary approach found in Kaminsky's BUILDING PARALLEL PROGRAMS. Written by experienced instructor and industry developer Alan Kaminsky, this book addresses techniques for parallel programming on both major categories of parallel computers?SMPs and clusters. Readers gain first-hand experience working with the increasingly popular programming language, Java, as they complete programs from the text written in Java and work with a unique, author-developed Java class library. The book even emphasizes how to use performance metrics in the design of parallel programs, a topic not even addressed in most other texts.
About the Author
With 31 years of computing experience spanning industry and academia, Alan Kaminsky has developed telephone switching system software at Bell Laboratories, developed real-time embedded control software and fuzzy genetic algorithms at Harris Corporation, and worked on printer system architectures at Xerox Corporation. Now an Associate Professor in the Department of Computer Science at the Rochester Institute of Technology, Professor Kaminsky teaches and conducts research in parallel computing, computational science, distributed systems, ad hoc collaborative applications, cryptography, security, small mobile wireless devices, wireless networking, and ad hoc networking. Professor Kaminksy holds a B.S. in Electrical Engineering from Lehigh University and a M.S. in Computer Engineering from the University of Michigan. Professor Kaminsky invented Parallel Java (PJ), an API and middleware for parallel programming in 100% Java on shared memory multiprocessor (SMP) parallel computers, cluster parallel computers, and hybrid SMP cluster parallel computers. In addition, he has developed the Tuple Board, a new paradigm and middleware for distributed collaborative application running on ad hoc networks of mobile wireless computing devices.
Table of Contents
Part I - PRELIMINARIES. 1. Parallel Computing. 2. Parallel Computers. 3. How to Write Parallel Programs. 4. A First Parallel Program. Part I - EXERCISES. Part II - SMPs. 5. Massively Parallel Problems. 6. SMP Parallel Programming. 7. Massively Parallel Problems, Part 2. 8. Measuring Speedup. 9. Cache Interference. 10. Measuring Sizeup. 11. Parallel Image File Generation. 12. Load Balancing. 13. Reduction. 14. Parallel Random Number Generation. 15. Reduction, Part 2. 16. Sequential Dependencies. 17. Barrier Actions. 18. Overlapping. Part II EXERCISES. Part III - CLUSTERS. 19. A First Cluster Program. 20. Parallel Message Passing. 21. Massively Parallel Problems, Part 3. 22. Data Slicing. 23. Load Balancing, Part 2. 24. Measuring Communication Overhead. 25. Broadcast. 26. Reduction, Part 3. 27. All-Gather. 28. Pipelining. 29. Overlapping, Part 2. 30. All-Reduce. 31. All-to-All. Part III - EXERCISES. Part IV - HYBRID SMP CLUSTERS. 32. Massively Parallel Problems, Part 4. 33. Load Balancing, Part 3. 34. Partitioning and Broadcast, Part 2. 35. Parallel Datastore Querying. Part IV - EXERCISES. Part V - APPLICATIONS. 36. MRI Spin Relaxometry. 37. DNA Sequence Querying. 38. Phylogenetic Tree Construction. Appendices. A. Parallel Programming Projects. B. Numerical Methods. C. OpenMP. D. Message Passing Interface (MPI). E. Lock-Free Concurrent Programming.