Co-design at Lawrence Livermore National Lab
LCALS (“Livermore Compiler Analysis Loop Suite”) is a collection of loop kernels based, in part, on historical “Livermore Loops” benchmarks (See the 1986 technical report: “The Livermore Fortran Kernels: A Computer Test of the Numerical Performance Range”, by Frank H. McMahon, UCRL-53745.). The suite contains facilities to generate timing statistics and reports. The original suite was implemented in Fortran and translated to C by Steve Langer at LLNL in the mid-90s. The kernel loop bodies in LCALS are essentially C code, but the suite infrastructure is written in standard C++. Also, some loop traversal constructs require standard C++ 11.
Like earlier versions of the loop kernels, LCALS emphasizes floating-point operations. While LCALS can be used to evaluate platform performance, as its predecessors were, its primary intent is to assess compiler optimizations in the context of various numerical operations and software constructs. Each kernel appears in multiple variants that span a range of execution strategies important to simulation codes at DOE laboratories and elsewhere. Different variants enable the study of SIMD vectorization, OpenMP thread parallelism, and C++ template mechanisms used to decouple loop bodies from loop traversals. The suite is used for co-design activities by serving as a vehicle for interactions with hardware and compiler vendors.
LCALS is highly parametrized, making it easy to control compilation and execution for different computational experiments. The suite contains facilities to generate a variety of run-time timing statistics and reports. Also, it is easy add new loops and execution variants by simply mimicking the existing implementation patterns.
LCALS is under continuing development; in particular, the collection of loop kernels and variants will continue to expand. We hope to grow it into a comprehensive suite that represents a substantial fraction of loop-based computations and execution strategies found in DOE lab codes. If you have loop kernels to contribute or suggestions for features and algorithms to include, please send email to the developers whose contact information is listed below.
Download LCALS v1.0.2 (LLNL-CODE-638939)
Richard D. Hornung and Jeffrey A. Keasler, "A Case for Improved C++ Compiler Support to Enable Performance Portability in Large Physics Simulation Codes", LLNL-TR-635681 (2013).
Frank H. McMahon, "The Livermore Fortran Kernels: A Computer Test of the Numerical Performance Range", UCRL-53745 (1986).