FAQ

General

What is the Qualcomm Math Library (QML)?
High-performance implementations of almost 2000 Basic Linear Algebra Subprograms (BLAS) and LAPACK primitives, optimized for all generations of Snapdragon processors.

Is QML free to use?
QML requires you to register on Qualcomm Developer Network (QDN) and agree to the license agreement to download. There is no fee for the rights granted.

What type of use cases benefit from QML?
Machine learning, neural networks, simulations and data analytics all benefit from using QML.

Capabilities

Is QML a drop-in for OpenBLAS or Atlas?
Yes.

Can QML be used in my favorite math or machine learning framework?
QML implements the standard BLAS and CBLAS interfaces, so any framework that uses the standard interfaces will be compatible with QML.

Why use QML over Eigen?
For single- (SGEMM) and double- (DGEMM) precision general matrix-to-matrix multiplications QML shows up to 5x better performance when using QML on Snapdragon processors as when using Eigen alone.

Does QML have benefits over other deep learning frameworks (e.g. Caffe, Torch or Theano)? 
QML is not a deep learning framework, QML powers all the deep learning frameworks you already know and love.  All machine learning frameworks are built on standard math libraries such as BLAS, which means QML can be used with those frameworks as we support the same standard interfaces.  With QML, you don’t have to switch to another framework or learn a new API.  Simply link QML with your favorite machine learning framework and we will take care of the rest.

Which version of Android is QML compiled for?
The 32-bit ARM binary is compiled for Version 19 of the Android API. The 64-bit ARM binary is compiled for Version 21 of the Android API.

Do you support both ARM Linux and ARM Android?
Yes, we support both Linux and Android platforms with binaries for both 32-bit and 64-bit ARM processors.

Do you provide x86 binaries?
We provide x86 binaries to aid development with Snapdragon processors being the deployment target.  The x86 Linux binaries are compiled for Ubuntu 14.04.

Is QML parallel?
QML has both a standalone sequential version as well as a parallel version that uses the Qualcomm® Snapdragon™ Heterogeneous Compute SDK runtime. 

Do you support a 64 bit integer interface?
We support both LP64 and ILP64 versions of BLAS and CBLAS.

Can QML be used with non-Snapdragon processors?
QML only supports Qualcomm Snapdragon processors.

Which parts of the SoC are supported?
We currently support the CPU.

Are you adding new primitives?
We continue to add new primitives to QML, so check back for additional primitives and support.

Release Notes

What are the release notes for QML v1.1.0?

  • Improved performance for 32-bit operations (SGEMM, STRSM, SPOTRF, SPOTRS, etc. for tiny sizes).
  • Added a new API for 8-bit integer convolution that utilizes the new dot-instruction in Snapdragon 855 for better performance.
  • Added option to control Heterogenous work partitioning of GEMM using an environment variable called QML_HET_RATIO.
  • Usage details can be found in the documentation.

What are the release notes for QML v1.0?

  • Renamed the library to Qualcomm Math Library (QML)
    • NOTE: qsml.h file is deprecated, but still included in the installer (will be removed soon). Please use qml.h instead.
  • Performance improvements of SGEMM, DGEMM, and SPOTRF for tiny sizes.
  • Performance improvements of parallel GEMM on SDM835, SDM845, etc.
  • Performance improvements for several Level-1 and Level-2 routines for tiny sizes.
  • Several bug fixes.