Technical Books for Parallel Application & Multi-Core Software Developers

Highly recommended books for Threading and Parallel programming

Designing a New Class of Distributed Systems, by Rao Mikkilineni

Designing a New Class of Distributed Systems closely examines the Distributed Intelligent Managed Element (DIME) Computing Model, a new model for distributed systems, and provides a guide to implementing Distributed Managed Workflows with High Reliability, Availability, Performance and Security.

The book also explores the viability of self-optimizing, self-monitoring autonomous DIME-based computing systems. Designing a New Class of Distributed Systems is designed for practitioners as a reference guide for innovative distributed systems design. Researchers working in a related field will also find this book valuable.

Buy Now

Concurrent Programming in Java, by Douglas Lea

The Java platform provides a broad and powerful set of APIs, tools, and technologies. One of its most powerful capabilities is the built-in support for threads. This makes concurrent programming an attractive yet challenging option for programmers using the Java programming language.

The book shows readers how to use the Java platform's threading model more precisely by helping them to understand the patterns and tradeoffs associated with concurrent programming. --- Amazon.com

Buy Now
Concurrent Programming on Windows, by Joe Duffy.

This book explains how to design, implement, and maintain large-scale concurrent programs, primarily using C# and C++ for Windows.

Buy Now

Harnessing the UEFI Shell, Moving the platform beyond DOS By Michael Rothman, Tim Lewis, Vincent Zimmer and Robert Hale

The Unified Extensible Firmware Interface (UEFI) Shell is designed for programmers who are writing automation process software for computer-based equipment. In Harnessing the UEFI Shell the authors describe the features and capabilities of the shell for the UEFI

Buy Now

Intel® Integrated Performance Primitives, How to Optimize Software Applications Using Intel® IPP, by Stewart Taylor

Intel® Integrated Performance Primitives (Intel® IPP) is a software library for application developers that increases performance from Intel's latest microprocessors. Incorporating these functions into your code provides time-to-market advantages while reducing the overall cost of development.

Buy Now

Intel® Threading Building Blocks: Outfitting C++ for Multi-core Processor Parallelism, by James Reinders

Parallelism for C++ as defined by Intel Threading Building Blocks is being heralded as the key for multi-core programming in C++. In this book, James Reinders explains the library in a way that furnishes novices and experts alike with a clear and accessible discussion of the complexities of concurrency. The book is also packed with illustrative examples.

Buy Now

Java Concurrency in Practice, by Brian Goetz et al.

Brian's book covers the basic concepts of concurrency and thread safety, techniques for building and composing thread-safe classes, and using the concurrency building blocks in java.util.concurrent. It also includes performance optimization dos and don'ts, testing concurrent programs and advanced topics such as atomic variables, nonblocking algorithms, and the Java Memory Model.

Buy Now

Mastering High Performance Multiprocessor Signaling, Electrical Design with the Intel® QuickPath Interconnect, By David Coleman and Michael Mirmak

Mastering High Performance Multiprocessor Signaling explains the electrical design, board layout, test & measurement, and validation elements involved in implementing the Intel QuickPath Interconnect, the foundation of future generations of Intel® microprocessor systems, using a high speed, packetized, point-to-point system interconnect that uses multiple narrow high speed differential links to stitch together processors into a fabric of a distributed shared memory-style platform architecture.

Buy Now

Multi-core+programming.gif Multi-Core Programming Increasing Performance through Software Multi-threading, by Shameem Akhter and Jason Roberts.

Discover programming techniques for Intel multi-core architecture and Hyper-Threading Technology

Software developers can no longer rely on increasing clock speeds alone to speed up single-threaded applications; instead, to gain a competitive advantage, developers must learn how to properly design their applications to run in a threaded environment. Multi-core architectures have a single processor package that contains two or more processor "execution cores," or computational engines, and deliver-with appropriate software-fully parallel execution of multiple software threads. Hyper-Threading Technology enables additional threads to operate on each core.

Intel Press ISBN 0-9764832-4-6 For more information please check at: www.intel.com/intelpress

