giaf/blasfeo

Basic linear algebra subroutines for embedded optimization

What it solves

BLASFEO provides high-performance basic linear algebra routines specifically optimized for small matrices that fit within a processor's cache. This addresses the performance overhead typically found in standard BLAS libraries when dealing with the matrices commonly used in embedded optimization applications.

How it works

The library offers two distinct APIs: a standard BLAS API for compatibility and a specialized BLASFEO API designed to minimize overhead for small-scale operations. It utilizes a custom "panel-major" matrix format to improve cache efficiency, alongside target-tailored assembly implementations for a wide range of x86 and ARM architectures. Users can choose between high-performance, reference, or external wrapper implementations depending on their needs.

Who it’s for

It is designed for developers working on embedded optimization applications who require fast linear algebra operations on small matrices across various hardware targets, including Intel, AMD, and ARM (Apple M1, Cortex series).

Highlights

  • Cache-Optimized: Specifically tuned for matrices generally up to a few hundred in size per dimension.
  • Broad Hardware Support: Optimized for numerous architectures including AVX-512, AVX2, SSE, and ARM NEON.
  • Flexible Formats: Supports both standard column-major and a proprietary panel-major format for increased speed.
  • Non-Destructive API: The BLASFEO API includes additional arguments for output, preventing the modification of input data.

Related

  • Project
  • Project
  • Project
  • Project