Helps 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. This book addresses techniques for parallel programming on both major categories of parallel computers - SMPs and clusters.