mir.glas

GLAS (Generic Linear Algebra Subprograms)

The GLAS are generic routines that provide standard building blocks for performing vector and matrix operations. The Level 1 GLAS perform scalar, vector and vector-vector operations, the Level 2 GLAS perform matrix-vector operations, and the Level 3 GLAS perform matrix-matrix operations.

Implemented Routines

The list of already implemented features.

ModulesDescription
l1vector operations 100% done, partially optimized for now
l2matrix-vector operations %3 done, partially optimized for now
l3 was moved to mir-glasmatrix-matrix operations 50% done

GLAS is generalization of BLAS (Basic Linear Algebra Subprograms) Because the BLAS are efficient, portable, and widely available, they are commonly used in the development of high quality linear algebra or related software, such as LAPACK, NumPy, or The Julia language.

Efficient Level 3 BLAS implementation requires cache-friendly matrix blocking. In additional, SIMD instructions should be used for all levels on modern architectures.

Why GLAS

GLAS is ... <ul> <li>fast to execute.</li> <li>fast to compile.</li> <li>fast to extend using ndslices.</li> <li>fast to add new instruction set targets.</li> </ul>

Optimization notes

GLAS requires recent LDC >= 1.1.0-beta2.

Modules

l1
module mir.glas.l1
Level 1
l2
module mir.glas.l2
Level 2

Public Imports

mir.glas.l1
public import mir.glas.l1;
mir.glas.l2
public import mir.glas.l2;

Meta

Authors

Ilya Yaroshenko