# The Changing Face of Scientific and Engineering Computing

Douglass Post

Pages: pp. 4-6

Abstract—The guest editors discuss some recent advances in exascale computing, as well as remaining issues.

Keywords—exascale computing; high-performance computing; HPC; scientific computing

I RECENTLY PARTICIPATED IN A FEDERAL AGENCY WORKSHOP TO IDENTIFY WAYS TO IMPROVE THE PRODUCTIVITY OF SCIENCE-BASED HIGH-PERFORMANCE COMPUTING (HPC) SOFTWARE APPLICATIONS. THE AGENCY IS CONCERNED THAT HPC APPLICATIONS WILL NOT BE AVAILABLE to utilize next-generation high-performance computers—in the exascale range (approximately $10^{18}$ floating-point operations [FLOPs] per second). The computing power now becoming available ( $10^{15} - 10^{18}$ FLOPs) will give society the unprecedented capability to use HPC to solve some of the hardest technical problems facing the world today. This computing power will let us simultaneously

• utilize highly accurate solution methods,
• include all of the scientific effects we know to be important,
• validate the correctness of the models for those effects and quantify their uncertainties,
• model full-scale systems, and
• achieve reasonable problem turnaround times.

Over the next few years, the lower end of this computing power will become available to the general scientific and engineering community, not just to a handful of major research centers.

The impact of HPC is already being felt. It's enabling major advances in scientific research and engineering and bringing about a paradigm shift in research and engineering methods. To name a few, science-based HPC applications are beginning to be able to

• predict the weather with greater accuracy than before (including the unusually complex path of major storm systems such as Hurricane Sandy);
• improve automotive safety through crash simulations;
• increase the fuel efficiency and reduce the noise of new commercial aircraft (for example, the Boeing 787 versus the 777), and
• analyze data from large telescopes and satellites to identify planets orbiting other stars.

These applications, together with high-performance computers, are enabling significant advances in scientific research and engineering design. For example, theoretical chemistry is now done with large-scale HPC computer applications such as the General Atomic and Molecular Electronic Structure System (GAMESS; www.msg.ameslab.gov/gamess), Gaussian ( www.gaussian.com), and NWChem ( www.nwchem-sw.org). The impact of computational chemistry was recently recognized by the 2013 Nobel Prize in Chemistry. The discovery of the Higgs boson required the use of HPC to analyze large experimental datasets to conclusively identify the small number of decays of a Higgs boson out of many, many decays of other collision products.

Clearly, HPC will continue to revolutionize scientific research. But while there are many challenges for HPC, there are initiatives that are emerging for handling these challenges.

## HPC Challenges

HPC isn't only computers or software applications. Successful HPC requires an ecosystem of sponsors, subject matter expert users, software applications, validation experiments and data, high-speed networks, high-performance computers, and data storage facilities. Without every single one of these, the system is crippled. Today, the weakest link is software, partly because each technical area generally requires a different software application. The study of protein folding, aircraft performance, weather forecasting, and other complex phenomena require different software applications even if they can all take advantage of the same networks, computers, and data storage facilities. There are three additional major challenges:

• efficiently exploiting next-generation massively parallel complex computer architectures with special-purpose processors;
• developing, deploying, and supporting software applications that can provide accurate solutions for complex problems easily and quickly; and
• ensuring sponsor support over the HPC ecosystem's whole life cycle.

Overcoming the “power wall” is the first challenge. For approximately the last 30 years, individual processor clock speeds have doubled every 18 months—a consequence of “Moore's law.” After 2005, power dissipation limits have clamped processor clock speeds to about 2 GHz. Unable to increase the clock speed, chip manufacturers have continued to improve computer performance with multiple processors on each chip (multicore), and special-purpose processors (such as general-purpose graphics processing units, or GPGPUs). This improves performance at the cost of increased computer and programming complexity. Applications now must be capable of running efficiently on massively parallel computers with a mix of heterogeneous processors.

The second challenge is to integrate the many different scientific effects that govern the system of interest's behavior. Practical algorithms for each important effect must be developed and integrated into a single application. Successful development generally requires large, multidisciplinary, non-collocated groups from different organizations and funding sources, working together as a tightly knit team. These are all tremendously demanding scientific, coordination, and management challenges. The efforts of small and large groups of highly skilled staff must be coordinated closely. This is causing a major paradigm change in the structure and sociology of application development teams. There's a profound shift from small- and medium-sized applications developed by small groups primarily for their own research, to large-scale applications used by scientists and engineers outside the development group. These external users lack intimate knowledge of the code's strengths and weaknesses. Representative examples of such large-scale codes include the astrophysics Flash code ( www.flash.uchicago.edu), the already mentioned computational chemistry code GAMESS, and the weather-prediction code Weather Research and Forecasting Model (WRF; www.wrf-model.org). Such codes require high levels of software quality, effective software development practices and processes, and agile software project management. Verification and validation, robustness, usability, documentation, problem set up, and analysis of results and user support all assume much greater importance than for small group research codes. Although there are examples of success, there are many that didn't succeed due to resource limitations, inadequate attention to the aforementioned issues, and less technical capability and fewer features than the competition.