2021/02/17 by Adetokunbo A. Adedoyin, Adedoyin, Adetokunbo A., Christian F. A. Negre +16
Computer Science · #Abstraction #Abstraction layer #Base (topology) #Benchmark (surveying) #Cache #Cloud Computing and Resource Management #Code (set theory) #Computer engineering #Computer science #Distributed and Parallel Computing Systems #Distributed computing #FOS: Computer and information sciences #Locality #Operating system #Parallel Computing and Optimization Techniques #Parallel computing #Performance (cs.PF) #Programming language #Software #cs.PF
paper · pdf · doi:10.48550/arxiv.2102.08505
published in arXiv (Cornell University) (Cornell University)
arxiv created 2021/02/17 · openalex publication_date 2021/02/17 · arxiv updated 2021/02/18 · openalex created_date 2025/10/10 · openalex updated_date 2026/08/06
As we rapidly approach the frontiers of ultra large computing resources, software optimization is becoming of paramount interest to scientific application developers interested in efficiently leveraging all available on-Node computing capabilities and thereby improving a requisite science per watt metric. The scientific application of interest here is the Basic Math Library (BML) that provides a singular interface for linear algebra operation frequently used in the Quantum Molecular Dynamics (QMD) community. The provisioning of a singular interface indicates the presence of an abstraction layer which in-turn suggests commonalities in the code-base and therefore any optimization or tuning introduced in the core of code-base has the ability to positively affect the performance of the aforementioned library as a whole. With that in mind, we proceed with this investigation by performing a survey of the entirety of the BML code-base, and extract, in form of micro-kernels, common snippets of code. We introduce several optimization strategies into these micro-kernels including 1.) Strength Reduction 2.) Memory Alignment for large arrays 3.) Non Uniform Memory Access (NUMA) aware allocations to enforce data locality and 4.) appropriate thread affinity and bindings to enhance the overall multi-threaded performance. After introducing these optimizations, we benchmark the micro-kernels and compare the run-time before and after optimization for several target architectures. Finally we use the results as a guide to propagating the optimization strategies into the BML code-base. As a demonstration, herein, we test the efficacy of these optimization strategies by comparing the benchmark and optimized versions of the code.