One of the most popular sessions at the Intel Developer Forum last week in San Francisco, and certainly one of the most exciting from an HPC perspective, brought together two of the world’s foremost experts in parallel programming to discuss current state-of-the-art methods for leveraging parallelism on processors and coprocessors. The speakers, Intel’s Jim Jeffers and James Reinders, are also the co-editors of the just-published “High Performance Parallelism Pearls Volume Two: Multicore and Many-core Programming Approaches.”
You aren’t likely to meet two more engaging and engaged programmers who make learning about this stuff fun, even for this non-coder interloper. In writing the two volumes, the duo saw “example after example get performance and performance portability with ‘just parallel programming.'”
Many of the chapters focus on porting codes to the MIC Phi multicore processor, but in the process, the Xeon processors also accrued significant speedups, often 5x or more. As for why developers did not exploit this parallelism until they had the Phi in hand, Reinders and Jeffers refer to this phenomenon as the “inspiration of 60+ cores.”
Like the first volume, High Performance Parallelism Pearls Volume Two (Morgan Kaufmann, 2015) offers a sampling of successful programming efforts, demonstrating how to leverage parallelism from Intel Xeon and Xeon Phi processors across multiple vertical domains in science and industry. The book has been published with the spirit of knowledge sharing and all of the figures and source code are available for download to facilitate further exploration.
The IDF15 session (see slides) was focused on providing the developer audience with useful stories and examples for programming for high performance. While the editors are careful in saying they don’t have favorite chapters, the success story related in chapter 10, titled “Cosmic Microwave Background Analysis: Nested Parallelism in Practice,” stands out for its scientific accomplishment and for its programming prowess.
The chapter, which is featured on the cover of the book, highlights the work of researchers in Stephen Hawking’s group at the University of Cambridge, who achieved over a 100x speedup with optimizations carried out in the process of porting their code to the Intel Xeon Phi coprocessor (Knights Corner). The theoretical physicists at Cambridge use a simulation code called MODAL to probe the Cosmic Background Radiation (CMB), a microwave frequency background radiation left over from the Big Bang. In analyzing this data from the origin of the universe and verifying it against theoretical observations, the team is reconstructing the CMB bispectrum for the first time. What is truly remarkable is that in seeking to understand how the universe emerged out of an intense period of expansion, called inflation, the research team has found evidence of extra dimensions.
A production run using the original Modal code (unoptimized, pure MPI) takes about six hours on 512 Intel Xeon E5-4650L cores of the COSMOS SGI supercomputer. If it can be sped-up then it will greatly enhance the cross-validation process, which requires the code be run many times.
Write the authors:
“The calculation performed by Modal is a prime candidate for Intel Xeon Phi coprocessors — the inner product calculations are computationally very expensive, independent of one another, and require very little memory (with production runs using only O(100) MB of RAM and writing only O(1) MB to disk). However, the code as written does not express this calculation in a way that is conducive to the utilization of modern hardware. Our acceleration of Modal therefore has two components: tuning the code to ensure that it runs efficiently (i.e., optimization); and enabling the code to scale across vectors and many cores (i.e., modernization). Extracting performance from current and future generations of Intel Xeon processors and Intel Xeon Phi coprocessors is impossible without parallelism, and the process of optimization and modernization presented here is imperative for ensuring that COSMOS stay at the forefront of cosmological research.”
The chapter — written by James P. Briggs, James R. Fergusson, Juha Jäykkä, Simon J. Pennycook and Edward P. Shellard — details the 10-step process of optimizations, illustrated below:
The experiment was carried out using a dual socket Intel Xeon processor E5-4650L and an Intel Xeon Phi coprocessor 5110P with the Intel Composer XE 2015 (v15.0.0.090) compiler.
In addition to showcasing the potentially paradigm-changing science that is being enabled, the chapter, and a related paper from the authors, are salient teaching tools, reflecting the hallmarks of effective parallelism, including one that is sometimes omitted from discussion.
Here Jeffers begins reviewing what he and Reinders have long identified as the three most important vectors of parallelism: “data locality, that is making sure your data is structured properly for the parallelism pipeline; threading or scalability; and then vectorization, taking advantage of the syncing capability.”
“But what did we forget?” Reinders calls out.
“What we forgot,” said Jeffers, “is that you should actually analyze your code and see from an algorithm standpoint what you might be able to do to improve your code.”
“So the biggest leap here was this,” Jeffers continues. “[The developers] were moving forward with parallelism, you see they are getting pretty good gains up through [code version] six. They are moving forward. They have the original code. They did some loop modifications and then at number three, Intel MKL integration routines come in. When they hit step seven, they have been v-tuning their code, looking at the hotspots, and then boom, the MKL integration routine is the hotspot. So they picked the one that best met the inputs and outputs they wanted. It turns out they didn’t need all the power of that, the precision, etc. So they wrote their own. They used the new trapezium rule integrator and bang [performance shoots up] — so, it’s not all about the three vectors.”
“So don’t forget your algorithms,” adds Reinders, emphatically. “Do you really need the algorithm you are using? They went from a 10x to a 60x speedup in that one step, and it was an algorithm change and it affected Xeon and Xeon Phi almost equally.”
“And this is a production code,” Jeffers emphasizes, “extremely important to them, to their analysis, and really to the world in understanding the universe.”
From the COSMOS team: “We find that using a simple trapezium rule integrator combined with hand-selected sampling points (to improve accuracy in areas of interest) provides sufficient numerical accuracy to obtain a physically meaningful result, and the reduced space and time requirements of this simplified method give a speed-up of O(10x).”
A summary of the team’s conclusions appears in a presentation posted to manycore.com:
“The total speed-up relative to the original baseline code is close to 100x on both platforms,” the authors write in chapter 10 of the new Pearls volume. “Further the results shown here use only two processor sockets or one coprocessor–by dividing the complete problem space across nodes using MPI, and then subdividing across the processor and coprocessor present in each node, the calculation can be accelerated even further. These optimizations have thus enabled COSMOS to completely change the way in which the code is used; rather than running on the entire system for hours, after careful selection of cosmological parameters, Modal can now be incorporated as part of a larger Monte Carlo pipeline to quickly evaluate the likelihood of alternative parameters.”
On the IDF15 showroom floor, Intel demonstrated a visualization of the cosmic background radiation rendered with the open-source OSPRay Ray Tracing engine running live on two pre-production Intel Knights Landing cards connected by the Omni-Path pre-production fabric. Being able to observe the Planck data with this tool allows scientists to see correlations predicted by Einstein’s theory of general relativity.