HiCMA
Hierarchical Computations on Manycore Architectures
zgemm.c File Reference
#include "morse.h"
#include "control/common.h"
#include "control/hicma_common.h"

Go to the source code of this file.

Functions

int HICMA_zgemm_Tile (MORSE_enum transA, MORSE_enum transB, double alpha, MORSE_desc_t *AUV, MORSE_desc_t *Ark, MORSE_desc_t *BUV, MORSE_desc_t *Brk, double beta, MORSE_desc_t *CUV, MORSE_desc_t *Crk, int rk, int maxrk, double acc)
 
int HICMA_zgemm_Tile_Async (MORSE_enum transA, MORSE_enum transB, double alpha, MORSE_desc_t *AUV, MORSE_desc_t *Ark, MORSE_desc_t *BUV, MORSE_desc_t *Brk, double beta, MORSE_desc_t *CUV, MORSE_desc_t *Crk, int rk, int maxrk, double acc, MORSE_sequence_t *sequence, MORSE_request_t *request)
 

Detailed Description

This file contains top-level functions for matrix-matrix multiplication.

HiCMA is a software package provided by King Abdullah University of Science and Technology (KAUST)

Version
0.1.1
Author
Ali Charara
Kadir Akbudak
Date
2018-11-08

Definition in file zgemm.c.

Function Documentation

◆ HICMA_zgemm_Tile()

int HICMA_zgemm_Tile ( MORSE_enum  transA,
MORSE_enum  transB,
double  alpha,
MORSE_desc_t *  AUV,
MORSE_desc_t *  Ark,
MORSE_desc_t *  BUV,
MORSE_desc_t *  Brk,
double  beta,
MORSE_desc_t *  CUV,
MORSE_desc_t *  Crk,
int  rk,
int  maxrk,
double  acc 
)

HICMA_zgemm_Tile - Performs multiplication of tile-low-rank (TLR) matrices in the form of

\[ C = \alpha [op( A )\times op( B )] + \beta C \]

, where op( X ) is one of

op( X ) = X or op( X ) = X' or op( X ) = conjg( X' )

alpha and beta are scalars, and A, B and C which are all in TLR format. Operates on matrices stored by tiles. All matrices are passed through descriptors. All dimensions are taken from the descriptors.

Parameters
[in]transASpecifies whether the matrix A is transposed or not transposed: = MorseNoTrans: A is not transposed; = MorseTrans: A is transposed;
[in]transBSpecifies whether the matrix B is transposed or not transposed: = MorseNoTrans: B is not transposed; = MorseTrans: B is transposed;
[in]alphaalpha specifies the scalar alpha
[in]AUVAUV is a descriptor for the tile low-rank matrix A
[in]ArkArk is a descriptor containing rank of each tile of A
[in]BUVBUV is a descriptor for the tile low-rank matrix B
[in]BrkBrk is a descriptor containing rank of each tile of B
[in]betabeta specifies the scalar beta
[out]CUVCUV is a descriptor for the tile low-rank matrix C. On exit, it is over-written by the result TLR matrix.
[out]CrkCrk is a descriptor containing rank of each tile of C. On exit, it is over-written by the new rank of each tile.
Returns
Return values
MORSE_SUCCESSsuccessful exit

Definition at line 109 of file zgemm.c.

◆ HICMA_zgemm_Tile_Async()

int HICMA_zgemm_Tile_Async ( MORSE_enum  transA,
MORSE_enum  transB,
double  alpha,
MORSE_desc_t *  AUV,
MORSE_desc_t *  Ark,
MORSE_desc_t *  BUV,
MORSE_desc_t *  Brk,
double  beta,
MORSE_desc_t *  CUV,
MORSE_desc_t *  Crk,
int  rk,
int  maxrk,
double  acc,
MORSE_sequence_t *  sequence,
MORSE_request_t *  request 
)

HICMA_zgemm_Tile_Async - Performs matrix multiplication. Non-blocking equivalent of HICMA_zgemm_Tile(). May return before the computation is finished. Allows for pipelining of operations at runtime.

Parameters
[in]sequenceIdentifies the sequence of function calls that this call belongs to (for completion checks and exception handling purposes).
[out]requestIdentifies this function call (for exception handling purposes).

Definition at line 176 of file zgemm.c.