CNugteren/CLBlast

Tuned OpenCL BLAS

What it solves

CLBlast provides a high-performance implementation of Basic Linear Algebra Subprograms (BLAS) for OpenCL devices. It solves the problem of achieving maximum computational efficiency for vector and matrix operations across a diverse range of hardware, including GPUs from various vendors, embedded accelerators, and CPUs, without being locked into a single vendor's proprietary ecosystem (like CUDA).

How it works

Written in C++11, the library implements standard BLAS routines that operate on OpenCL device buffers. It uses a tunable architecture, allowing users to run specific tuners to optimize the kernels for their particular hardware configuration or matrix sizes if out-of-the-box performance is insufficient. It supports both C and C++ APIs and provides support for half-precision (fp16) data types to increase performance.

Who it’s for

It is designed for developers who need performant linear algebra operations on non-NVIDIA hardware or those who prefer an open-source, cross-platform library over proprietary alternatives like cuBLAS. It is particularly useful for those targeting Intel CPUs/GPUs, embedded devices, or exotic OpenCL hardware.

Highlights

  • Cross-Vendor Support: Works across desktop/laptop GPUs, embedded GPUs, and other OpenCL-compatible accelerators.
  • Tunable Performance: Includes tools to optimize kernels for specific hardware and configurations.
  • Flexible API: Offers both C and C++ APIs, designed to be compatible with Netlib BLAS and clBLAS.
  • Half-Precision Support: Leverages fp16 data types for increased speed.

Related

  • Project
  • Project
  • Project
  • Project