Collaborative Community Impacts High-Performance Computing Programming Environments
By Scott Gibson
LLVM within the US Department of Energy’s (DOE) Exascale Computing Project (ECP) is an open-source collaboration project that develops a compiler infrastructure. Compilers are tools that transform code written by human programmers into the kind of code that computers can run.
The LLVM project is complicated and requires an intensive effort from many people to create production-quality compiler infrastructure.
To share insights about the LLVM project, Hal Finkel of Argonne National Laboratory (ANL) is a guest on ECP’s podcast, Let’s Talk Exascale. The interview was conducted this past November in Denver at SC19: The International Conference for High Performance Computing, Networking, Storage, and Analysis.
Finkel’s considerable expertise is being put to good use. Lead for Compiler Technology and Programming Languages at the Argonne Leadership Computing Facility (ALCF), a DOE Office of Science User Facility, he has contributed to the LLVM Compiler Infrastructure Project for many years and currently serves on the board of directors of the LLVM Foundation.
He also represents ANL on the C++ Standards Committee and serves as vice chair. His main interests are in compiler technology and programming languages for the future of computing, including exascale computers, quantum computers, and other intelligent machines of the future.
For ECP, Finkel is the ANL principal investigator of the PROTEAS-TUNE, Flang, Kokos/RAJA, and Proxy Apps projects. In addition, he works on the SOLLVE and ExaSky projects, as well as PathForward.
LLVM is important to a wide swath of technology professionals. Contributions shaping its development have come from individuals, academia, DOE and other government entities, and industry, including some of the most prominent tech companies in the world, both inside and outside of the traditional high-performance computing space. Among the industry contributors are AMD, Apple, ARM, Google, IBM, HPE-Cray, Intel, NVIDIA, and Qualcomm.
“LLVM has really become a critical tool in our toolbox of technologies that form the basis of the programming environments on high-performance computing systems,” Finkel said.
Coordination, consensus, and competition are inherent challenges in an undertaking of LLVM’s magnitude. Project participants gather twice a year—once in San Jose (Silicon Valley), California, and once in Europe. The 2019 meeting in San Jose drew nearly 700 attendees. Organizing such a large and diverse gathering of people is no easy task, but the benefits are worth it, Finkel said.
“What they’ve all come to realize is that they contribute, but they get more value out than they put in because of the collective effort,” he added.
Finkel was involved in the first major deployment, to users, of LLVM, Flang, and related technologies in their open-source form when he and colleagues delivered an LLVM-based tool chain at the ALCF on an IBM Blue Gene/Q–based supercomputer. The same technologies were also deployed at Lawrence Livermore National Laboratory and other computing facilities around the world. Meanwhile, widespread adoption of LLVM was already underway throughout industry. Today, the technology is, for example, a component of NVIDIA’s tool chain for GPUs.
ECP’s LLVM projects are developing numerous technologies for the optimization of parallel computing programs, which are obviously important on large HPC systems. For instance, the project has a specific focus on the OpenMP programming model and is developing technologies to optimize OpenMP programs to do both high-level and very low-level transformations that are of key significance on those systems. That technology is then picked up by companies such as AMD that are integrating it into their tool chains.
“It’s very difficult to use a modern HPC machine without some piece of LLVM technology,” Finkel said. “And that’s true whether you’re using open-source tools or vendor-provided tools. It’s really been quite successful in that regard.”
According to Finkel, the legacy of LLVM will be the high degree to which it has improved HPC programming environments and exemplified how a diverse and broad community can effectively collaborate in an open-source project.