Linear algebra (LA) operations are fundamental to a large number of computational science algorithms. The applications span the entire scientific board, with machine learning (ML) algorithms being among the most reliant on LA operations; they provide the mathematics that underpins much of what we do. Historically, this fact has driven the development of a plethora of libraries providing high-performance implementations of LA algorithms: BLAS, OpenBLAS, cuBLAS, CLBLAS, LAPACK, ARPACK, ATLAS, cuSOLVER, MAGMA and many more. For a given LA operation, the choice can be bewildering for the programmer, especially given that within the same library there may be several algorithms yielding different performance depending, for example, on the specific structure of the matrices involved.
The pursuit of optimal LA algorithms is significantly complicated by the increasing architectural heterogeneity of the high-performance computing (HPC) platforms, with a variable mix of general-purpose processors (CPUs) and accelerators (GPUs, DSPs, FPGAs, etc.), and complex associated memory hierarchies and file systems
This project aims to build an Architecture and Data-Structure Aware Linear Algebra (ADSALA) software package that will use machine learning to learn the hardware/data-structure/package/algorithm relationships when compiled on a specific hardware architecture for a spectrum of LA packages. At runtime, after analysing the structural features of the data structures involved, ADSALA will choose the most appropriate package/algorithm for a given LA operation, and assign the computation to the best combination of hardware resources (CPU, GPU), seeking to minimize execution time – all subject to specific user-defined constraints.
High Performance Computing, Machine Learning, Linear Algebra