BLIS (software)
BLIS (BLAS-like Library Instantiation Software) is a software framework for rapidly instantiating high-performance dense linear algebra kernels, particularly those conforming to the BLAS (Basic Linear Algebra Subprograms) standard. Unlike traditional BLAS libraries which are typically monolithic and highly optimized for specific architectures, BLIS is designed to be a portable, highly customizable, and micro-kernel based approach. This allows developers to generate optimized kernels for a wide range of architectures, including those that are not well-supported by existing BLAS implementations.
The core concept behind BLIS is a well-defined API and methodology that allows developers to implement a small set of "micro-kernels" that perform the fundamental computations. These micro-kernels are then composed and orchestrated by the framework to produce larger, more complex linear algebra operations, such as matrix multiplication (GEMM).
BLIS separates the optimization concerns of algorithm selection and micro-kernel implementation. Algorithm selection is handled by the framework, which allows users to explore different tiling strategies and algorithmic variants. The micro-kernels, on the other hand, can be highly optimized for a particular architecture, taking advantage of instruction-level parallelism, vectorization, and other hardware-specific features.
By providing a structured and flexible framework, BLIS aims to make it easier for researchers and developers to create and maintain high-performance linear algebra libraries. It encourages a systematic approach to optimization and allows for the exploration of new algorithmic techniques and hardware architectures. The modularity of BLIS also facilitates the incorporation of new micro-kernels and algorithmic strategies as they are developed.