Optimization via Libraries
Brandon Barker, Steve Lantz
Cornell Center for Advanced Computing
Revisions: 8/2023, 2/2019, 7/2015, 10/2014 (original)
Software libraries can help you fulfill your quest for speed. Making use of available HPC libraries involves writing far fewer lines of code and encourages higher-level thinking about the algorithm. Often they provide very good performance while freeing the programmer from the need to know about and keep track of hardware details.
Objectives
After you complete this segment, you should be able to:
- List the advantages of calling a software library
- Explain what criteria to look for when selecting a library
- List some popular numerical libraries and applications available on Frontera
- Explain how to use the Intel MKL library
Prerequisites
The Code Optimization roadmap assumes only that the reader has some basic familiarity with programming in any language. The HPC languages C and Fortran are used in examples. Necessary concepts are introduced as one progresses through the roadmap.
In parallel programming, the key consideration for optimizing large-scale parallel performance is the scalability of a code's algorithm(s). Therefore, readers who are developing parallel applications may want to peruse the roadmap for Scalability first.
More advanced references on performance optimization include the Virtual Workshop roadmaps on Profiling and Debugging and Vectorization. For those interested in programming for advanced HPC architectures, such as TACC's clusters built with Intel processors, the roadmap Case Study: Profiling and Optimization on Advanced Cluster Architectures is relevant. The present roadmap should make a good starting point for diving into any of those.