DSPLIB User Guide
DSPLIB_svd

Introduction

Kernel for calculating Singular Value Decomposition (SVD).

Data Structures

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

Functions

int32_t DSPLIB_svd_getHandleSize (DSPLIB_svdInitArgs *pKerInitArgs)
 This is a query function to calculate the size of internal handle. More...
 
DSPLIB_STATUS DSPLIB_svd_init_checkParams (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsA, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams2D_t *bufParamsV, const DSPLIB_bufParams1D_t *bufParamsDiag, const DSPLIB_bufParams1D_t *bufParamsSuperDiag, const DSPLIB_svdInitArgs *pKerInitArgs)
 This function checks the validity of the parameters passed to DSPLIB_svd_init function. This function is called with the same parameters as the DSPLIB_svd_init, and this function must be called before the DSPLIB_svd_init is called. More...
 
DSPLIB_STATUS DSPLIB_svd_init (DSPLIB_kernelHandle handle, const DSPLIB_bufParams2D_t *bufParamsA, const DSPLIB_bufParams2D_t *bufParamsU, const DSPLIB_bufParams2D_t *bufParamsV, const DSPLIB_bufParams1D_t *bufParamsDiag, const DSPLIB_bufParams1D_t *bufParamsSuperDiag, const DSPLIB_svdInitArgs *pKerInitArgs)
 This function should be called before the DSPLIB_svd_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 streaming engine and streaming address generator. The results of these operations are stored in the handle. More...
 
DSPLIB_STATUS DSPLIB_svd_exec_checkParams (DSPLIB_kernelHandle handle, const void *restrict pA, const void *restrict pU, const void *restrict pV, const void *restrict pDiag, const void *restrict pSuperDiag, const void *restrict pU1, const void *restrict pV1, const void *restrict pScratch)
 This function checks the validity of the parameters passed to DSPLIB_svd_exec function. This function is called with the same parameters as the DSPLIB_svd_exec, and this function must be called before the DSPLIB_svd_exec is called. More...
 
DSPLIB_STATUS DSPLIB_svd_exec (DSPLIB_kernelHandle handle, void *restrict pA, void *restrict pU, void *restrict pV, void *restrict pDiag, void *restrict pSuperDiag, void *restrict pU1, void *restrict pV1, void *restrict pScratch)
 This function is the main kernel compute function. More...
 

Function Documentation

◆ DSPLIB_svd_getHandleSize()

int32_t DSPLIB_svd_getHandleSize ( DSPLIB_svdInitArgs 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.

Definition at line 25 of file DSPLIB_svd.cpp.

◆ DSPLIB_svd_init_checkParams()

DSPLIB_STATUS DSPLIB_svd_init_checkParams ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsA,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams2D_t bufParamsV,
const DSPLIB_bufParams1D_t bufParamsDiag,
const DSPLIB_bufParams1D_t bufParamsSuperDiag,
const DSPLIB_svdInitArgs pKerInitArgs 
)

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

Parameters
[in]handle: Active handle to the kernel
[in]bufParamsA: Pointer to the structure containing dimensional information of input buffer A
[out]bufParamsU: Pointer to the structure containing dimensional information of output buffer U
[out]bufParamsV: Pointer to the structure containing dimensional information of output buffer V
[out]bufParamsDiag: Pointer to the structure containing dimensional information of output buffer Diag
[out]bufParamsSuperDiag: Pointer to the structure containing dimensional information of output buffer SuperDiag
[in]pKerInitArgs: Pointer to the structure holding init parameters
Returns
Status value indicating success or failure. Refer to DSPLIB_STATUS.
Remarks
None

Definition at line 34 of file DSPLIB_svd.cpp.

◆ DSPLIB_svd_init()

DSPLIB_STATUS DSPLIB_svd_init ( DSPLIB_kernelHandle  handle,
const DSPLIB_bufParams2D_t bufParamsA,
const DSPLIB_bufParams2D_t bufParamsU,
const DSPLIB_bufParams2D_t bufParamsV,
const DSPLIB_bufParams1D_t bufParamsDiag,
const DSPLIB_bufParams1D_t bufParamsSuperDiag,
const DSPLIB_svdInitArgs pKerInitArgs 
)

