MMALIB User Guide
MMALIB_LINALG_matrixTranspose_ixX_oxX

Introduction

Kernel for computing the transpose of a matrix.

Data Structures

struct  MMALIB_LINALG_matrixTranspose_ixX_oxX_InitArgs
 Structure containing the parameters to initialize the kernel. More...
 

Functions

int32_t MMALIB_LINALG_matrixTranspose_ixX_oxX_getHandleSize (MMALIB_LINALG_matrixTranspose_ixX_oxX_InitArgs *pKerInitArgs)
 This is a query function to calculate the size of internal handle. More...
 
MMALIB_STATUS MMALIB_LINALG_matrixTranspose_ixX_oxX_init (MMALIB_kernelHandle handle, MMALIB_bufParams2D_t *bufParamsIn, MMALIB_bufParams2D_t *bufParamsOut, MMALIB_LINALG_matrixTranspose_ixX_oxX_InitArgs *pKerInitArgs)
 This function should be called before the MMALIB_LINALG_matrixTranspose_ixX_oxX_exec function is called. This function takes care of any one-time operations such as setting up the configuration of required hardware resources such as the MMA accelerator and the streaming engine. The results of these operations are stored in the handle. More...
 
MMALIB_STATUS MMALIB_LINALG_matrixTranspose_ixX_oxX_init_checkParams (MMALIB_kernelHandle handle, const MMALIB_bufParams2D_t *bufParamsIn, const MMALIB_bufParams2D_t *bufParamsOut, const MMALIB_LINALG_matrixTranspose_ixX_oxX_InitArgs *pKerInitArgs)
 This function checks the validity of the parameters passed to MMALIB_LINALG_matrixTranspose_ixX_oxX_init function. This function is called with the same parameters as the MMALIB_LINALG_matrixTranspose_ixX_oxX_init, and this function must be called before the MMALIB_LINALG_matrixTranspose_ixX_oxX_init is called. More...
 
MMALIB_STATUS MMALIB_LINALG_matrixTranspose_ixX_oxX_exec (MMALIB_kernelHandle handle, void *restrict pIn, void *restrict pOut)
 This function is the main kernel compute function. More...
 
MMALIB_STATUS MMALIB_LINALG_matrixTranspose_ixX_oxX_exec_checkParams (MMALIB_kernelHandle handle, const void *restrict pIn, const void *restrict pOut)
 This function checks the validity of the parameters passed to MMALIB_LINALG_matrixTranspose_ixX_oxX_exec function. This function is called with the same parameters as the MMALIB_LINALG_matrixTranspose_ixX_oxX_exec, and this function must be called before the MMALIB_LINALG_matrixTranspose_ixX_oxX_exec is called. More...
 
void MMALIB_LINALG_matrixTranspose_ixX_oxX_perfEst (MMALIB_kernelHandle handle, const MMALIB_bufParams2D_t *bufParamsIn, const MMALIB_bufParams2D_t *bufParamsOut, uint64_t *archCycles, uint64_t *estCycles)
 This is a utility function that gives an estimate of the cycles consumed for the kernel execution. More...
 

Function Documentation

◆ MMALIB_LINALG_matrixTranspose_ixX_oxX_getHandleSize()

int32_t MMALIB_LINALG_matrixTranspose_ixX_oxX_getHandleSize ( MMALIB_LINALG_matrixTranspose_ixX_oxX_InitArgs pKerInitArgs)

This is a query function to calculate the size of internal handle.

Parameters
[in]pKerInitArgs: Pointer to structure holding init parameters
Returns
Size of the buffer in bytes
Remarks
Application is expected to allocate buffer of the requested size and provide it as input to other functions requiring it.

◆ MMALIB_LINALG_matrixTranspose_ixX_oxX_init()

MMALIB_STATUS MMALIB_LINALG_matrixTranspose_ixX_oxX_init ( MMALIB_kernelHandle  handle,
MMALIB_bufParams2D_t bufParamsIn,
MMALIB_bufParams2D_t bufParamsOut,
MMALIB_LINALG_matrixTranspose_ixX_oxX_InitArgs pKerInitArgs 
)

This function should be called before the MMALIB_LINALG_matrixTranspose_ixX_oxX_exec function is called. This function takes care of any one-time operations such as setting up the configuration of required hardware resources such as the MMA accelerator and the streaming engine. The results of these operations are stored in the handle.

