|
Ensign
Low-rank framework for multi-core CPUs and GPUs
|
Provides matrix and vector operations with optional GPU execution. More...
#include <matrix.hpp>
Public Member Functions | |
| blas_ops (bool gpu=false) | |
| ~blas_ops () | |
| template<class T > | |
| void | matmul (const multi_array< T, 2 > &a, const multi_array< T, 2 > &b, multi_array< T, 2 > &c) const |
| Matrix multiplication (computes c = a b) | |
| template<class T > | |
| void | matmul_transa (const multi_array< T, 2 > &a, const multi_array< T, 2 > &b, multi_array< T, 2 > &c) const |
| Matrix multiplication with first matrix transposed (computes c = a^T b) | |
| template<class T > | |
| void | matmul_transb (const multi_array< T, 2 > &a, const multi_array< T, 2 > &b, multi_array< T, 2 > &c) const |
| Matrix multiplication with second matrix transposed (computes c = a b^T) | |
| template<class T > | |
| void | matmul_transab (const multi_array< T, 2 > &a, const multi_array< T, 2 > &b, multi_array< T, 2 > &c) const |
| Matrix multiplication with both matrices transposed (computes c = a^T b^T) | |
| template<class T > | |
| void | matvec (const multi_array< T, 2 > &a, const multi_array< T, 1 > &b, multi_array< T, 1 > &c) const |
| Matrix vector multiplication (c = a b) | |
| template<class T > | |
| void | matvec_trans (const multi_array< T, 2 > &a, const multi_array< T, 1 > &b, multi_array< T, 1 > &c) const |
| Matrix vector multiplication with matrix transposed (c = a^T b) | |
| template<class T > | |
| void | transpose (const multi_array< T, 2 > &in, multi_array< T, 2 > &out) const |
| Transpose a matrix. | |
Public Attributes | |
| bool | gpu |
Provides matrix and vector operations with optional GPU execution.
Definition at line 47 of file matrix.hpp.
| Ensign::Matrix::blas_ops::blas_ops | ( | bool | gpu = false | ) |
| Ensign::Matrix::blas_ops::~blas_ops | ( | ) |
| void Ensign::Matrix::blas_ops::matmul | ( | const multi_array< T, 2 > & | a, |
| const multi_array< T, 2 > & | b, | ||
| multi_array< T, 2 > & | c | ||
| ) | const |
Matrix multiplication (computes c = a b)
The number of rows in matrix c can be smaller than the number of rows in matrix a. In this case only a partial result is computed.
| void Ensign::Matrix::blas_ops::matmul_transa | ( | const multi_array< T, 2 > & | a, |
| const multi_array< T, 2 > & | b, | ||
| multi_array< T, 2 > & | c | ||
| ) | const |
Matrix multiplication with first matrix transposed (computes c = a^T b)
| void Ensign::Matrix::blas_ops::matmul_transab | ( | const multi_array< T, 2 > & | a, |
| const multi_array< T, 2 > & | b, | ||
| multi_array< T, 2 > & | c | ||
| ) | const |
Matrix multiplication with both matrices transposed (computes c = a^T b^T)
| void Ensign::Matrix::blas_ops::matmul_transb | ( | const multi_array< T, 2 > & | a, |
| const multi_array< T, 2 > & | b, | ||
| multi_array< T, 2 > & | c | ||
| ) | const |
Matrix multiplication with second matrix transposed (computes c = a b^T)
| void Ensign::Matrix::blas_ops::matvec | ( | const multi_array< T, 2 > & | a, |
| const multi_array< T, 1 > & | b, | ||
| multi_array< T, 1 > & | c | ||
| ) | const |
Matrix vector multiplication (c = a b)
| void Ensign::Matrix::blas_ops::matvec_trans | ( | const multi_array< T, 2 > & | a, |
| const multi_array< T, 1 > & | b, | ||
| multi_array< T, 1 > & | c | ||
| ) | const |
Matrix vector multiplication with matrix transposed (c = a^T b)
| void Ensign::Matrix::blas_ops::transpose | ( | const multi_array< T, 2 > & | in, |
| multi_array< T, 2 > & | out | ||
| ) | const |
Transpose a matrix.
| bool Ensign::Matrix::blas_ops::gpu |
Definition at line 91 of file matrix.hpp.