OpenBLAS  by OpenMathLib

Optimized BLAS library for linear algebra subprograms

Created 14 years ago
6,980 stars

Top 7.4% on SourcePulse

GitHubView on GitHub
Project Summary

OpenBLAS is a highly optimized Basic Linear Algebra Subprograms (BLAS) library, serving as a drop-in replacement for GotoBLAS2. It provides accelerated linear algebra routines for scientific computing, machine learning, and high-performance applications across a wide range of architectures.

How It Works

OpenBLAS leverages architecture-specific assembly optimizations for various CPUs, including x86, ARM, POWER, and RISC-V. It dynamically detects the target CPU at runtime or can be configured to optimize for a specific CPU during compilation. This approach ensures maximum performance by utilizing instruction sets like AVX, AVX2, AVX512, and FMA where available.

Quick Start & Requirements

  • Installation: Build from source using make or cmake. Binary packages are available for Windows.
  • Dependencies: GNU Make or CMake, C compiler (GCC/Clang), optional Fortran compiler. Specific CPU targets may require newer compiler versions.
  • Resources: Compilation time varies by target and system.
  • Docs: openmathlib.org/OpenBLAS/docs/

Highlighted Details

  • Supports a vast array of CPU architectures and instruction sets.
  • Dynamic architecture detection (DYNAMIC_ARCH=1) for broad compatibility.
  • Optional integration with IBM MASS library for POWER CPUs.
  • Includes LAPACK routines.

Maintenance & Community

Licensing & Compatibility

  • BSD 3-Clause License. Permissive for commercial use and closed-source linking.

Limitations & Caveats

  • Experimental support for macOS/iOS and some BSD variants.
  • Building for multiple architectures (e.g., x86_64 and ARM64) in a single library is not supported.
  • Compiler version requirements exist for certain CPU optimizations (e.g., AVX512 requires GCC/LLVM 6+).
Health Check
Last Commit

1 day ago

Responsiveness

1 day

Pull Requests (30d)
21
Issues (30d)
9
Star History
67 stars in the last 30 days

Explore Similar Projects

Feedback? Help us improve.