libxsmm/libxsmm

Library for specialized dense and sparse matrix operations, and deep learning primitives.

What it solves

LIBXSMM is a high-performance library designed for small dense and sparse linear algebra operations, specifically targeting the matrix multiplications (GEMM) and element-wise primitives often used in deep learning and High Performance Computing (HPC) workloads. It addresses the performance gap for small matrix operations where traditional large-scale libraries may be lack efficiency.

How it works

The library uses Just-In-Time (JIT) code specialization to generate optimized kernels for specific matrix shapes and data types, ensuring compiler-independent performance. It serves as the reference implementation of Tensor Processing Primitives (TPP), providing a portable abstraction for operations like convolutions, fully-connected layers, and pooling. It supports a vast array of hardware architectures, including Intel (SSE, AVX, AVX-512, AMX), AArch64 (NEON, SVE, SME), RISC-V (RVV), and PowerPC 64-bit.

Who it’s for

It is intended for developers building deep learning frameworks, HPC applications, and anyone requiring highly optimized, architecture-portable small matrix operations across diverse CPU architectures.

Highlights

  • Broad Hardware Support: Targets Intel, ARM, RISC-V, and PowerPC architectures.
  • Extensive Data Type Support: Supports a wide range of precisions from FP64 down to int1, including bfloat16 and various low-precision formats.
  • JIT Specialization: Uses JIT code generation to optimize performance for specific problem sizes without requiring target-specific build flags.
  • TPP Reference: Acts as the reference implementation for Tensor Processing Primitives, enabling the composition of higher-level deep learning operators.

Related

  • Project
  • Project
  • Project
  • Project
  • Project