
Matrix multiplication using array. More...
Functions  
AFAPI array  matmul (const array &lhs, const array &rhs, const matProp optLhs=AF_MAT_NONE, const matProp optRhs=AF_MAT_NONE) 
Matrix multiply of two arrays. More...  
AFAPI array  matmulNT (const array &lhs, const array &rhs) 
Matrix multiply of two arrays. More...  
AFAPI array  matmulTN (const array &lhs, const array &rhs) 
Matrix multiply of two arrays. More...  
AFAPI array  matmulTT (const array &lhs, const array &rhs) 
Matrix multiply of two arrays. More...  
AFAPI array  matmul (const array &a, const array &b, const array &c) 
Chain 2 matrix multiplications. More...  
AFAPI array  matmul (const array &a, const array &b, const array &c, const array &d) 
Chain 3 matrix multiplications. More...  
AFAPI af_err  af_matmul (af_array *out, const af_array lhs, const af_array rhs, const af_mat_prop optLhs, const af_mat_prop optRhs) 
Matrix multiply of two af_array. More...  
Matrix multiplication using array.
Performs a matrix multiplication on the two input arrays after performing the operations specified in the options. The operations are done while reading the data from memory. This results in no additional memory being used for temporary buffers.
Batched matrix multiplications are supported. Given below are the supported types of batch operations for any given set of two matrices A and B.
Size of Input Matrix A  Size of Input Matrix B  Output Matrix Size 

\( \{ M, K, 1, 1 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, 1, 1 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, 1, 1 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, b2, b3 \} \) 
where M, K, N are dimensions of the matrix and b2, b3 indicate batch size along the respective dimension.
For the last two entries in the above table, the 2D matrix is broadcasted to match the dimensions of 3D/4D array. This broadcast doesn't involve any additional memory allocations either on host or device.
AFAPI af_err af_matmul  (  af_array *  out, 
const af_array  lhs,  
const af_array  rhs,  
const af_mat_prop  optLhs,  
const af_mat_prop  optRhs  
) 
Matrix multiply of two af_array.
Performs a matrix multiplication on two arrays (lhs, rhs).
[out]  out  Pointer to the output af_array 
[in]  lhs  A 2D matrix af_array object 
[in]  rhs  A 2D matrix af_array object 
[in]  optLhs  Transpose left hand side before the function is performed 
[in]  optRhs  Transpose right hand side before the function is performed 
lhs
and the dense matrix must be rhs
. optLhs
an only be one of AF_MAT_NONE, AF_MAT_TRANS, AF_MAT_CTRANS. optRhs
can only be AF_MAT_NONE. AFAPI array af::matmul  (  const array &  lhs, 
const array &  rhs,  
const matProp  optLhs = AF_MAT_NONE , 

const matProp  optRhs = AF_MAT_NONE 

) 
Matrix multiply of two arrays.
Performs a matrix multiplication on the two input arrays after performing the operations specified in the options. The operations are done while reading the data from memory. This results in no additional memory being used for temporary buffers.
Batched matrix multiplications are supported. Given below are the supported types of batch operations for any given set of two matrices A and B.
Size of Input Matrix A  Size of Input Matrix B  Output Matrix Size 

\( \{ M, K, 1, 1 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, 1, 1 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, 1, 1 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, b2, b3 \} \) 
where M, K, N are dimensions of the matrix and b2, b3 indicate batch size along the respective dimension.
For the last two entries in the above table, the 2D matrix is broadcasted to match the dimensions of 3D/4D array. This broadcast doesn't involve any additional memory allocations either on host or device.
[in]  lhs  The array object on the left hand side 
[in]  rhs  The array object on the right hand side 
[in]  optLhs  Transpose left hand side before the function is performed 
[in]  optRhs  Transpose right hand side before the function is performed 
lhs
and the dense matrix must be rhs
. optLhs
an only be one of AF_MAT_NONE, AF_MAT_TRANS, AF_MAT_CTRANS. optRhs
can only be AF_MAT_NONE. Chain 2 matrix multiplications.
The matrix multiplications are done in a way to reduce temporary memory
[in]  a  The first array 
[in]  b  The second array 
[in]  c  The third array 
Chain 3 matrix multiplications.
The matrix multiplications are done in a way to reduce temporary memory
[in]  a  The first array 
[in]  b  The second array 
[in]  c  The third array 
[in]  d  The fourth array 
Matrix multiply of two arrays.
Performs a matrix multiplication on the two input arrays after performing the operations specified in the options. The operations are done while reading the data from memory. This results in no additional memory being used for temporary buffers.
Batched matrix multiplications are supported. Given below are the supported types of batch operations for any given set of two matrices A and B.
Size of Input Matrix A  Size of Input Matrix B  Output Matrix Size 

\( \{ M, K, 1, 1 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, 1, 1 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, 1, 1 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, b2, b3 \} \) 
where M, K, N are dimensions of the matrix and b2, b3 indicate batch size along the respective dimension.
For the last two entries in the above table, the 2D matrix is broadcasted to match the dimensions of 3D/4D array. This broadcast doesn't involve any additional memory allocations either on host or device.
[in]  lhs  The array object on the left hand side 
[in]  rhs  The array object on the right hand side 
lhs
, transpose(rhs
)Matrix multiply of two arrays.
Performs a matrix multiplication on the two input arrays after performing the operations specified in the options. The operations are done while reading the data from memory. This results in no additional memory being used for temporary buffers.
Batched matrix multiplications are supported. Given below are the supported types of batch operations for any given set of two matrices A and B.
Size of Input Matrix A  Size of Input Matrix B  Output Matrix Size 

\( \{ M, K, 1, 1 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, 1, 1 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, 1, 1 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, b2, b3 \} \) 
where M, K, N are dimensions of the matrix and b2, b3 indicate batch size along the respective dimension.
For the last two entries in the above table, the 2D matrix is broadcasted to match the dimensions of 3D/4D array. This broadcast doesn't involve any additional memory allocations either on host or device.
[in]  lhs  The array object on the left hand side 
[in]  rhs  The array object on the right hand side 
lhs
), rhs
Matrix multiply of two arrays.
Performs a matrix multiplication on the two input arrays after performing the operations specified in the options. The operations are done while reading the data from memory. This results in no additional memory being used for temporary buffers.
Batched matrix multiplications are supported. Given below are the supported types of batch operations for any given set of two matrices A and B.
Size of Input Matrix A  Size of Input Matrix B  Output Matrix Size 

\( \{ M, K, 1, 1 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, 1, 1 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, 1, 1 \} \)  \( \{ K, N, b2, b3 \} \)  \( \{ M, N, b2, b3 \} \) 
\( \{ M, K, b2, b3 \} \)  \( \{ K, N, 1, 1 \} \)  \( \{ M, N, b2, b3 \} \) 
where M, K, N are dimensions of the matrix and b2, b3 indicate batch size along the respective dimension.
For the last two entries in the above table, the 2D matrix is broadcasted to match the dimensions of 3D/4D array. This broadcast doesn't involve any additional memory allocations either on host or device.
[in]  lhs  The array object on the left hand side 
[in]  rhs  The array object on the right hand side 
lhs
), transpose(rhs
)