Parameters
[in]handle: Active handle to the kernel
[in]bufParamsIn: Pointer to the structure containing dimensional information of input buffer
[out]bufParamsOut: Pointer to the structure containing dimensional information of ouput buffer
[in]pKerInitArgs: Pointer to the structure holding init parameters
Returns
Status value indicating success or failure. Refer to MMALIB_STATUS.
Remarks
Application is expected to provide a valid handle.

◆ MMALIB_LINALG_matrixTranspose_ixX_oxX_init_checkParams()

MMALIB_STATUS MMALIB_LINALG_matrixTranspose_ixX_oxX_init_checkParams ( MMALIB_kernelHandle  handle,
const MMALIB_bufParams2D_t bufParamsIn,
const MMALIB_bufParams2D_t bufParamsOut,
const MMALIB_LINALG_matrixTranspose_ixX_oxX_InitArgs pKerInitArgs 
)

This function checks the validity of the parameters passed to MMALIB_LINALG_matrixTranspose_ixX_oxX_init function. This function is called with the same parameters as the MMALIB_LINALG_matrixTranspose_ixX_oxX_init, and this function must be called before the MMALIB_LINALG_matrixTranspose_ixX_oxX_init is called.

Parameters
[in]handle: Active handle to the kernel
[in]bufParamsIn: Pointer to the structure containing dimensional information of input buffer
[out]bufParamsOut: Pointer to the structure containing dimensional information of output buffer
[in]pKerInitArgs: Pointer to the structure holding init parameters
Returns
Status value indicating success or failure. Refer to MMALIB_STATUS.
Remarks
None

◆ MMALIB_LINALG_matrixTranspose_ixX_oxX_exec()

MMALIB_STATUS MMALIB_LINALG_matrixTranspose_ixX_oxX_exec ( MMALIB_kernelHandle  handle,
void *restrict  pIn,
void *restrict  pOut 
)

This function is the main kernel compute function.

Please refer to details under MMALIB_LINALG_matrixTranspose_ixX_oxX

Parameters
[in]handle: Active handle to the kernel
[in]pIn: Pointer to buffer holding the input data
[out]pOut: Pointer to buffer holding the output data
Returns
Status value indicating success or failure. Refer to MMALIB_STATUS.
Assumptions:
  • None
Performance Considerations:
For best performance,
  • the input and output data buffers are expected to be in L2 memory
  • the buffer pointers are assumed to be 64-byte aligned
Remarks
Before calling this function, application is expected to call MMALIB_LINALG_matrixTranspose_ixX_oxX_init and MMALIB_LINALG_matrixTranspose_ixX_oxX_exec_checkParams functions. This ensures resource configuration and error checks are done only once for several invocations of this function.

◆ MMALIB_LINALG_matrixTranspose_ixX_oxX_exec_checkParams()

MMALIB_STATUS MMALIB_LINALG_matrixTranspose_ixX_oxX_exec_checkParams ( MMALIB_kernelHandle  handle,
const void *restrict  pIn,
const void *restrict  pOut 
)

This function checks the validity of the parameters passed to MMALIB_LINALG_matrixTranspose_ixX_oxX_exec function. This function is called with the same parameters as the MMALIB_LINALG_matrixTranspose_ixX_oxX_exec, and this function must be called before the MMALIB_LINALG_matrixTranspose_ixX_oxX_exec is called.

Parameters
[in]handle: Active handle to the kernel
[in]pIn: Pointer to buffer holding the input data
[out]pOut: Pointer to buffer holding the output matrix
Returns
Status value indicating success or failure. Refer to MMALIB_STATUS.
Remarks
None

◆ MMALIB_LINALG_matrixTranspose_ixX_oxX_perfEst()

void MMALIB_LINALG_matrixTranspose_ixX_oxX_perfEst ( MMALIB_kernelHandle  handle,
const MMALIB_bufParams2D_t bufParamsIn,
const MMALIB_bufParams2D_t bufParamsOut,
uint64_t *  archCycles,
uint64_t *  estCycles 
)

This is a utility function that gives an estimate of the cycles consumed for the kernel execution.

Parameters
[in]handle: Active handle to the kernel
[in]bufParamsIn: Pointer to the structure containing dimensional information of the input buffer
[in]bufParamsOut: Pointer to the structure containing dimensional information of the output buffer
[out]archCycles: Cycles estimated for the compute, startup and teardown
[out]estCycles: Cycles estimated for the compute, startup, teardown and any associated overhead
Remarks
None