Buy Now

Optimizing Applications for Multi-Core Processors, Using the Intel® Integrated Performance Primitives, Second Edition, by Stewart Taylor

Whether you are developing a Windows*, Linux*, or Mac OS* application for a laptop, desktop, or server, the Intel® Integrated Performance Primitives (IPP) will help you obtain the highest application performance and get the most out of todays multi-core processors.

Buy Now

Parallel Programming in C with MPI and OpenMP, by Michael J. Quinn

This book is a great introduction to parallel computing. It is pragmatic and focuses on what you need to know to be productive with C and MPI or OpenMP.

Buy Now

Patterns for Parallel Programming, by Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill

This book is designed to help people new to parallel computing “think parallel”. It uses design patterns to present the essence of how experts think about parallel programming. Examples are provided in MPI, OpenMP and Java; though really the book is useful for any parallel programming language you may choose to use.

Buy Now

Principles of Concurrent Programming, by M. Ben-Ari

Buy Now

Principles of Concurrent and Distributed Programming (2nd edition), by M. Ben-Ari

The book focuses on algorithmic principles rather than language syntax with an emphasis on the use of the Spin model checker for modeling concurrent systems and verifying program correctness and includes and explains the implementation of concurrency in the Java and Ada languages. It also helps to facilitate lab work with software tools for learning concurrent and distributed programming. --- Amazon.com

Buy Now

Principles of Parallel Programming, by Calvin Lin and Larry Snyder.

The book emphasizes the principles underlying parallel computation, explains the various phenomena, and clarifies why these phenomena represent opportunities or barriers to successful parallel programming. Ideal for an advanced upper-level undergraduate course, Principles of Parallel Programming supplies enduring knowledge that will outlive the current hardware and software, aiming to inspire future researchers to build tomorrow’s solutions.

Buy Now

Programming with Hyper-Threading Technology, How to Write Multithreaded Software for Intel® IA-32 Processors, by Andrew Binstock and Richard Gerber

Programming with Hyper-Threading Technology helps software developers write high-performance multithreaded code while avoiding the common parallel programming issues that usually plague threaded programs. This book highlights how software developers can use Hyper-Threading Technology to maximize processor throughput, efficiency, and parallelism. It is a practical, hands-on volume with immediately usable code examples that enable readers to quickly master the necessary building blocks.

Buy Now

Programming with POSIX® Threads, by David R. Butenhof

An in-depth description of the IEEE operating system interface standard, POSIX threads, commonly called Pthreads. You will attain a solid understanding of threads and will discover how to put this powerful mode of programming to work in real-world applications. --- Amazon.com

Buy Now

Real_World_Haskell.gif Real World Haskell, by John Goerzen, Bryan O'Sullivan, Donald Bruce Stewart

This easy-to-use, fast-moving tutorial introduces you to functional programming with Haskell. You'll learn how to use Haskell in a variety of practical ways, from short scripts to large and demanding applications.

Buy Now

Software Development for Embedded Multi-Core Systems, by Max Domeika

A Practical Guide Using Embedded Intel Architecture that provides embedded engineers with solid grounding in the skills required to develop software targeting multicore processors. Within the text, the author undertakes an in-depth exploration of performance analysis, and a close-up look at the tools of the trade.

Buy Now

aoc-breshears.gif The Art of Concurrency - A Thread Monkey's Guide to Writing Parallel Applications By Clay Breshears

"The Art of Concurrency" focuses on implementing algorithms in the shared-memory model of multi-core processors and will give you the hands-on experience you need. You'll get detailed explanations and usable samples to help you transform algorithms from serial to parallel code, along with advice and analysis to steer you clear of mistakes.

Buy Now

The Software Optimization Cookbook, Second Edition
High-Performance Recipes for IA-32 Platforms, by Richard Gerber, Aart J.C. Bik, Kevin B. Smith and Xinmin Tian

