# BLAS Level 3 Routines

BLAS Level 3 routines perform matrix-matrix operations. Table “BLAS Level 3 Routine Groups and Their Data Types” lists the BLAS Level 3 routine groups and the data types associated with them.

BLAS Level 3 Routine Groups and Their Data Types
Routine Group | Data Types | Description
--- | --- | ---
?gemm | s, d, c, z | Matrix-matrix product of general matrices
?hemm | c, z | Matrix-matrix product of Hermitian matrices
?herk | c, z | Rank-k update of Hermitian matrices
?her2k | c, z | Rank-2k update of Hermitian matrices
?symm | s, d, c, z | Matrix-matrix product of symmetric matrices
?syrk | s, d, c, z | Rank-k update of symmetric matrices
?symm | s, d, c, z | Rank-2k update of symmetric matrices
?trmm | s, d, c, z | Matrix-matrix product of triangular matrices
?trsm | s, d, c, z | Linear matrix-matrix solution for triangular matrices

## Symmetric Multiprocessing Version of Intel® MKL

Many applications spend considerable time for executing BLAS level 3 routines. This time can be scaled by the number of processors available on the system through using the symmetric multiprocessing(SMP) feature built into the Intel MKL Library. The performance enhancements based on the parallel use of the processors are available without any programming effort on your part.

To enhance performance, the library uses the following methods:

- The operation of BLAS level 3 matrix-matrix functions permits to restructure the code in a way which increases the localization of data reference, enhances cache memory use, and reduces the dependency on the memory bus.

- Once the code has been effectively blocked as described above, one of the matrices is distributed across the processors to be multiplied by the second matrix. Such distribution ensures effective cache management which reduces the dependency on the memory bus performance and brings good scaling results.