DSPLIB User Guide
DSPLIB_qrd_solver

Introduction

Kernel for find the solution of linear equation using Q and R matrices.

This function solves the system of linear equations \(A \times x=b\) for \(x\) using the input matrices \(Q\) and \(R\) produced via QR Decomposition. The following procedure is performed:

  1. Use matrix multiplication to generate \(y\): \(y = Q^{T} \times b\)
  2. Use backward substitution to solve for \(x\): \(x = R^{-1} \times y \)

Data Structures

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

Functions

int32_t DSPLIB_qrd_solver_getHandleSize (DSPLIB_qrdSolverInitArgs *pKerInitArgs)
 This is a query function to calculate the size of internal handle. More...
 
DSPLIB_STATUS DSPLIB_qrd_solver_init (DSPLIB_kernelHandle handle, DSPLIB_bufParams2D_t *bufParamsQ, DSPLIB_bufParams2D_t *bufParamsR, DSPLIB_bufParams1D_t *bufParamsB, DSPLIB_bufParams1D_t *bufParamsY, DSPLIB_bufParams1D_t *bufParamsX, const DSPLIB_qrdSolverInitArgs *pKerInitArgs)
 This function should be called before the DSPLIB_qrd_solver_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_qrd_solver_init_checkParams (DSPLIB_kernelHandle handle, DSPLIB_bufParams2D_t *bufParamsQ, DSPLIB_bufParams2D_t *bufParamsR, DSPLIB_bufParams1D_t *bufParamsB, DSPLIB_bufParams1D_t *bufParamsY, DSPLIB_bufParams1D_t *bufParamsX, const DSPLIB_qrdSolverInitArgs *pKerInitArgs)
 This function checks the validity of the parameters passed to DSPLIB_qrd_solver_init function. This function is called with the same parameters as the DSPLIB_qrd_solver_init, and this function must be called before the DSPLIB_qrd_solver_init is called. More...
 
DSPLIB_STATUS DSPLIB_qrd_solver_exec_checkParams (DSPLIB_kernelHandle handle, void *restrict pQ, void *restrict pR, void *restrict pB, void *restrict pY, void *restrict pX, void *restrict pD, void *restrict pR1)
 This function checks the validity of the parameters passed to DSPLIB_qrd_solver_exec function. This function is called with the same parameters as the DSPLIB_qrd_solver_exec, and this function must be called before the DSPLIB_qrd_solver_exec is called. More...
 
DSPLIB_STATUS DSPLIB_qrd_solver_exec (DSPLIB_kernelHandle handle, void *restrict pQ, void *restrict pR, void *restrict pB, void *restrict pY, void *restrict pX, void *restrict pD, void *restrict pR1)
 This function is the main kernel compute function. More...
 

Function Documentation

◆ DSPLIB_qrd_solver_getHandleSize()

int32_t DSPLIB_qrd_solver_getHandleSize ( DSPLIB_qrdSolverInitArgs 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_qrd_solver.cpp.

◆ DSPLIB_qrd_solver_init()

DSPLIB_STATUS DSPLIB_qrd_solver_init ( DSPLIB_kernelHandle  handle,
DSPLIB_bufParams2D_t bufParamsQ,
DSPLIB_bufParams2D_t bufParamsR,
DSPLIB_bufParams1D_t bufParamsB,
DSPLIB_bufParams1D_t bufParamsY,
DSPLIB_bufParams1D_t bufParamsX,
const DSPLIB_qrdSolverInitArgs pKerInitArgs 
)

This function should be called before the DSPLIB_qrd_solver_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]bufParamsQ: Pointer to the structure containing dimensional information of Q matrix
[in]bufParamsR: Pointer to the structure containing dimensional information of R matrix
[in]bufParamsB: Pointer to the structure containing dimensional information of input vector B
[in]bufParamsY: Pointer to the structure containing dimensional information of temporary vector Y
[out]bufParamsX: Pointer to the structure containing dimensional information of ouput vector X
[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 99 of file DSPLIB_qrd_solver.cpp.

◆ DSPLIB_qrd_solver_init_checkParams()

DSPLIB_STATUS DSPLIB_qrd_solver_init_checkParams ( DSPLIB_kernelHandle  handle,
DSPLIB_bufParams2D_t bufParamsQ,
DSPLIB_bufParams2D_t bufParamsR,
DSPLIB_bufParams1D_t bufParamsB,
DSPLIB_bufParams1D_t bufParamsY,
DSPLIB_bufParams1D_t bufParamsX,
const DSPLIB_qrdSolverInitArgs pKerInitArgs 
)

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

Parameters
[in]handle: Active handle to the kernel
[in]bufParamsQ: Pointer to the structure containing dimensional information of Q matrix
[in]bufParamsR: Pointer to the structure containing dimensional information of R matrix
[in]bufParamsB: Pointer to the structure containing dimensional information of input vector B
[in]bufParamsY: Pointer to the structure containing dimensional information of temporary vector Y
[out]bufParamsX: Pointer to the structure containing dimensional information of ouput vector X
[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_qrd_solver.cpp.

◆ DSPLIB_qrd_solver_exec_checkParams()

DSPLIB_STATUS DSPLIB_qrd_solver_exec_checkParams ( DSPLIB_kernelHandle  handle,
void *restrict  pQ,
void *restrict  pR,
void *restrict  pB,
void *restrict  pY,
void *restrict  pX,
void *restrict  pD,
void *restrict  pR1 
)

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

Parameters
[in]handle: Active handle to the kernel.
[in]pQ: Pointer to the input matrix Q.
[in]pR: Pointer to the input matrix R.
[in]pB: Pointer to the input vector B.
[in]pY: Pointer to the temporary vector Y.
[out]pX: Pointer to the output vector X.
[in]pD: Pointer to the Scratch buffer D.
[in]pR1: Pointer to the Scratch buffer for transposed matrix of R.
Returns
Status value indicating success or failure. Refer to DSPLIB_STATUS.
Remarks
None

Definition at line 75 of file DSPLIB_qrd_solver.cpp.

◆ DSPLIB_qrd_solver_exec()

DSPLIB_STATUS DSPLIB_qrd_solver_exec ( DSPLIB_kernelHandle  handle,
void *restrict  pQ,
void *restrict  pR,
void *restrict  pB,
void *restrict  pY,
void *restrict  pX,
void *restrict  pD,
void *restrict  pR1 
)

This function is the main kernel compute function.

Please refer to details under DSPLIB_qrd_solver_exec

Parameters
[in]handle: Active handle to the kernel.
[in]pQ: Pointer to the input matrix Q.
[in]pR: Pointer to the input matrix R.
[in]pB: Pointer to the input vector B.
[in]pY: Pointer to the temporary vector Y.
[out]pX: Pointer to the output vector X.
[in]pD: Pointer to the Scratch buffe D.
[in]pR1: Pointer to the Scratch buffer for transposed matrix of R.
Memory Requirements
Buffer dimY dimX Comments
pQ M M Input Square Matrix
pR M M Input Square Matrix
pB 1 M Input Vector
pY 1 M Intermediate solution vector
pX 1 M Output Vector
pD 1 M Scratch buffer to store reciprocals of diagonal elements
pR1 M M Scratch buffer to store transpose of R
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_qrd_solver_init and DSPLIB_qrd_solver_exec_checkParams functions. This ensures resource configuration and error checks are done only once for several invocations of this function.

Definition at line 161 of file DSPLIB_qrd_solver.cpp.