This function should be called before the DSPLIB_svd_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 streaming engine and streaming address generator. The results of these operations are stored in the handle.

Parameters
[in]handle: Active handle to the kernel
[in]bufParamsA: Pointer to the structure containing dimensional information of input buffer A
[out]bufParamsU: Pointer to the structure containing dimensional information of output buffer U
[out]bufParamsV: Pointer to the structure containing dimensional information of output buffer V
[out]bufParamsDiag: Pointer to the structure containing dimensional information of output buffer Diag
[out]bufParamsSuperDiag: Pointer to the structure containing dimensional information of output buffer SuperDiag
[in]pKerInitArgs: Pointer to the structure holding init parameters
Returns
Status value indicating success or failure. Refer to DSPLIB_STATUS.
Remarks
Application is expected to provide a valid handle.

Definition at line 104 of file DSPLIB_svd.cpp.

◆ DSPLIB_svd_exec_checkParams()

DSPLIB_STATUS DSPLIB_svd_exec_checkParams ( DSPLIB_kernelHandle  handle,
const void *restrict  pA,
const void *restrict  pU,
const void *restrict  pV,
const void *restrict  pDiag,
const void *restrict  pSuperDiag,
const void *restrict  pU1,
const void *restrict  pV1,
const void *restrict  pScratch 
)

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

Parameters
[in]handle: Active handle to the kernel
[in]pA: Pointer to the input buffer pA
[out]pU: Pointer to the output buffer pU
[out]pV: Pointer to the output buffer pV
[out]pDiag: Pointer to the output buffer pDiag
[out]pSuperDiag: Pointer to the output buffer pSuperDiag
[in]pU1: Pointer to the intermediate transpose buffer pU1
[in]pV1: Pointer to the intermediate transpose buffer pV1
[out]pScratch: Pointer to the intermediate scratch buffer pScratch
Returns
Status value indicating success or failure. Refer to DSPLIB_STATUS.
Remarks
None

Definition at line 78 of file DSPLIB_svd.cpp.

◆ DSPLIB_svd_exec()

DSPLIB_STATUS DSPLIB_svd_exec ( DSPLIB_kernelHandle  handle,
void *restrict  pA,
void *restrict  pU,
void *restrict  pV,
void *restrict  pDiag,
void *restrict  pSuperDiag,
void *restrict  pU1,
void *restrict  pV1,
void *restrict  pScratch 
)

This function is the main kernel compute function.

Please refer to details under DSPLIB_svd_exec

Parameters
[in]handle: Active handle to the kernel
[in]pA: Pointer to the input buffer pA
[out]pU: Pointer to the output buffer pU
[out]pV: Pointer to the output buffer pV
[out]pDiag: Pointer to the output buffer pDiag
[out]pSuperDiag: Pointer to the output buffer pSuperDiag
[in]pU1: Pointer to the intermediate transpose buffer pU1
[in]pV1: Pointer to the intermediate transpose buffer pV1
[out]pScratch: Pointer to the intermediate scratch buffer pScratch
Memory Requirements
Buffer dimY dimX Comments
pA M N Input Matrix
pU max(M,N) max(M,N) Output Matrix
pV N N Output Matrix
pDiag 1 min(M,N) Output Vector
pSuperDiag 1 min(M,N) Intermediate Vector
pU1 max(M,N) max(M,N) Scratch buffer to store transpose of U
pV1 N N Scratch buffer to store transpose of V
pScratch 4 max(M,N) Scratch buffer to store coefficient calculations, sorting singular values etc.
Returns
Status value indicating success or failure. Refer to DSPLIB_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
  • Ensure that the starting point of adjacent rows in a 2-D matrix are allocated from different banks in L2 memory with the help of memory padding.
Remarks
Before calling this function, application is expected to call DSPLIB_svd_init and DSPLIB_svd_exec_checkParams functions. This ensures resource configuration and error checks are done only once for several invocations of this function.

Definition at line 164 of file DSPLIB_svd.cpp.