Computing Reviews
Today's Issue Hot Topics Search Browse Recommended My Account Log In
Review Help
Search
High performance parallelism pearls: volume two
Jeffers J., Reinders J., Morgan Kaufmann Publishers Inc., San Francisco, CA, 2015. 592 pp. Type: Book (978-0-128038-19-2)
Date Reviewed: Sep 16 2016

High performance parallelism pearls is a collection of loosely connected chapters, each one containing a discussion about parallelization or optimization of code in a particular scientific field. The book, written by experts in data centers, academia, and high-performance computing (HPC) centers, targets experts in data/HPC centers and not only researchers. The book is 100 percent technical--there are no new computational theories or techniques presented--just step-by-step optimizations, techniques, and methods, all on Intel processor and co-processor architectures. In other words, the book combines two practical guides in one: the first is aimed at users who want to learn by example, and the second is for those who want to get a grip on typical approaches used in porting and optimizing codes to Intel Xeon and Intel Xeon Phi architectures.

From a programming point of view, the book focuses on multithread programming with OpenMP and vectorization followed by message-passing interface (MPI). That makes sense since MPI is the de facto universal programming model for large distributed systems and the current challenges are how to program heterogeneous distributed system(s) with Intel Xeon Phi coprocessors on board. Effective Phi coprocessor programming requires awareness of vectorization and scaling along with increased locality of reference, which are in fact key elements of effective parallel programming. Consequently, chapters 2, 4, and 8 discuss single instruction, multiple data (SIMD) capabilities of processors and co-processors (Phi). Further down the road, chapter 22 discusses the concept of the SIMD function, which allows a scalar code to be vectorized easily by using appropriate OpenMP pragmas. For more advanced users who have some experience with OpenMP, chapter 23 suggests a technique and tools for controlling and analyzing OpenMP code. On the tool side, a vector library called OpenVec is discussed in chapter 24.

As stated above, the book’s main focus is OpenMP. In addition to SIMD, OpenMP nested parallelism as a possible approach used in effective parallel programming is discussed in chapters 10, 17, and 18.

An extension of the MPI programming model, which implements the shared-memory extension and was added to the MPI 3.0 standard, is discussed in chapter 16 along with simple “Hello World!” code, which runs on several nodes.

Chapter 13 goes beyond MPI and OpenMP programming models and focuses on the effective use of Phi cores. This chapter is a natural extension of the OpenMP and MPI chapters mentioned above since it discusses unorthodox thread management techniques when using a centralized scheduler.

Apart from programming techniques and optimization tools and approaches, the book also covers latency optimization in the context of a particular application, Python as a programming language for Intel Phi, and programming with streams. For example, chapter 17 describes specific optimization techniques that are vital to achieving minimal latency, and chapter 15 demonstrates how the hStreams library can be applied to problems in linear algebra, both to processors and co-processors.

The book is an excellent technical reference that can be used by programmers and researchers in data centers who seek to port or optimize application codes from various fields on modern Intel Xeon and Xeon Phi processors. The book covers a wide range of topics, but is always practical. For example, chapter 21 deals with prefetching effectiveness and demonstrates that often just tuning the compiler prefetching mechanism may result in significant performance gains. Another example is chapter 25, which examines how the developer can make simple changes without changing the algorithm, such as thread distribution and gain performance and lowering the consumed power. This book, along with High performance parallelism pearls (vol. 1) [1] is a must-read for every HPC code developer.

More reviews about this item: Amazon

Reviewer:  Alexander Tzanov Review #: CR144772 (1612-0860)
1) Reinders, J.; Jeffers, J. High performance parallelism pearls (vol. 1). Morgan Kaufmann, Waltham, MA, 2015.
Bookmark and Share
  Reviewer Selected
Featured Reviewer
 
 
Parallel Programming (D.1.3 ... )
 
 
Concurrent, Distributed, And Parallel Languages (D.3.2 ... )
 
 
Parallelism And Concurrency (F.1.2 ... )
 
 
Language Classifications (D.3.2 )
 
Would you recommend this review?
yes
no
Other reviews under "Parallel Programming": Date
How to write parallel programs: a first course
Carriero N. (ed), Gelernter D. (ed), MIT Press, Cambridge, MA, 1990. Type: Book (9780262031714)
Jul 1 1992
Parallel computer systems
Koskela R., Simmons M., ACM Press, New York, NY, 1990. Type: Book (9780201509373)
May 1 1992
Parallel functional languages and compilers
Szymanski B. (ed), ACM Press, New York, NY, 1991. Type: Book (9780201522433)
Sep 1 1993
more...

E-Mail This Printer-Friendly
Send Your Comments
Contact Us
Reproduction in whole or in part without permission is prohibited.   Copyright 1999-2024 ThinkLoud®
Terms of Use
| Privacy Policy