Parallel Computing: Theory and Practice by Michael J. Quinn
This book is approapriate for undergraduate courses in parallel processing and parallel computing, offered in Computer Science or Computer Engineering departments. Prerequisites include computer architecture and analysis of algorithms. This book familiarizes readers with classical results in the theory of parallel computing and explains reasons behind the growth of parallel computing, as well as obstacles that limit the effectiveness of parallelism. The text also discusses problems encountered when implementing parallel algorithms on real parallel computers, developing eight practical algorithm design strategies. Chapters on parallel algorithms are organized according to problem domain and separate chapters discuss matrix multiplications, the fast Fourier transform, solving systems of linear equations and combinatorial algorithms.