The Software Optimization Cookbook, provides updated recipes for high-performance applications on Intel platforms. Through simple explanations and examples, the authors show you how to address performance issues with algorithms, memory access, branch prediction, automatic vectorization, SIMD instructions, multiple threads, and floating-point calculations.

Buy Now

Twelve Ways to Fool the Masses When giving Performance Results on Parallel Computers, David H. Bailey, Supercomputing Review, Aug. 1991, pp. 54-55

This is one of the most cited papers in the parallel computing literature. Want to know how to manipulate your manager using performance results? This is the paper for you.

Download Now!

Using OpenMP Portable Shared Memory Parallel Programming, by Barbara Chapman, Gabriel Jost and Ruud Van Der Pas

OpenMP is the number one API for shared memory parallel computers. This book discusses OpenMP version 2.5 and is the most up to date text available about this important language and how it is used. The emphasis is on scientific computing, but the algorithms and techniques described are relevant to any class of parallel algorithm.

Buy Now

Weaving High Performance Multiprocessor Fabric, Architectural Insights to the Intel® QuickPath Interconnect, By Robert A. Maddox, Gurbir Singh and Robert J. Safranek

Weaving High Performance Multiprocessor Fabric is written for hardware design, validation and BIOS engineers to introduce the compelling mix of performance and features in the Intel® QuickPath Interconnect. It explains the Intel QuickPath Interconnect, which provides the foundation for future generations of Intel® microprocessor systems.

Buy Now

Win32 Multithreaded Programming, by Cohen and Woodring

The book is currently out of print, but still worth noting as a great referance for Win32 Multithreaded Programing.

Buy Used Now
For more complete information about compiler optimizations, see our Optimization Notice.

Comments

this is good book
Professional Multicore Programming: Design and Implementation for C++ Developers
Wrox | 2008-09-09 | ISBN: 0470289627 | 648 pages | PDF




Finally, I bought a new book for beginners by Packt Publishing: "C# 2008 and 2005 Threaded Programming: Beginner’s Guide", by Gaston C. Hillar - http://www.packtpub.com/beginners-guide-for-C-sharp-2008-and-2005-threaded-programming/book

Amazon: http://www.amazon.com/2008-2005-Threaded-Programming-Beginners/dp/1847197108/ref=pd_rhf_p_t_2

The book is for beginner who want to exploit multi-core with C# 2005; 2008 and future 2010.

I read the book in one week and it has great exercises to help developers run in the multi-core jungle. Highly recommended.

I must also recommend Joe Duffy's book. However, it is already shown in the list.



Definitely recommend Maurice Herlihy and Nir Shavit's The Art of Multiprocessor Programming. It explains in great detail low level implementation of concurrency primitives and algorithms.

Amazon: http://www.amazon.com/Art-Multiprocessor-Programming-Maurice-Herlihy/dp/0123705916


The one book on parallel programming that remains essential is Carriero and Gelernter's _How to write parallel programs_: http://www.amazon.com/gp/product/026203171X?ie=UTF8&tag=vladimirsedac-20&linkCode=as2&camp=1789&creative=390957&creativeASIN=026203171X

It's a shame that it's not more widely known.


I second the recommendation to add "The Art of Multiprocessor Programming" to this list. It is an awesome book for Java programmers who want to exploit the multicore architecture for performance.


"Parallel Programming: Techniques and Applications Using Networked Workstations and Parallel Computers" (2nd Edition) by Barry Wilkinson and Michael Allen - this is one of the best books I've read on this topic, highly recommended


The books being display on this webpage is a very good source for students, professionals, academias, and professors to learn, research and applied the concept of high performance computing, GRIDS, CLUSTERS and parallel programming, multicore programming as well as further research on the latest HPC virtualization and supercomputing architecture and programming theory and applied programming concept for pattern based analysis design technique in high performance computing model driven software engineering with both Linear and parallel programming paradigm with scalable computing theory and applied concept as well as concurrent processing with MIPLS high throughput in the TCP/IP Network with systolic array network for example.....

Emeritus Professor Koh Thiam Chun